במדריך הזה מוסבר איך להשתמש בקידומות להכללה ולהחרגה כדי לקבוע אילו קבצים יועברו.
סקירה כללית
Storage Transfer Service תומך בסינון נתונים ממקורות של Amazon S3, Microsoft Azure Blob Storage ו-Cloud Storage באמצעות קידומות. קידומת היא מחרוזת של תווים בתחילת נתיב שמציינת קבוצה של אובייקטים.
יש שלוש דרכים להשתמש במסנני קידומות:
כולל קידומות: רק אובייקטים שתואמים לקידומות שצוינו מועברים.
החרגת קידומות: אובייקטים שתואמים לקידומות שצוינו מושמטים מההעברה.
גם וגם: אתם יכולים להשתמש בקידומות של החרגה ושל הכללה בו-זמנית כדי לקבל שליטה מדויקת יותר. כשמשתמשים בהם יחד, כל קידומת של החרגה חייבת להתחיל באחת מהקידומות של הכללה שצוינו.
אם לא מציינים קידומות, כל האובייקטים בקטגוריית המקור מועברים.
אפשר לשלב מסנני קידומת עם תבניות glob, מסננים של מועד שינוי אחרון ומסננים של סוג אחסון ב-S3.
כללים
הכללים הבאים חלים על קידומות:
ללא קווים נטויים בתחילת המחרוזת: אל תכללו קו נטוי בתחילת הקידומת. בנתיב
s3://my-bucket/logs/2025/requests.gz, התחילית הנכונה היאlogs/2025/requests.gz.התאמות חלקיות: התאמה חלקית היא הדרך שבה קידומות פועלות. לדוגמה, הקידומת
pathתואמת ל-path_1/ול-path_2/.ללא תווים כלליים לחיפוש: לא אפשרי.
ביחס לתיקיית המקור: אם מקור ההעברה כולל נתיב או תיקייה, הקידומות הן ביחס לנתיב או לתיקייה האלה. פרטים נוספים זמינים במאמר בנושא אינטראקציה עם נתיב או תיקייה של מקור.
קידומות include נפרדות: כל קידומת include צריכה להגדיר חלק ייחודי במרחב השמות של האובייקט. אי אפשר להשתמש בתחילית include שכבר נכללת בתחילית include אחרת. לדוגמה, אי אפשר לציין גם
data/וגםdata/reports/כקידומות להכללה.החרגת תלות בקידומת: כשמשתמשים בקידומות של הכללה והחרגה ביחד, כל קידומת של החרגה חייבת להתחיל באחת מקידומות ההכללה שצוינו. לדוגמה, אם
pathהיא קידומת של הכללה, קידומות ההחרגה התקפות יכולות להיותpath/bאוpathway. הכלל הזה לא חל אם אתם משתמשים רק בקידומות להחרגה.מקסימום 1,000 קידומות: אפשר להשתמש ב-1,000 קידומות לכל היותר במשימת העברה אחת. אפשר לפצל העברה לכמה משימות אם נדרשים קידומות נוספות.
מידע כללי נוסף על תחיליות זמין במאמר הצגת רשימה של מפתחות באופן היררכי באמצעות תחילית ותו מפריד במסמכי Amazon S3 או במאמר שיטה להצגת רשימה של אובייקטים ב-Cloud Storage.
אינטראקציה עם סוגים אחרים של מסננים
כשמשתמשים בכמה מסננים, Storage Transfer Service מחיל אותם בסדר הבא:
Include prefixes: מצמצם את האובייקטים שצריך להביא בחשבון.
תנאי אובייקט (תבנית glob, זמן השינוי האחרון וסוג האחסון ב-S3): מסננים את האובייקטים שתואמים לקידומת של הכללה. כדי שאובייקט ייכלל בהעברה, הוא צריך לעמוד בכל התנאים שצוינו לגבי האובייקט.
החרגת קידומות: הסרת אובייקטים מהתוצאה.
מידע נוסף על סינון באמצעות דפוסי glob, מועד שינוי אחרון וסוג אחסון ב-S3
אינטראקציה עם נתיב או תיקייה של מקור
מסנני הכללה והחרגה הם יחסיים לכל נתיב או תיקייה שאתם מציינים למקור.
לדוגמה, אם המקור הוא gs://bucketA/alpha, ואתם רוצים לציין מסנן ל-gs://bucketA/alpha/beta:
תקין
- נתיב המקור:
gs://bucketA/alpha - קידומת החרגה:
beta/ - תוצאה:
gs://bucketA/alpha/betaנכלל בהחרגה בצורה נכונה
שגוי
- נתיב המקור:
gs://bucketA/alpha - קידומת החרגה:
alpha/beta/ - תוצאה: המסנן עבור
gs://bucketA/alpha/alpha/betaמוגדר בצורה שגויה
ציון תחיליות
מסוף Cloud
כדי לציין קידומות להכללה ולשלילה באמצעות מסוף Google Cloud, מזינים את הערכים כשיוצרים העברה חדשה או כשמעדכנים העברה קיימת.
CLI של gcloud
כדי לציין קידומות להכללה ולמעט באמצעות gcloud CLI, מעבירים את הדגלים --include-prefixes ו---exclude-prefixes לפקודה gcloud transfer jobs create או לפקודה gcloud transfer jobs update:
gcloud transfer jobs create SOURCE DESTINATION \
--include-prefixes="path_1/,path_2/" --exclude-prefixes="path_1/subpath_2/"
אם מזינים כמה קידומות, צריך להפריד ביניהן באמצעות פסיקים, בלי להוסיף רווחים אחרי הפסיקים.
לדוגמה, --include-prefixes="foo,bar".
REST
כדי לציין קידומות שרוצים לכלול או להחריג באמצעות API בארכיטקטורת REST, משתמשים בשדות includePrefixes[] ו-excludePrefixes[]:
{
"description": "Transfer with prefixes",
"status": "ENABLED",
"projectId": "PROJECT_ID",
"schedule": {
"scheduleStartDate": {
"day": 1,
"month": 1,
"year": 2015
},
"startTimeOfDay": {
"hours": 1,
"minutes": 1
}
},
"transferSpec": {
"gcsDataSource": {
"bucketName": "SOURCE_BUCKET"
},
"gcsDataSink": {
"bucketName": "DESTINATION_BUCKET"
},
"transferOptions": {
"deleteObjectsFromSourceAfterTransfer": true
},
"objectConditions": {
"includePrefixes": [
"path_1/",
"path_2/"
],
"excludePrefixes": [
"path_1/subpath_2/object_5"
]
}
}
}
מידע נוסף זמין במאמר בנושא ObjectConditions.
דוגמאות לאובייקטים ולנתיבים
בדוגמאות הבאות נעשה שימוש ברשימת האובייקטים לדוגמה הזו:
xx://bucketname/object_1
xx://bucketname/object_2
xx://bucketname/path_1/object_3
xx://bucketname/path_1/subpath_1/object_4
xx://bucketname/path_1/subpath_2/object_5
xx://bucketname/path_2/object_6
xx://bucketname/path_2/subpath_3/object_7
xx://bucketname/path_2/subpath_4/object_8
שימוש בקידומות
כדי להעביר רק אובייקטים מתחת ל-path_1/, משתמשים בקידומת הבאה:
path_1/
זה כולל אובייקטים ב-path_1/. האובייקטים הבאים נכללים בהעברה:
xx://bucketname/object_1xx://bucketname/object_2xx://bucketname/path_1/object_3 xx://bucketname/path_1/subpath_1/object_4 xx://bucketname/path_1/subpath_2/object_5xx://bucketname/path_2/object_6xx://bucketname/path_2/subpath_3/object_7xx://bucketname/path_2/subpath_4/object_8
אפשר לציין כמה נתיבים שרוצים לכלול. לדוגמה, אפשר להעביר את הפרטים הבאים:
path_1/subpath_2/ path_1/subpath_3/
במקרה הזה, ההעברה כוללת את האובייקטים הבאים:
xx://bucketname/object_1xx://bucketname/object_2xx://bucketname/path_1/object_3xx://bucketname/path_1/subpath_1/object_4xx://bucketname/path_1/subpath_2/object_5xx://bucketname/path_2/object_6xx://bucketname/path_2/subpath_3/object_7xx://bucketname/path_2/subpath_4/object_8
יש תמיכה בהתאמות חלקיות. לדוגמה:
path
האובייקטים הבאים מועברים:
xx://bucketname/object_1xx://bucketname/object_2xx://bucketname/path_1/object_3 xx://bucketname/path_1/subpath_1/object_4 xx://bucketname/path_1/subpath_2/object_5 xx://bucketname/path_2/object_6 xx://bucketname/path_2/subpath_3/object_7 xx://bucketname/path_2/subpath_4/object_8
כשמשתמשים בתחיליות של נתיבים שרוצים לכלול, נתיבים שלא נכללים באופן ספציפי לא מועברים לקטגוריית היעד ב-Cloud Storage.
החרגת תחיליות
כשמשתמשים בקידומות להחרגה כשיוצרים העברה, Storage Transfer Service מתעלם מהנתיבים שמופיעים ברשימה במהלך ההעברה.
כדי להחריג אובייקטים ב-path_1/, מעבירים את הקידומת הבאה:
path_1/
הפעולה הזו לא כוללת אובייקטים ב-path_1/. במקרה כזה, האובייקטים הבאים נכללים בהעברה:
xx://bucketname/object_1 xx://bucketname/object_2xx://bucketname/path_1/object_3xx://bucketname/path_1/subpath_1/object_4xx://bucketname/path_1/subpath_2/object_5xx://bucketname/path_2/object_6 xx://bucketname/path_2/subpath_3/object_7 xx://bucketname/path_2/subpath_4/object_8
אפשר לציין כמה נתיבים להחרגה. לדוגמה, אפשר להעביר את הפרטים הבאים:
path_1/subpath_2/
path_2/subpath_3/
במקרה הזה, ההעברה כוללת את האובייקטים הבאים:
xx://bucketname/object_1 xx://bucketname/object_2 xx://bucketname/path_1/object_3 xx://bucketname/path_1/subpath_1/object_4xx://bucketname/path_1/subpath_2/object_5xx://bucketname/path_2/object_6xx://bucketname/path_2/subpath_3/object_7xx://bucketname/path_2/subpath_4/object_8
הכללה והחרגה של נתיבים בו-זמנית
אפשר להחיל קידומת להחרגה וקידומת להכללה ביחד. במקרה כזה, הקידומת להחרגה מגבילה את מה שהקידומת להכללה כוללת בהעברה.
כשמציינים את שני סוגי הקידומות, כל קידומת של החרגה צריכה להתחיל בנתיב שצוין בקידומת של הכללה.
לדוגמה, כדי לכלול אובייקטים ב-path_1/ ולהחריג אובייקטים ב-subpath_1/, מעבירים את הפקודה הבאה:
include: path_1/
exclude: path_1/subpath_1/
במקרה הזה, ההעברה כוללת את האובייקטים הבאים:
xx://bucketname/object_1xx://bucketname/object_2xx://bucketname/path_1/object_3xx://bucketname/path_1/subpath_1/object_4xx://bucketname/path_1/subpath_2/object_5xx://bucketname/path_2/object_6xx://bucketname/path_2/subpath_3/object_7xx://bucketname/path_2/subpath_4/object_8
כדי לכלול את כל האובייקטים ב-path_1/ וב-path_2/, למעט פריטים ב-path_1/subpath_1/ או ב-path_2/subpath_3/, צריך להעביר את הפקודה הבאה:
include: path_1/
path_2/
exclude: path_1/subpath_1/
path_2/subpath_3/
במקרה הזה, ההעברה כוללת את האובייקטים הבאים:
xx://bucketname/object_1xx://bucketname/object_2xx://bucketname/path_1/object_3xx://bucketname/path_1/subpath_1/object_4xx://bucketname/path_1/subpath_2/object_5 xx://bucketname/path_2/object_6xx://bucketname/path_2/subpath_3/object_7xx://bucketname/path_2/subpath_4/object_8
טעויות נפוצות שכדאי להימנע מהן
ריכזנו כאן דוגמאות להגדרות שגויות והסבר איך לתקן אותן.
כולל נתיב שמשמש בתחילית אחרת של include
קידומת include לא יכולה להיות ספריית משנה של קידומת include אחרת.
שגוי: הנתיב עם הקידומת path_1/subpath_1 כבר מכוסה על ידי path_1/.
include: path_1/
path_1/subpath_1
תיקון: כדי לפתור את הבעיה, צריך להסיר את הקידומת המיותרת והספציפית יותר.
include: path_1/
הקידומת של ההחרגה לא תואמת לקידומת של ההכללה
כשמשתמשים בתחילית של החרגה, היא חייבת להתחיל באחת מהתחיליות של הכללה.
לא נכון: הקידומת subpath_1 לא מתחילה ב-path_1/ או ב-path_2/.
include: path_1/
path_2/
exclude: subpath_1
תקין: מוודאים שהתחילית של ההחרגה מכילה את הנתיב המלא מהתחילית של ההכללה.
include: path_1/
path_2/
exclude: path_1/subpath_1/