במדריך הזה מוסבר איך להשתמש בקידומות להכללה ולהחרגה כדי לקבוע אילו קבצים יועברו.
סקירה כללית
Storage Transfer Service תומך בסינון נתונים ממקורות של Amazon S3, Microsoft Azure Blob Storage ו-Cloud Storage באמצעות קידומות. קידומת היא מחרוזת של תווים בתחילת נתיב שמציינת קבוצה של אובייקטים.
יש שלוש דרכים להשתמש במסנני קידומות:
כולל קידומות: רק אובייקטים שתואמים לקידומות שצוינו מועברים.
החרגת קידומות: אובייקטים שתואמים לקידומות שצוינו מושמטים מההעברה.
גם וגם: אתם יכולים להשתמש בקידומות של החרגה ושל הכללה בו-זמנית כדי לקבל שליטה מדויקת יותר. כשמשתמשים בהם יחד, כל קידומת של החרגה חייבת להתחיל באחת מהקידומות של הכללה שצוינו.
אם לא מציינים קידומות, כל האובייקטים בקטגוריית המקור מועברים.
כללים
הכללים הבאים חלים על קידומות:
ללא קווים נטויים בתחילת המחרוזת: אל תכללו קו נטוי בתחילת הקידומת. בנתיב
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 מחיל אותם בסדר הבא:
הוספת קידומות: מצמצמת את האובייקטים שצריך לקחת בחשבון.
תנאי אובייקט (מועד השינוי האחרון): מסנן את האובייקטים שתואמים לקידומת ההכללה. כדי שאובייקט ייכלל בתוצאה, הוא צריך להתאים למסנן של מועד השינוי האחרון.
החרגת קידומות: הסרת אובייקטים מהתוצאה.
אינטראקציה עם נתיב או תיקייה של מקור
מסנני הכללה והחרגה הם יחסי לכל נתיב או תיקייה שאתם מציינים למקור.
לדוגמה, אם המקור שלכם הוא 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מוגדר בצורה שגויה
ציון תחיליות
מסוף Google 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_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_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/