משימות של Storage Transfer Service תומכות במחרוזות חיפוש עם תווים כלליים לחיפוש כמו * ו-? כדי להתאים לשמות קבצים או לנתיבים. מחרוזות החיפוש האלה נקראות תבניות glob.
אפשר להשתמש בתבניות glob כדי לציין אילו אובייקטים במקור ייכללו בהעברה. כך אפשר לקבל שליטה פרטנית יותר מאשר סינון לפי קידומת בלבד.
אפשר להשתמש בסינון באמצעות תבניות glob בהעברות מ-AWS S3 ומ-Azure.
תחביר Glob
תבנית glob משתמשת בתחביר הבא כדי להתאים נתיבי אובייקטים:
| תחביר | תיאור |
|---|---|
? |
מתאים לכל תו יחיד, למעט /. |
* |
התאמה לאפס תווים או יותר, לא כולל /. |
** |
התאמה לאפס תווים או יותר, כולל /. |
[abc]
|
התאמה לאחד מהתווים בדיוק (לדוגמה, a, b או c). |
[a-z]
|
התאמה לתו אחד בדיוק בטווח כולל (לדוגמה, a עד z). |
[!abc] או [^abc]
|
התאמה לתו אחד בדיוק שלא יכול להיות a, b או c. |
{abc,xyz}
|
התאמה לאחת מהמחרוזות (לדוגמה, abc או xyz). לא יכולה להכיל קווים נטויים קדימה (/) או כוכביות כפולות (**). |
\?
|
התאמה לתו המילולי שאחרי הקו הנטוי ההפוך
(לדוגמה, \? תואם ל-? מילולי). |
דוגמאות לתבניות
התאמה לכל הקבצים .log מהספריות december:
logs_by_year/**/december/*.log
העברה של כל הקבצים בספרייה data_analytics/ שלא מתחילים ב-. (נקודה) או ב-_ (קו תחתון):
data_analytics/[!._]*
כדי להפוך את הדוגמה הקודמת לרקורסיבית:
data_analytics/**/[!._]*
העברה של כל קובצי ה-PDF משתי ספריות ספציפיות בלבד:
quarterly_reports/2025/{q1-final,q4-final}/*.pdf
ציון תבנית glob
אפשר לציין תבנית glob כשיוצרים או מעדכנים משימת העברה.
CLI של gcloud
כדי לסנן לפי תבנית glob באמצעות gcloud CLI, מעבירים את הדגל --match-glob לפקודה gcloud transfer jobs create או gcloud transfer jobs update:
gcloud transfer jobs create SOURCE DESTINATION \
--match-glob="GLOB_PATTERN"
לדוגמה:
הפקודה הבאה יוצרת עבודה שמעבירה רק קבצים מסוג .log מהספריות december:
gcloud transfer jobs create s3://my-source-bucket gs://my-sink-bucket \
--match-glob="logs_by_year/**/december/*.log"
REST
כדי לסנן לפי תבנית glob באמצעות ה-API ל-REST, צריך לציין את השדה matchGlob באובייקט objectConditions של transferSpec.
{
"description": "Transfer December logs from all years",
"status": "ENABLED",
"projectId": "PROJECT_ID",
"transferSpec": {
"awsS3DataSource": {
"bucketName": "AWS_SOURCE_NAME",
"awsAccessKey": {
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}
},
"gcsDataSink": {
"bucketName": "DESTINATION_BUCKET"
},
"objectConditions": {
"matchGlob": "logs_by_year/**/december/*.log"
}
}
}
מידע נוסף זמין במאמר בנושא ObjectConditions.
מסוף Google Cloud
אי אפשר לסנן לפי תבנית glob במסוף Google Cloud.
אינטראקציה עם מסננים אחרים
כשמשתמשים במסנן של תבנית glob עם מסננים של קידומות או מסננים של מועד שינוי אחרון, Storage Transfer Service מחיל את המסננים בסדר הבא:
Include prefixes: מצמצם את האובייקטים שצריך להביא בחשבון.
תנאי אובייקט (דפוס glob ומועד השינוי האחרון): מסננים את האובייקטים שתואמים לקידומת ההכללה. כדי שאובייקט ייכלל בתוצאה, הוא צריך להתאים גם למסנן ה-glob וגם למסנן של מועד השינוי האחרון.
החרגת קידומות: הסרת אובייקטים מהתוצאה.
מידע נוסף על סינון לפי קידומת מידע נוסף על סינון לפי מועד השינוי האחרון
הכללת קידומות
תבנית ה-glob חלה רק על אובייקטים שתואמים לקידומת אחת לפחות של הכללה.
Storage Transfer Service מחזיר שגיאה אם תבנית ה-glob סותרת את כל תבניות הקידומת של ההכללה.
דוגמה: שילוב תקין
include_prefix:["foo/"]match_glob:"foo/bar/**"תוצאה: תקף. השירות קודם מפרט את האובייקטים שמתחת ל-
foo/ואז מחיל את תבנית ה-glob על הרשימה הזו.
דוגמה: שילוב תקין
include_prefix:["logs/2024/", "logs/2025/"]match_glob:"**/*.json"תוצאה: תקף. השירות מפרט את כל האובייקטים בספריות
2024ו-2025ואז מעביר רק את הקבצים שמסתיימים ב-.json.
דוגמה: סתירה
include_prefix:["foo/"]match_glob:"bar/**"תוצאה: שגיאה. התבנית
match_globלא יכולה להתאים לאף אחד מהאובייקטים שנבחרו על ידיinclude_prefix.
החרגת תחיליות
מסנן החרגת הקידומת מופעל אחרי מסנן הכללת הקידומת ומסנן דפוס ה-glob.
לא מתבצעת בדיקת סתירות. כל אובייקט שתואם לקידומת החרגה מוסר מרשימת ההעברה, גם אם הוא תואם לתבנית ה-glob.
דוגמה
include_prefix:["logs/"]match_glob: "**/*.log"exclude_prefix:["logs/temp/"]תוצאה: השירות מעביר את כל האובייקטים ב-
logs/שמסתיימים ב-.log, חוץ מאלה שבספרייהlogs/temp/.