依修改時間篩選來源物件

您可以根據物件的上次修改時間,篩選要轉移的物件。 這樣一來,您就能只轉移修改過的物件:

  • 特定日期和時間之前或之後
  • 在轉移作業開始後經過指定時間

這項功能可用於設定增量轉移,或略過時間範圍外的物件。

從網址清單以外的所有來源轉移檔案時,系統都支援依上次修改時間篩選。

依時間篩選

篩選條件是使用 last modified sincelast modified beforeminimum time elapsed since modifiedmaximum time elapsed since modified 值定義。您可以單獨使用篩選器,也可以合併使用來建立時間範圍。

欄位 說明
上次修改時間晚於 包括上次修改時間這個時間戳記之後的轉移物件。
上次修改時間早於 包括上次修改時間早於這個時間戳記的轉移物件。
自修改後經過的最短時間 包括轉移作業中上次修改時間至少是這段時間前的物件。舉例來說,這個篩選器可用於只納入至少一個月前修改的物件。沒有「上次修改時間」的物件也會一併轉移。
自修改後經過的時間上限 包括轉移作業中最後修改時間不超過這段時間的物件。舉例來說,這個篩選器可用於只納入最近 7 天內修改的物件。沒有「上次修改時間」的物件也會一併轉移。

指定時間篩選條件

建立或更新轉移作業時,您可以指定修改時間篩選器。

時間戳記必須採用世界標準時間,並以 RFC 3339 字串格式表示 (例如 2025-10-31T10:00:00Z)。時間長度則採用絕對時間長度格式 (例如 1 個月為 1m;1 小時 30 分鐘為 1h30m)。

Google Cloud 控制台

如要在 Google Cloud 控制台中指定時間篩選條件,請按照下列步驟操作:

  1. 前往「建立移轉工作」或「編輯移轉工作」頁面。
  2. 在「選擇要轉移的資料」部分,選取「日期和時間」做為「篩選器類型」
  3. 輸入「絕對時間範圍」的日期和時間,或是「相對時間範圍」的持續時間。可以同時指定多個篩選器。

gcloud CLI

如要使用 gcloud CLI 依修改時間篩選,請將時間篩選旗標傳遞至 gcloud transfer jobs creategcloud transfer jobs update 指令:

gcloud transfer jobs create SOURCE DESTINATION \
  --include-modified-before-absolute="DATETIME" \
  --include-modified-after-absolute="DATETIME" \
  --include-modified-before-relative="DURATION" \
  --include-modified-after-relative="DURATION"

其中:

  • --include-modified-before-absolute 包含上次修改時間早於絕對日期/時間的物件。舉例來說,指定 2020-01-01 會將上次修改日期在 2020 年 1 月 1 日之前的物件納入轉移作業。請使用 %Y-%m-%dT%H:%M:%S%z datetime 格式。
  • --include-modified-after-absolute 包含上次修改時間晚於絕對日期/時間的物件。舉例來說,如果指定「2020-01-01」,轉移作業就會包含 2020 年 1 月 1 日後修改的物件。請使用 %Y-%m-%dT%H:%M:%S%z datetime 格式。
  • --include-modified-before-relative 包含在指定經過時間以外修改的物件。舉例來說,指定轉移期限時,如果轉移開始時間是 10 天前,系統就會轉移上次修改時間超過 10 天的物件。10d請使用絕對時間長度格式。例如:1 個月 1m;1 小時 30 分鐘 1h30m
  • --include-modified-after-relative 包含在指定時間內修改的物件。舉例來說,指定時間長度為 10d,可轉移上次修改時間在轉移開始時間前 10 天內的物件。請使用絕對時間長度格式。例如:1 個月 1m;1 小時 30 分鐘 1h30m

範例 (修改後):

下列指令只會轉移 2025 年 10 月 1 日當天或之後修改的物件。

gcloud transfer jobs create gs://my-source-bucket gs://my-sink-bucket
  --include-modified-after-absolute="2025-10-01T00:00:00Z"

範例 (時間範圍):

