从转移作业过滤对象

本文档介绍如何使用 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/"