本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
筛选通过传输的数据Amazon DataSync
Amazon 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
匹配以tmp
或temp
结尾的文件。注意
当你在控制台上添加模式时,不需要这个分隔符,因为你在单独的行中添加了每个模式。
\
(反斜杠)用于转义文件名或对象名中的特殊字符(*、|、\)的字符。
当反斜杠是文件名的组成部分时,需要使用双反斜杠 (\\)。同样,\\\\ 代表文件名中两个连续的反斜杠。
当竖线是文件名的组成部分时,需要使用反斜杠后跟竖线 (|) 字符。
忽略后面加上任何其他字符或模式末尾的反斜杠 (\)。
从传输中排除数据
排除筛选条件 定义在将文件从源复制到目标位置时要排除的文件、文件夹和对象。您可以在创建、编辑或启动任务时配置这些筛选器。
要在 DataSync 控制台中使用排除筛选器创建任务,请在排除模式下的 “数据传输配置” 部分中指定模式列表。例如,要排除名为temp
或的临时文件夹tmp
,可以在排除模式文本框*/temp
中指定,选择添加模式,然后在第二个文本框*/tmp
中指定。要向筛选条件添加更多模式,请选择 Add pattern (添加模式)。使用Amazon Command Line Interface (Amazon CLI) 时,过滤器周围需要使用单引号 ('
),并使用 | (管道) 作为分隔符。在本示例中,应指定'*/temp
|*/tmp'
。
创建任务后,您可以编辑任务配置以在排除过滤器中添加或删除模式。您的更改将应用于future 执行该任务。
运行任务时,可以使用 “以覆盖模式开始” 选项修改排除筛选模式。您所做的任何更改仅应用于该任务的执行。
您还可以使用Amazon 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
' --nameyour-task-name
--excludes FilterType=SIMPLE_PATTERN,Value='*/temp|*/tmp'
注意
如果您要从 NetApp 系统迁移文件,我们建议您通过在排除筛选器中指定*/.snapshot
为模式来排除 NetApp备份文件夹。
在传输中包括数据
包括筛选器定义运行任务时 DataSync 传输的文件、文件夹和对象。可以在创建、编辑或启动任务时配置包含过滤器。
要使用包含过滤器创建任务,请选择 “特定文件和文件夹” 选项,然后在 “包含模式” 下指定要包含的模式列表。
DataSync 仅扫描和传输与 “包括” 筛选器匹配的文件和文件夹。例如,要包含源文件夹的子集,可以指定/important_folder_1
|/important_folder_2
。
创建任务后,您可以编辑任务配置以在包含过滤器中添加或删除模式。您所做的任何更改都将应用于该任务的future 执行。
运行任务时,可以使用 “以覆盖模式开始” 选项修改包含筛选模式。您所做的任何更改仅应用于该任务的执行。
您还可以使用Amazon CLI,创建或编辑包含筛选条件。以下示例显示了此 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。
注意
创建自己的过滤器时,请确保您知道任务筛选条件.
排除源位置中的某些文件夹
在某些情况下,您可以排除源位置中的文件夹,以免将它们复制到目标位置。例如,您可能有临时 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
”