过滤转移作业中的对象

本页面介绍如何使用 includePrefixexcludePrefix 包含和排除转移作业的路径。如需了解如何创建要转移的特定对象的清单,请参阅使用清单转移特定文件或对象

您可以在以编程方式创建转移作业时使用 includePrefixexcludePrefix 来限制 Storage Transfer Service 运行的对象。includePrefixexcludePrefix 是您在创建转移作业时在 TransferSpec 中指定的可选字段。includePrefix 指定要为转移作业包含的特定路径,excludePrefix 指定要排除的特定路径。

如果路径包含您希望转移和不想转移的对象,您可以结合使用 includePrefixexcludePrefix 来指定要转移的对象。

对象和路径示例

本文档中的示例使用以下示例对象和路径:

object_1
object_2
path_1/object_3/
path_2/object_4
path_1/subpath_1/object_5
path_1/subpath_2/object_6
path_2/subpath_3/object_7
path_2/subpath_4/object_8

包含路径

您可以在创建转移作业时使用 includePrefix,以指示 Storage Transfer Service 考虑列出的路径中的对象以进行转移,并忽略不在这些路径下的对象。

例如,要包含 path_1/ 下的对象,请向 includePrefix 传递以下内容:

includePrefix: "path_1/"

这包括直接位于 path_1/path_1/subpath_1path_1/subpath_2/ 下的对象。转移作业中包含以下对象:

path_1/object_3
path_1/subpath_1/object_5
path_1/subpath_2/object_6

您还可以指定要包含的特定路径。例如,您可以向 includePrefix 传递以下内容:

includePrefix: "path_1/subpath_2/", "path_1/subpath_3/"

在本例中,转移作业包含以下对象:

path_1/subpath_2/object_6
path_2/subpath_3/object_7

使用 includePrefix 时,未明确包含的路径不会转移到 Cloud Storage 目标存储桶。

排除路径

创建转移作业时,使用 excludePrefix 指示 Storage Transfer Service 忽略列出的转移作业路径。

如需排除 path_1/ 下的对象,请传递 excludePrefix

excludePrefix: "path_1/"

这会排除 path_1/path_1/subpath_1/path_1/subpath_2/ 下的对象。在本例中,以下对象包含在转移作业中:

object_1
object_2
path_2/object_4
path_2/subpath_3/object_7
path_2/subpath_4/object_8

您还可以指定要排除的特定路径。例如,您可以向 excludePrefix 传递以下内容:

excludePrefix: "path_1/subpath_2/", "path_2/subpath_3/"

在本例中,转移作业包含以下对象:

object_1
object_2
path_1/object_3
path_2/object_4
path_1/subpath_1/object_5
path_2/subpath_4/object_8

同时包含和排除路径

您可以同时应用 excludePrefixincludePrefix,在这种情况下,excludePrefix 会进一步限制 includePrefix 在转移作业中包含的内容。

同时指定 includePrefixexcludePrefix 时,每个 excludePrefix 都必须以您为 includePrefix 指定的任何值开头。

例如,要包含 path_1/ 下的对象并排除 subpath_1/ 下的对象,请传递以下内容:

includePrefix: "path_1/"
excludePrefix: "path_1/subpath_1/"

在本例中,转移作业包含以下对象:

path_1/object_3
path_1/subpath_2/object_6

如需包含 path_1/path_2/ 下的所有对象(path_1/subpath_1/path_2/subpath_3/ 中的项除外),请传递以下内容:

includePrefix: "path_1/", "path_2/"
excludePrefix: "path_1/subpath_1/", "path_2/subpath_3/"

在本例中,转移作业包含以下对象:

path_1/object_3
path_2/object_4
path_1/subpath_2/object_6
path_2/subpath_4/object_8

错误的路径包含或排除示例

以下部分介绍了使用包含或排除路径时要避免的示例,以及如何更正它们以使其正常运行。

包含另一个 include-prefix 中使用的路径

每个 includePrefix 都应指定对象命名空间的不同部分。以下示例不正确,因为第二个值已包含在第一个值的命名空间中:

includePrefix: "path_1/", "path_1/subpath_1"

在此示例中,includePrefix 值无效,因为第二个 includePrefix ("path_1/subpath_1") 已包含在 "path_1/" 中。如需解决此问题,请选择包含其中的一个或另一个:

  • includePrefix: "path_1"
  • includePrefix: "path_1/subpath_1"

使用不以 include-prefix 开头的 exclude-prefix

每个 excludePrefix 都应以任何指定的 includePrefix 值开头。以下示例不正确,因为 excludePrefix 值不是以指定的 includePrefix 值开头:

includePrefix: "path_1/", "path_2/"
excludePrefix: "subpath_1/", "subpath_4/"

在此示例中,excludePrefix 值无效,因为它们没有以 includePrefix 值(path_1path_2)中的任何一个开头。如需解决此问题,请确保 excludePrefix 中包含 includePrefix 中列出的完整路径:

includePrefix: "path_1/", "path_2/"
excludePrefix: "path_1/subpath_1/", "path_2/subpath_4/"

后续步骤