Storage 移轉服務工作支援使用萬用字元 (例如 * 和 ?) 的搜尋字串,以比對檔案名稱或路徑。這些搜尋字串稱為 glob 模式。
您可以使用 glob 模式指定要納入移轉作業的來源物件。與單純依前置字元篩選相比,這種做法可提供更精細的控制選項。
從 AWS S3 和 Azure 移轉時,系統支援使用 glob 模式進行篩選。
Glob 語法
glob 模式會使用下列語法比對物件路徑:
| 語法 | 說明 |
|---|---|
? |
比對任何單一字元,但 / 除外。 |
* |
比對零個以上的字元,但不包括 /。 |
** |
比對零個以上的字元,包括 /。 |
[abc]
|
比對其中一個字元 (例如 a、b 或 c)。 |
[a-z]
|
比對包含範圍內的一個字元 (例如 a 到 z)。 |
[!abc] 或 [^abc]
|
比對一個字元,但該字元不得為 a、b 或 c。 |
{abc,xyz}
|
比對其中一個字串 (例如 abc 或 xyz)。不得包含正斜線 (/) 或雙星號 (**)。 |
\?
|
比對反斜線後方的常值字元 (例如,\? 會比對常值 ?)。 |
範例格式
比對 december 目錄中的所有 .log 檔案:
logs_by_year/**/december/*.log
轉移 data_analytics/ 目錄中開頭不是 . (點) 或 _ (底線) 的所有檔案:
data_analytics/[!._]*
如要讓先前的範例成為遞迴範例:
data_analytics/**/[!._]*
從兩個特定目錄轉移所有 PDF 檔案:
quarterly_reports/2025/{q1-final,q4-final}/*.pdf
指定 glob 模式
建立或更新轉移工作時,可以指定 glob 模式。
gcloud CLI
如要使用 gcloud CLI 依 glob 模式篩選,請將 --match-glob 旗標傳遞至 gcloud transfer jobs create 或 gcloud transfer jobs update 指令:
gcloud transfer jobs create SOURCE DESTINATION \
--match-glob="GLOB_PATTERN"
範例:
下列指令會建立工作,只從 december 目錄轉移 .log 檔案:
gcloud transfer jobs create s3://my-source-bucket gs://my-sink-bucket \
--match-glob="logs_by_year/**/december/*.log"
REST
如要使用 REST API 依 glob 模式篩選,請在 transferSpec 的 objectConditions 中指定 matchGlob 欄位。
{
"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 控制台
Google Cloud 控制台不支援依 glob 模式篩選。
與其他篩選器互動
搭配前置字元篩選器或上次修改時間篩選器使用 glob 模式篩選器時,Storage 移轉服務會依下列順序套用篩選器:
加入前置字串:縮小要考慮的物件範圍。
物件條件 (glob 模式和上次修改時間):篩選符合 include 前置字串的物件。物件必須同時符合 glob 篩選器和上次修改時間篩選器,才會納入結果。
排除前置字串:從結果中移除物件。
納入前置字串
glob 模式只會套用至符合至少一個 include 前置字串的物件。
如果 glob 模式與所有包含前置字串模式相衝突,Storage 移轉服務會傳回錯誤。
範例:有效組合
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/目錄中的物件除外。