按修改时间过滤源对象

您可以根据对象的上次修改时间过滤要转移的对象。 这样,您就可以仅转移经过修改的对象:

  • 在特定日期和时间之前或之后
  • 在相对于转移作业的指定经过时间量之前或之后

此功能对于设置增量转移或跳过超出时间范围的对象非常有用。

除网址列表之外的所有来源的转移都支持按上次修改时间进行过滤。

基于时间的过滤条件

过滤条件由 last modified sincelast modified beforeminimum time elapsed since modifiedmaximum time elapsed since modified 值定义。您可以单独使用这些过滤条件,也可以将它们组合起来以创建时间窗口。

字段 说明
上次修改时间晚于 包含转移作业中上次修改时间不早于 此时间戳的对象。
上次修改时间早于 包含转移作业中上次修改时间 早于 此时间戳的对象。
自上次修改以来经过的最短时间 包含转移作业中上次修改时间至少为这么久之前的对象。 例如,此过滤条件可用于仅包含 至少一个月前修改的对象。 没有“上次修改时间”的对象也会被转移。
自上次修改以来经过的最长时间 包含转移作业中上次修改时间 不晚于这么久之前的对象。例如,此过滤条件可用于仅包含最近 7 天内修改的对象。 没有“上次修改时间”的对象也会被转移。

指定基于时间的过滤条件

您可以在创建或更新转移作业时指定修改时间过滤条件。

时间戳必须采用 UTC 时间,并采用 RFC 3339 字符串格式 (例如 2025-10-31T10:00:00Z)。时长采用绝对时长格式 (例如,1m 表示 1 个月;1h30m 表示 1 小时 30 分钟)。

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 日期时间格式。
  • --include-modified-after-absolute 包含上次修改时间晚于绝对日期/时间的对象。例如,通过指定“2020-01-01”,转移作业会包含上次修改时间晚于 2020 年 1 月 1 日的对象。请使用 %Y-%m-%dT%H:%M:%S%z 日期时间格式。
  • --include-modified-before-relative 包含在指定经过时间量之外修改的对象。例如,指定时长为 10d 会转移上次修改时间早于转移开始时间 10 天以上的对象。请使用绝对时长格式。例如,1m 表示 1 个月;1h30m 表示 1 小时 30 分钟。
  • --include-modified-after-relative 包含在指定时间量内修改的对象。例如,指定时长为 10d 会转移上次修改时间早于转移开始时间 10 天以内的对象。请使用绝对时长格式。例如,1m 表示 1 个月;1h30m 表示 1 小时 30 分钟。

示例(修改时间晚于)

以下命令仅转移在 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 按修改时间进行过滤,请在 transferSpecobjectConditions 中指定基于时间的过滤条件字段。

{
  "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 日期时间格式。
  • lastModifiedSince 包含上次修改时间晚于绝对日期/时间的对象。例如,通过指定“2020-01-01”,转移作业会包含上次修改时间晚于 2020 年 1 月 1 日的对象。请使用 %Y-%m-%dT%H:%M:%S%z 日期时间格式。
  • minTimeElapsedSinceLastModification 包含在指定经过时间量之外修改的对象。例如,指定时长为 10d 会转移上次修改时间早于转移开始时间 10 天以上的对象。请使用绝对时长格式。例如,1m 表示 1 个月;1h30m 表示 1 小时 30 分钟。
  • maxTimeElapsedSinceLastModification 包含在指定时间量内修改的对象。例如,指定时长为 10d 会转移上次修改时间早于转移开始时间 10 天以内的对象。请使用绝对时长格式。例如,1m 表示 1 个月;1h30m 表示 1 小时 30 分钟。

示例(时间窗口)

以下 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 Transfer Service 会按以下顺序应用这些过滤条件:

  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/ 目录中的所有对象。