下列指令只會轉移在 2025 年 10 月期間修改的物件。

gcloud transfer jobs create gs://my-source-bucket gs://my-sink-bucket
  --include-modified-after-absolute="2025-10-01T00:00:00Z"
  --include-modified-before-absolute="2025-11-01T00:00:00Z"

範例 (經過時間):

下列指令只會轉移最近 7 天內修改的物件。

gcloud transfer jobs create gs://my-source-bucket gs://my-sink-bucket
  --include-modified-after-relative="7d"

REST

如要使用 REST API 依修改時間篩選,請在 objectConditionstransferSpec 中指定時間篩選欄位。

{
  "description": "DESCRIPTION",
  "status": "ENABLED",
  "projectId": "PROJECT_ID",
  "transferSpec": {
    "gcsDataSource": {
      "bucketName": "SOURCE_BUCKET"
    },
    "gcsDataSink": {
      "bucketName": "DESTINATION_BUCKET"
    },
    "objectConditions": {
      "lastModifiedBefore": "DATETIME",
      "lastModifiedSince": "DATETIME",
      "minTimeElapsedSinceLastModification": "DURATION",
      "maxTimeElapsedSinceLastModification": "DURATION",

    }
  }
}

其中:

  • lastModifiedBefore 包含上次修改時間早於絕對日期/時間的物件。舉例來說,指定 2020-01-01 會將上次修改日期在 2020 年 1 月 1 日之前的物件納入轉移作業。請使用 %Y-%m-%dT%H:%M:%S%z datetime 格式。
  • lastModifiedSince 包含上次修改時間晚於絕對日期/時間的物件。舉例來說,如果指定「2020-01-01」,轉移作業就會包含 2020 年 1 月 1 日後修改的物件。請使用 %Y-%m-%dT%H:%M:%S%z datetime 格式。
  • minTimeElapsedSinceLastModification 包含在指定經過時間以外修改的物件。舉例來說,指定轉移期限時,如果轉移開始時間是 10 天前,系統就會轉移上次修改時間超過 10 天的物件。10d請使用絕對時間長度格式。例如:1 個月 1m;1 小時 30 分鐘 1h30m
  • maxTimeElapsedSinceLastModification 包含在指定時間內修改的物件。舉例來說,指定時間長度為 10d,可轉移上次修改時間在轉移開始時間前 10 天內的物件。請使用絕對時間長度格式。例如:1 個月 1m;1 小時 30 分鐘 1h30m

範例 (時間範圍):

下列 JSON 主體會將工作設定為只移轉在 2025 年 10 月修改的物件。

{
  "description": "Transfer October 2025 data",
  "status": "ENABLED",
  "projectId": "PROJECT_ID",
  "transferSpec": {
    "gcsDataSource": {
      "bucketName": "SOURCE_BUCKET"
    },
    "gcsDataSink": {
      "bucketName": "DESTINATION_BUCKET"
    },
    "objectConditions": {
      "lastModifiedSince": "2025-10-01T00:00:00Z",
      "lastModifiedBefore": "2025-11-01T00:00:00Z"
    }
  }
}

詳情請參閱「ObjectConditions」參考資料。

與其他篩選器互動

使用多個篩選器時,Storage 移轉服務會依下列順序套用篩選器:

  1. 加入前置字串:縮小要考量的物件範圍。

  2. 物件條件 (上次修改時間):篩選符合包含前置字串的物件。

  3. 排除前置字串:從結果中移除物件。

進一步瞭解如何依前置字串篩選

範例:合併所有篩選器

假設您有下列篩選器設定:

  • include_prefix: "logs/"
  • lastModifiedSince: "2025-10-31T00:00:00Z"
  • exclude_prefix: "logs/temp/"

結果:服務會執行轉移作業,如下所示:

  1. 首先,系統只會考量 logs/ 目錄下的物件。
  2. 接著,系統會尋找在 2025 年 10 月 31 日當天或之後修改的物件。
  3. 最後,系統會從該清單中移除目錄中的所有物件。logs/temp/