您可以根据对象的最后修改时间来过滤要转移的对象。 这样一来,您便可以仅转移修改过的对象:
- 在特定日期和时间之前或之后
- 相对于转移作业,在指定时长过去之前或之后
此功能可用于设置增量转移,或跳过时间范围之外的对象。
支持按最后修改时间过滤来自除网址列表之外的所有来源的转移。
基于时间的过滤条件
过滤条件通过 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 天的对象。使用绝对时长格式。例如,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 按修改时间进行过滤,请在 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 会按以下顺序应用这些过滤条件:
包含前缀:缩小要考虑的对象的范围。
对象条件(glob 模式和上次修改时间):过滤与包含前缀匹配的对象。对象必须同时匹配 glob 过滤条件和最后修改时间过滤条件,才能包含在结果中。
排除前缀:从结果中移除对象。
详细了解按前缀过滤和使用 glob 模式进行过滤。
示例:合并所有过滤条件
假设您为从 AWS S3 或 Azure 进行的转移配置了以下过滤条件:
- include_prefix: "logs/"
- match_glob: "**/*.log"
- lastModifiedSince: "2025-10-31T00:00:00Z"
- exclude_prefix: "logs/temp/"
结果:该服务将按以下方式执行转移:
- 首先,它仅考虑
logs/目录下的对象。 - 接下来,它会查找以
.log结尾且在 2025 年 10 月 31 日或之后修改的对象。 - 最后,它会从该列表中移除
logs/temp/目录中的所有对象。