您可以根据对象的上次修改时间过滤要转移的对象。 这样,您就可以仅转移经过修改的对象:
- 在特定日期和时间之前或之后
- 在相对于转移作业的指定经过时间量之前或之后
此功能对于设置增量转移或跳过超出时间范围的对象非常有用。
除网址列表之外的所有来源的转移都支持按上次修改时间进行过滤。
基于时间的过滤条件
过滤条件由 last modified since、last modified before、minimum time elapsed since modified 和 maximum time elapsed since modified 值定义。您可以单独使用这些过滤条件,也可以将它们组合起来以创建时间窗口。
| 字段 | 说明 |
| 上次修改时间晚于 | 包含转移作业中上次修改时间不早于 此时间戳的对象。 |
| 上次修改时间早于 | 包含转移作业中上次修改时间 早于 此时间戳的对象。 |
| 自上次修改以来经过的最短时间 | 包含转移作业中上次修改时间至少为这么久之前的对象。 例如,此过滤条件可用于仅包含 至少一个月前修改的对象。 没有“上次修改时间”的对象也会被转移。 |
| 自上次修改以来经过的最长时间 | 包含转移作业中上次修改时间 不晚于这么久之前的对象。例如,此过滤条件可用于仅包含最近 7 天内修改的对象。 没有“上次修改时间”的对象也会被转移。 |
指定基于时间的过滤条件
您可以在创建或更新转移作业时指定修改时间过滤条件。
时间戳必须采用 UTC 时间,并采用
RFC 3339 字符串格式
(例如 2025-10-31T10:00:00Z)。时长采用绝对时长格式
(例如,1m 表示 1 个月;1h30m 表示 1 小时 30 分钟)。
Google Cloud 控制台
如需在 Google Cloud 控制台中指定时间过滤条件,请执行以下操作:
- 前往创建转移作业 或修改转移作业 页面。
- 在选择要转移的数据 部分,选择日期和时间 作为过滤条件类型 。
- 为绝对时间范围 输入日期和时间,或为相对时间范围 输入时长。您可以一起指定多个过滤条件。
gcloud CLI
如需使用 gcloud CLI 按修改时间进行过滤,请将基于时间的过滤条件标志传递给 gcloud transfer jobs create 或 gcloud 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 按修改时间进行过滤,请在 transferSpec 的 objectConditions 中指定基于时间的过滤条件字段。
{
"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 会按以下顺序应用这些过滤条件:
包含前缀:缩小要考虑的对象范围。
对象条件 (上次修改时间):过滤与包含前缀匹配的对象。
排除前缀:从结果中移除对象。
详细了解如何按 前缀过滤。
示例:组合所有过滤条件
假设您有以下过滤条件配置:
- include_prefix: "logs/"
- lastModifiedSince: "2025-10-31T00:00:00Z"
- exclude_prefix: "logs/temp/"
结果 :该服务将按如下方式执行转移:
- 首先,它仅考虑
logs/目录下的对象。 - 接下来,它会查找在 2025 年 10 月 31 日或之后修改的对象。
- 最后,它会从该列表中移除
logs/temp/目录中的所有对象。