按修改时间过滤源对象

您可以根据对象的最后修改时间来过滤要转移的对象。 这样一来,您便可以仅转移修改过的对象:

  • 在特定日期和时间之前或之后
  • 相对于转移作业,在指定时长过去之前或之后

此功能可用于设置增量转移,或跳过时间范围之外的对象。

支持按最后修改时间过滤来自除网址列表之外的所有来源的转移。

基于时间的过滤条件

过滤条件通过 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 天的对象。使用绝对时长格式。例如,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 按修改时间进行过滤,请在 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. 对象条件(glob 模式和上次修改时间):过滤与包含前缀匹配的对象。对象必须同时匹配 glob 过滤条件和最后修改时间过滤条件,才能包含在结果中。

  3. 排除前缀:从结果中移除对象。

详细了解按前缀过滤使用 glob 模式进行过滤

示例:合并所有过滤条件

假设您为从 AWS S3 或 Azure 进行的转移配置了以下过滤条件:

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

结果:该服务将按以下方式执行转移:

  1. 首先,它仅考虑 logs/ 目录下的对象。
  2. 接下来,它会查找以 .log 结尾且在 2025 年 10 月 31 日或之后修改的对象。
  3. 最后,它会从该列表中移除 logs/temp/ 目录中的所有对象。