

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

# 使用筛选条件传输特定文件、对象和文件夹
<a name="filtering"></a>

AWS DataSync 允许您应用筛选器在传输中包含或排除来自源位置的数据。例如，如果您不想传输以 `.tmp` 结尾的临时文件，可以创建一个排除筛选条件，这些文件就不会传输到目标位置。

您可以在同一个传输任务中组合使用排除和包含筛选条件。如果您修改了任务的筛选条件，这些更改将在下次运行该任务时生效。

## 筛选术语、定义和语法
<a name="filter-overview"></a>

熟悉与筛选相关的概念： DataSync 

**筛选条件 **  
构成特定筛选条件的整个字符串（例如，`*.tmp``|``*.temp` 或 `/folderA|/folderB`）。  
筛选条件由使用管道符（\$1）分隔的模式组成。在 DataSync 控制台中添加模式时不需要分隔符，因为每个模式都是单独添加的。  
筛选区分大小写。例如，筛选条件 `/folderA` 与 `/FolderA` 不匹配。

**模式**  
筛选条件中的模式。例如，`*.tmp` 是一个模式，它是 `*.tmp``|``*.temp` 筛选条件的组成部分。如果您的筛选条件有多个模式，则使用管道符（\$1）划分各个模式。

**文件夹**  
+ 所有筛选条件都相对于源位置路径。例如，假设您在创建源位置和任务时指定 `/my_source/` 作为源路径，并要求包含筛选条件 `/transfer_this/`。在这种情况下，仅 DataSync 传输目录`/my_source/transfer_this/`及其内容。
+ 要指定直接位于源位置下的文件夹，请在文件夹名称前面加入一个正斜杠 (/) 。在上述示例中，模式使用 `/transfer_this`，而不是 `transfer_this`。
+ DataSync 以相同的方式解释以下模式，并匹配文件夹及其内容。

  `/dir` 

  `/dir/`
+ 当您从 Amazon S3 存储桶传输数据或将数据传输到 Amazon S3 存储桶时，会将对象密钥中的`/`字符 DataSync视为文件系统上的文件夹。

**特殊字符**  
以下是用于筛选的特殊字符。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/filtering.html)

## 示例筛选条件：
<a name="sample-filters"></a>

以下示例显示了您可以使用的常用过滤器 DataSync。

**注意**  
筛选条件的字符数是有限制的。有关更多信息，请参阅 [DataSync 配额](datasync-limits.md#task-hard-limits)。

**排除源位置中的某些文件夹**  
在某些情况下，您可能需要排除源位置中的文件夹，以防止将它们复制到目标位置。例如，如果您有临时 work-in-progress文件夹，则可以使用类似以下筛选器的内容：

`*/.temp`

要排除内容相似的文件夹（例如 `/reports2021` 和 `/reports2022)`），您可以使用与下述类似的排除筛选条件：

`/reports*`

要排除文件层次结构中任何级别的文件夹，您可以使用排除筛选条件，如下所示。

`*/folder-to-exclude-1`\$1`*/folder-to-exclude-2`

要排除源位置的顶级文件夹，您可以使用排除筛选条件，如下所示。

`/top-level-folder-to-exclude-1`\$1`/top-level-folder-to-exclude-2`

**包含源位置中的文件夹子集**  
在某些情况下，您的源位置可能是大型共享的，并且您需要传输根文件夹下的文件夹子集。要包含特定文件夹，使用如下所示的包含筛选条件开始任务执行。

`/folder-to-transfer/*`

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

**传输您指定的个别文件**  
要传输个别文件的列表，使用如下所示的包含筛选条件开始任务执行：“`/folder/subfolder/file1.txt`\$1`/folder/subfolder/file2.txt`\$1`/folder/subfolder/file2.txt`”

## 创建包含筛选条件
<a name="include-filters"></a>

包含筛选器定义要 DataSync 传输的文件、对象和文件夹。您可以在创建、编辑或启动任务时配置以包括这些筛选条件。

DataSync 仅扫描和传输与包含过滤器匹配的文件和文件夹。例如，要包括源文件夹的子集，您可以指定 `/important_folder_1`\$1`/important_folder_2`。

**注意**  
包括筛选条件仅支持将通配符 (\$1) 字符用作模式中最右侧的字符。例如，支持 `/documents*`\$1`/code*`，但不支持 `*.txt`。

### 使用控制 DataSync 台
<a name="include-filters-console"></a>

1. 打开 AWS DataSync 控制台，网址为[https://console.aws.amazon.com/datasync/](https://console.aws.amazon.com/datasync/)。

1. 在左侧导航窗格中，选择**任务**，然后选择**创建任务**。

1. 配置您任务的源位置和目标位置。

   有关更多信息，请参阅 [我可以在哪里传输我的数据 AWS DataSync？](working-with-locations.md)。

1. 对于**要扫描的内容**，请选择**特定文件、对象和文件夹**，然后选择**使用筛选条件**。

1. 对于**包含**，输入您的筛选条件（例如，输入 `/important_folders` 以包含重要目录），然后选择**添加模式**。

1. 根据需要，添加其他包含筛选条件。

### 使用 AWS CLI
<a name="include-filters-cli"></a>

使用时 AWS CLI，必须在筛选器周围使用单引号 (`'`)，如果有多个筛选器，则必须使用\$1（竖线）作为分隔符。

以下示例指定了运行 `create-task` 命令时使用的两个包含筛选条件 `/important_folder1` 和 `/important_folder2`。

```
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' \
   --includes FilterType=SIMPLE_PATTERN,Value='/important_folder1|/important_folder2'
```

## 创建排除筛选条件
<a name="exclude-filters"></a>

排除过滤器定义源位置中您不想 DataSync 传输的文件、对象和文件夹。您可以在创建、编辑或启动任务时配置这些筛选条件。

**Topics**
+ [默认排除的数据](#directories-ignored-during-transfers)

### 默认排除的数据
<a name="directories-ignored-during-transfers"></a>

DataSync 自动将某些数据排除在传输范围之外：
+ `.snapshot`— DataSync 忽略任何以结尾的路径`.snapshot`，该路径通常用于存储系统的文件或目录的 point-in-time快照。
+ `/.aws-datasync`和 `/.awssync` — 在您所在的位置 DataSync创建这些文件夹，以方便您进行传输。
+ `/.zfs`— 你可能会在 Amazon FSx 上看到这个文件夹，里面有 OpenZFS 位置。

### 使用控制 DataSync 台
<a name="adding-exclude-filters"></a>

1. 打开 AWS DataSync 控制台，网址为[https://console.aws.amazon.com/datasync/](https://console.aws.amazon.com/datasync/)。

1. 在左侧导航窗格中，选择**任务**，然后选择**创建任务**。

1. 配置您任务的源位置和目标位置。

   有关更多信息，请参阅 [我可以在哪里传输我的数据 AWS DataSync？](working-with-locations.md)。

1. 对于**排除**，输入您的筛选条件（例如，输入 `*/temp` 以排除临时文件夹），然后选择**添加模式**。

1. 根据需要，添加其他排除筛选条件。

1. 如果需要，添加[包含筛选条件](#include-filters)。

### 使用 AWS CLI
<a name="adding-exclude-filters-cli"></a>

使用时 AWS CLI，必须在筛选器周围使用单引号 (`'`)，如果有多个筛选器，则必须使用\$1（竖线）作为分隔符。

以下示例指定了运行 `create-task` 命令时使用的两个排除筛选条件 `*/temp` 和 `*/tmp`。

```
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' \
   --excludes FilterType=SIMPLE_PATTERN,Value='*/temp|*/tmp'
```