筛选传输的数据AWS DataSync - AWS DataSync

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

筛选传输的数据AWS DataSync

AWS DataSync如果您只想传输数据子集(例如特定文件、文件夹或对象),则允许您应用过滤器。

例如,如果您的源位置包含以结尾的临时文件.tmp,则可以创建排除过滤器,防止这些文件进入目标位置。您还可以在同一任务中组合使用排除和包含过滤器。

筛选术语、定义和语法

以下是一些用于筛选的术语和定义:

筛选条件

构成特定过滤器的整个字符串(例如:*.tmp|*.temp/folderA|/folderB)。

过滤器由以 |(管道)分隔的模式组成。在控制台上添加模式时不需要分隔符,因为每个模式都是单独添加的。

注意

过滤器区分大小写。例如,过滤器将/folderA不匹配/FolderA

Pattern

筛选条件中的模式。例如,*.tmp是作为*.tmp|*.temp过滤器一部分的模式。

文件夹
  • 所有筛选条件都相对于源位置路径。例如,假设您在创建源位置和任务时指定/my_source/为源路径并指定包含过滤器/transfer_this/。在这种情况下,仅DataSync传输目录/my_source/transfer_this/及其内容。

  • 要直接在源位置下指定文件夹,请在文件夹名称前加上正斜杠 (/)。在上述示例中,模式使用 /transfer_this,而不是 transfer_this

  • DataSync以相同的方式解释以下模式并匹配文件夹及其内容。

    /dir

    /dir/

  • 当您从 Amazon S3 存储桶传输数据或向 Amazon S3 存储桶传输数据时,会将对象密钥中的/字符DataSync视为等效文件系统上的文件夹。

特殊字符

以下是用于筛选的特殊字符。

特殊字符 描述

*(通配符)

一个用于匹配零个或多个字符的字符。例如,/movies_folder* 匹配 /movies_folder/movies_folder1 这两者。

|(竖线分隔符)

用作模式之间分隔符的字符。它支持指定多个模式,其中的任何模式都可以与筛选条件匹配。例如,*.tmp|*.temp 匹配以 tmptemp 结尾的文件。

注意

当你在控制台上添加模式时,不需要这个分隔符,因为你在单独的行中添加了每个模式。

\(反斜杠)

用于转义文件或对象名称中的特殊字符(*、|、\)的字符。

当反斜杠是文件名的组成部分时,需要使用双反斜杠 (\\)。同样,\\\\ 代表文件名中两个连续的反斜杠。

当竖线是文件名的组成部分时,需要使用反斜杠后跟竖线 (|) 字符。

忽略后面加上任何其他字符或模式末尾的反斜杠 (\)。

从传输中排除数据

排除筛选条件 定义在将文件从源复制到目标位置时要排除的文件、文件夹和对象。您可以在创建、编辑或启动任务时配置这些筛选器。

要在DataSync控制台中使用排除筛选器创建任务,请在排除模式下的 “数据传输配置” 部分中指定模式列表。例如,要排除名为temp或的临时文件夹tmp,可以在排除模式文本框*/temp中指定,选择添加模式,然后在第二个文本框*/tmp中指定。要向筛选条件添加更多模式,请选择 Add pattern (添加模式)。使用AWS Command Line Interface (AWS CLI) 时,过滤器周围需要使用单引号 ('),并使用 | (管道) 作为分隔符。在本示例中,应指定'*/temp |*/tmp'

创建任务后,您可以编辑任务配置以在排除过滤器中添加或删除模式。您的更改将应用于future 执行该任务。

运行任务时,可以使用 “以覆盖模式开始” 选项修改排除筛选模式。您所做的任何更改仅应用于该任务的执行。

您还可以使用AWS CLI,创建或编辑排除过滤器。以下示例显示这样一个 CLI 命令。

aws datasync create-task --source-location-arn 'arn:aws:datasync:region:account-id:location/location-id' --destination-location-arn 'arn:aws:datasync:region:account-id:location/location-id' --cloud-watch-log-group-arn 'arn:aws:logs:region:account-id:log-group:your-log-group' --name your-task-name --excludes FilterType=SIMPLE_PATTERN,Value='*/temp|*/tmp'
注意

如果您要从NetApp系统迁移文件,我们建议您通过在排除筛选器中指定*/.snapshot为模式来排除NetApp备份文件夹。

在传输中包括数据

包括筛选器定义运行任务时DataSync传输的文件、文件夹和对象。可以在创建、编辑或启动任务时配置包含过滤器。

要使用包含过滤器创建任务,请选择 “特定文件和文件夹” 选项,然后在 “包含模式” 下指定要包含的模式列表。

DataSync仅扫描和传输与包含过滤器匹配的文件和文件夹。例如,要包含源文件夹的子集,可以指定/important_folder_1 |/important_folder_2

创建任务后,您可以编辑任务配置以在包含过滤器中添加或删除模式。您所做的任何更改都将应用于该任务的future 执行。

运行任务时,可以使用 “以覆盖模式开始” 选项修改包含筛选模式。您所做的任何更改仅应用于该任务的执行。

您还可以使用 cludAWS CLI e 过滤器创建或编辑包含过滤器。以下示例显示了此 CLI 命令。注意过滤器周围的引号 (') 和用作分隔符的|(管道)。

aws datasync start-task-execution --task-arn 'arn:aws:datasync:region:account-id:task/task-id' --includes FilterType=SIMPLE_PATTERN,Value='/important_folder1|/important_folder2'
注意

Include 过滤器仅支持将通配符 (*) 作为模式中最右边的字符。例如,支持/documents* |/code*,但*.txt不支持。

过滤器示例

以下示例说明您可以与结合使用的常用过滤器DataSync。

注意

在过滤器中可以使用的字符数有限制。有关更多信息,请参阅DataSync任务配额

排除源位置中的某些文件夹

在某些情况下,您可以排除源位置中的文件夹,以免将它们复制到目标位置。例如,您可能有临时work-in-progress文件夹。或者,您可能使用NetApp系统并希望排除备份文件夹。在这些情况下,您可以使用以下过滤器。

*/.snapshot

要排除内容相似(例如/reports2021/reports2022))的文件夹,可以使用如下所示的排除过滤器:

/reports*

要排除文件层次结构中任何级别的文件夹,可以使用如下所示的排除过滤器。

*/folder-to-exclude-1|*/folder-to-exclude-2

要排除源位置顶层的文件夹,可以使用如下所示的排除过滤器。

/top-level-folder-to-exclude-1|/top-level-folder-to-exclude-2

包括源位置的文件夹子集

在某些情况下,您的源位置可能会占很大的份额,您需要传输根目录下的一部分文件夹。要包含特定文件夹,使用如下所示的包含筛选条件开始任务执行。

/folder-to-transfer/*

排除特定文件类型

要从传输中排除某些文件类型,您可以使用诸如 *.temp 的排除筛选条件创建一个任务执行。

传输您指定的单个文件

要传输单个文件的列表,请使用包含过滤器开始执行任务,如下所示:“/folder/subfolder/file1.txt|/folder/subfolder/file2.txt |/folder/subfolder/file2.txt