

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

# 创建一个传输数据的任务
<a name="create-task-how-to"></a>

*任务*描述了数据 AWS DataSync 传输的地点和方式。任务包括以下部分：
+ [**源位置**](working-with-locations.md)-从中 DataSync 传输数据的存储系统或服务。
+ [**目标位置**](working-with-locations.md)-将数据 DataSync 传输到的存储系统或服务。
+ [**任务选项**](task-options.md) — 诸如要传输哪些文件、如何验证数据、任务何时运行等设置。
+ [**任务执行**](run-task.md) — 当您运行任务时，它被称为*任务执行*。

## 创建 任务
<a name="create-task-steps"></a>

创建 DataSync 任务时，需要指定源位置和目标位置。您还可以通过选择要传输的文件、处理元数据的方式，并设置时间表等，对任务进行自定义。

在创建任务之前，请务必[了解 DataSync 转移的工作原](how-datasync-transfer-works.md#transferring-files)理并查看[任务配额](datasync-limits.md#task-hard-limits)。

**重要**  
如果您计划在 Amazon S3 地点之间传输数据，请在开始之前查看[ DataSync 如何影响您的 S3 请求费用](create-s3-location.md#create-s3-location-s3-requests)和[DataSync 定价页面](https://aws.amazon.com/datasync/pricing/)。

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

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

1. 确保您位于计划传输数据 AWS 区域 的地点之一。

1. 在左侧导航窗格中，展开**数据传输**，然后选择**任务**，然后选择**创建任务**。

1. 在**配置源位置**页面，[创建](transferring-data-datasync.md)或选择一个源位置，然后选择**下一步**。

1. 在**配置目标位置**页面，[创建](transferring-data-datasync.md)或选择一个目标位置，然后选择**下一步**。

1. （推荐）在**配置设置**页面，为任务指定一个您可以记住的名称。

1. 同样在**配置设置**页面，选择任务选项，或使用默认设置。

   您可能对以下一些选项感兴趣：
   + 指定要使用的[任务模式](choosing-task-mode.md)。
   + 使用[清单](transferring-with-manifest.md)或[筛选条件](filtering.md)指定要传输的数据。
   + 配置如何[处理文件元数据](configure-metadata.md)和[验证数据完整性](configure-data-verification-options.md)。
   + 通过[任务报告](task-reports.md)或 [Amazon](monitor-datasync.md) 监控您的转账 CloudWatch。我们建议为任务设置某种监控。

   完成此操作后，选择**下一步**。

1. 检查任务配置，然后选择**创建任务**。

您已经准备好，可以[开始任务](run-task.md)。

### 使用 AWS CLI
<a name="create-task-cli"></a>

[创建 DataSync 源位置和目标位置](transferring-data-datasync.md)后，即可创建任务。

1. 在你的 AWS CLI 设置中，确保你使用的是你计划传输数据的 AWS 区域 其中一个位置。

1. 复制以下 `create-task` 命令：

   ```
   aws datasync create-task \
     --source-location-arn "arn:aws:datasync:us-east-1:account-id:location/location-id" \
     --destination-location-arn "arn:aws:datasync:us-east-1:account-id:location/location-id" \
     --name "task-name"
   ```

1. 对于 `--source-location-arn`，指定源位置的 Amazon 资源名称（ARN）。

1. 对于 `--destination-location-arn`，指定目标位置的 ARN。

   如果您要跨 AWS 区域 账户转账，请确保 ARN 包含其他地区或账户 ID。

1. （推荐）对于 `--name`，请为任务指定一个您可以记住的名称。

1. 根据需要指定其他任务选项。您可能对以下一些选项感兴趣：
   + 使用[清单](transferring-with-manifest.md)或[筛选条件](filtering.md)指定要传输的数据。
   + 配置如何[处理文件元数据](configure-metadata.md)和[验证数据完整性](configure-data-verification-options.md)。
   + 通过[任务报告](task-reports.md)或 [Amazon](monitor-datasync.md) 监控您的转账 CloudWatch。我们建议为任务设置某种监控。

   有关更多选项，请参阅 [create-task](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/datasync/create-task.html)。以下是指定了多个选项的 `create-task` 命令示例：

   ```
   aws datasync create-task \
     --source-location-arn "arn:aws:datasync:us-east-1:account-id:location/location-id" \
     --destination-location-arn "arn:aws:datasync:us-east-1:account-id:location/location-id" \
     --cloud-watch-log-group-arn "arn:aws:logs:region:account-id" \
     --name "task-name" \
     --options VerifyMode=NONE,OverwriteMode=NEVER,Atime=BEST_EFFORT,Mtime=PRESERVE,Uid=INT_VALUE,Gid=INT_VALUE,PreserveDevices=PRESERVE,PosixPermissions=PRESERVE,PreserveDeletedFiles=PRESERVE,TaskQueueing=ENABLED,LogLevel=TRANSFER
   ```

1. 运行 `create-task` 命令。

   如果命令成功，您将收到一条响应，显示所创建任务的 ARN。例如：

   ```
   { 
       "TaskArn": "arn:aws:datasync:us-east-1:111222333444:task/task-08de6e6697796f026" 
   }
   ```

您已经准备好，可以[开始任务](run-task.md)。

## 任务状态
<a name="understand-task-creation-statuses"></a>

创建 DataSync 任务时，您可以检查其状态以查看其是否已准备好运行。


| 控制台状态 | API 状态 | 说明 | 
| --- | --- | --- | 
| Available |  `AVAILABLE`  |  任务准备就绪，可以开始传输数据。  | 
| 运行 |  `RUNNING`  | 任务正在执行中。有关更多信息，请参阅 [任务执行状态](run-task.md#understand-task-execution-statuses)。 | 
|  不可用  |  `UNAVAILABLE`  |  任务使用的 DataSync 代理处于脱机状态。有关更多信息，请参阅 [如果我的代理处于离线状态，我该怎么办？](troubleshooting-datasync-agents.md#troubleshoot-agent-offline)。  | 
|  已排队  |  `QUEUED`  |  另一个使用相同 DataSync 代理的任务正在执行中。有关更多信息，请参阅 [了解任务何时排队](run-task.md#queue-task-execution)。  | 

## 使用多个任务对大型数据集进行分区
<a name="multiple-tasks-large-dataset"></a>

如果您要传输大型数据集，例如[迁移](datasync-large-migration.md)数百万个文件或对象，我们建议您使用 DataSync 增强模式进行传输，该模式可以传输文件数量几乎不受限制的数据集。对于包含数十亿个文件的超大型数据集，您应该考虑使用多个 DataSync 任务对数据集进行分区。将数据分成多个任务（可能还有[代理](do-i-need-datasync-agent.md#multiple-agents)，具体取决于您所在的位置）有助于缩短 DataSync 准备和传输数据所需的时间。

考虑一下将大型数据集分成多个 DataSync任务的一些方法：
+ 创建传输单独文件夹的任务。例如，可以在源存储中分别创建两个以 `/FolderA` 和 `/FolderB` 为目标的任务。
+ 使用[清单](transferring-with-manifest.md)或[筛选条件](filtering.md)创建任务，传输文件、对象和文件夹的子集。

请注意，这种方法可能会增加存储 I/O 操作并影响网络带宽。有关更多信息，请参阅关于[如何使用横向 DataSync 扩展架构加速数据传输的](https://aws.amazon.com/blogs/storage/how-to-accelerate-your-data-transfers-with-aws-datasync-scale-out-architectures/)博客。

## 通过多个任务来分割传输的数据
<a name="multiple-tasks-organize-transfer"></a>

如果要将不同的数据集传输到同一目标，您可以创建多个任务来帮助分割要传输的数据。

例如，如果要传输到名为 `MyBucket` 的同一个 S3 存储桶，您可以在存储桶中创建与每个任务相对应的不同前缀。这种方法可以防止数据集的文件名冲突，并允许您为每个前缀设置不同的权限。下面是设置方法：

1. 在目标 `MyBucket` 中创建三个前缀，分别命名为 `task1`、`task2` 和 `task3`：
   + `s3://MyBucket/task1`
   + `s3://MyBucket/task2`
   + `s3://MyBucket/task3`

1. 创建三个名为`task1``task2`、的 DataSync 任务`task3`，并将它们转移到中相应的前缀`MyBucket`。

# 为数据传输选择任务模式
<a name="choosing-task-mode"></a>

您的 AWS DataSync 任务可以在以下模式之一下运行：
+ **增强模式**-传输几乎无限数量的文件或对象，其性能高于基本模式。增强模式任务通过并行列示、准备、传输和验证数据来优化数据传输过程。增强模式目前可用于在 Amazon S3 位置之间进行传输，在没有代理的情况下在 Amazon S3 之间Azure Blob进行传输，在没有代理的情况下在其他云和 Amazon S3 之间传输，以及使用增强模式代理在 NFS 或 SMB 文件服务器与 Amazon S3 之间传输。
+ **基本模式**-在 AWS 存储和所有其他支持的 DataSync 位置之间传输文件或对象。基本模式任务在数据集中文件、对象和目录数量方面存在[配额](datasync-limits.md)限制。基本模式按顺序准备、传输和验证数据，因此对于大多数工作负载来说，基本模式的处理速度慢于增强模式。

## 了解任务模式的差异
<a name="task-mode-differences"></a>

以下信息有助于您确定使用哪种任务模式。


| 能力 | 增强模式行为 | 基本模式行为 | 
| --- | --- | --- | 
| [性能](how-datasync-transfer-works.md#transferring-files) | DataSync 并行列出、准备、传输和验证您的数据。对于大多数工作负载（例如传输大型对象），可提供比基本模式更高的性能 | DataSync 按顺序准备、传输和验证您的数据。对于大多数工作负载，性能比增强模式更慢 | 
| 数据集中每次执行任务时 DataSync 可以处理的项目数 |  对象数量几乎不受限制  |  适用[配额](datasync-limits.md#task-hard-limits)  | 
|  数据传输[计数器](transfer-performance-counters.md)和[指标](monitor-datasync.md)  |  与 “基本” 模式相比，计数器和指标更多，例如在源位置 DataSync找到的对象数量、每次任务执行期间准备的对象数量，以及类似于文件和对象计数器的文件夹计数器  |  计数器和指标低于增强模式  | 
|  [日志记录](configure-logging.md)  | 结构化日志（JSON 格式） | 非结构化日志 | 
|  [支持的位置](working-with-locations.md)  | 目前用于在 Amazon S3 位置之间进行传输，在没有代理的情况下在 Amazon S3 Azure Blob 和 Amazon S3 之间传输，在没有代理的情况下在其他云和 Amazon S3 之间传输，以及使用增强模式代理在 NFS 或 SMB 文件服务器与 Amazon S3 之间传输。 |  适用于所有 DataSync 支持的地点之间的传输  | 
|  [数据验证选项](configure-data-verification-options.md)  | DataSync 仅验证传输的数据 | DataSync 默认情况下会验证所有数据 | 
| 成本 | 如需了解更多信息，请参阅定[DataSync 价](https://aws.amazon.com/datasync/pricing)页面 | 如需了解更多信息，请参阅定[DataSync 价](https://aws.amazon.com/datasync/pricing)页面 | 
| 处理不支持的对象标签时失败 | 云存储传入或传出不支持对象标记的位置时，如果 ObjectTags 选项未指定或设置为 PRESERVE，任务执行会立即失败。 | 云存储传入或传出不支持对象标记的位置时，任务执行会正常运行，但如果 ObjectTags 选项未指定或设置为 PRESERVE，则会逐对象报告已标记对象的故障。 | 

## 选择任务模式
<a name="choosing-task-mode-how-to"></a>

您只能为 Amazon S3 位置之间的传输、在没有代理的情况下在 Amazon S3 之间Azure Blob进行传输、在没有代理的情况下在其他云和 Amazon S3 之间传输以及使用增强模式代理在 NFS 或 SMB 文件服务器与 Amazon S3 之间的传输选择增强模式。否则，必须使用基本模式。例如，从本地 [HDFS 位置](create-hdfs-location.md)传输到 S3 位置需要基本模式。

根据所选择的任务模式，任务选项和性能可能有所不同。一旦创建任务后，就无法更改任务模式。

**所需的权限**  
要创建增强模式任务，与之 DataSync 配合使用的 IAM 角色必须具有`iam:CreateServiceLinkedRole`权限。  
要获得 DataSync 用户权限，请考虑使用[AWSDataSyncFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-awsdatasyncfullaccess)。这是一项 AWS 托管策略，可为用户提供对其依赖项的完全访问权限 DataSync 和最少访问权限。

### 使用控制 DataSync 台
<a name="choosing-task-mode-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. 对于**任务模式**，请选择下列选项之一：
   + **增强型**
   + **基本**

   有关更多信息，请参阅 [了解任务模式的差异](#task-mode-differences)。

1. 同样在**配置设置**页面，选择其他任务选项，或使用默认设置。

   您可能对以下一些选项感兴趣：
   + 使用[清单](transferring-with-manifest.md)或[筛选条件](filtering.md)指定要传输的数据。
   + 配置如何[处理文件元数据](configure-metadata.md)和[验证数据完整性](configure-data-verification-options.md)。
   + 使用[任务报告](task-reports.md)或 [Amazon CloudWatch 日志](monitor-datasync.md)监控您的转账。

   完成此操作后，选择**下一步**。

1. 检查任务配置，然后选择**创建任务**。

### 使用 AWS CLI
<a name="choosing-task-mode-cli"></a>

1. 在你的 AWS CLI 设置中，确保你使用的是你计划传输数据的 AWS 区域 位置之一。

1. 复制以下 `create-task` 命令：

   ```
   aws datasync create-task \
     --source-location-arn "arn:aws:datasync:us-east-1:account-id:location/location-id" \
     --destination-location-arn "arn:aws:datasync:us-east-1:account-id:location/location-id" \
     --task-mode "ENHANCED-or-BASIC"
   ```

1. 对于 `--source-location-arn`，指定源位置的 Amazon 资源名称（ARN）。

1. 对于 `--destination-location-arn`，指定目标位置的 ARN。

   如果您要跨 AWS 区域 账户转账，请确保 ARN 包含其他地区或账户 ID。

1. 对于 `--task-mode`，指定 `ENHANCED` 或 `BASIC`。

   有关更多信息，请参阅 [了解任务模式的差异](#task-mode-differences)。

1. 根据需要指定其他任务选项。您可能对以下一些选项感兴趣：
   + 使用[清单](transferring-with-manifest.md)或[筛选条件](filtering.md)指定要传输的数据。
   + 配置如何[处理文件元数据](configure-metadata.md)和[验证数据完整性](configure-data-verification-options.md)。
   + 使用[任务报告](task-reports.md)或 [Amazon CloudWatch 日志](monitor-datasync.md)监控您的转账。

   有关更多选项，请参阅 [create-task](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/datasync/create-task.html)。以下是指定了增强模式和其他多个选项的 `create-task` 命令示例：

   ```
   aws datasync create-task \
     --source-location-arn "arn:aws:datasync:us-east-1:account-id:location/location-id" \
     --destination-location-arn "arn:aws:datasync:us-east-1:account-id:location/location-id" \
     --name "task-name" \
     --task-mode "ENHANCED" \
     --options TransferMode=CHANGED,VerifyMode=ONLY_FILES_TRANSFERRED,ObjectTags=PRESERVE,LogLevel=TRANSFER
   ```

1. 运行 `create-task` 命令。

   如果命令成功，您将收到一条响应，显示所创建任务的 ARN。例如：

   ```
   { 
       "TaskArn": "arn:aws:datasync:us-east-1:111222333444:task/task-08de6e6697796f026" 
   }
   ```

### 使用 DataSync API
<a name="choosing-task-mode-api"></a>

您可以通过在[CreateTask](https://docs.aws.amazon.com/datasync/latest/userguide/API_CreateTask.html)操作中配置`TaskMode`参数来指定 DataSync 任务模式。

# 选择什么 AWS DataSync 转账
<a name="task-options"></a>

AWS DataSync 允许您选择要传输的内容以及如何处理数据。一些选项包括：
+ 使用清单传输确切的文件或对象列表。
+ 使用筛选条件在传输中包含或排除某些类型的数据。
+ 对于周期性传输，仅移动自上次传输以来发生变化的数据
+ 覆盖目标位置的数据，使其与源位置中的数据匹配。
+ 选择要在存储位置之间保留的文件或对象元数据。

**Topics**
+ [使用清单传输特定的文件或对象](transferring-with-manifest.md)
+ [使用筛选条件传输特定文件、对象和文件夹](filtering.md)
+ [了解如何 DataSync 处理文件和对象元数据](metadata-copied.md)
+ [由复制的链接和目录 AWS DataSync](special-files-copied.md)
+ [配置文件、对象和元数据的处理方式](configure-metadata.md)

# 使用清单传输特定的文件或对象
<a name="transferring-with-manifest"></a>

*清单*是您要传输的文件或对象 AWS DataSync 的列表。例如，不必传输可能包含数百万个对象的 S3 存储桶中的所有内容，而是只 DataSync 传输您在清单中列出的对象。

清单与[筛选条件](filtering.md)类似，但清单可让您准确确定要传输的文件或对象，而不是符合筛选模式的数据。

**注意**  
增强模式任务清单文件允许的最大大小为 20 GB。

## 创建清单
<a name="transferring-with-manifest-create"></a>

清单是逗号分隔值 (CSV) 格式的文件，它列出了源位置中要 DataSync 传输的文件或对象。如果源位置是 S3 存储桶，您还可以包含要传输的对象版本。

**Topics**
+ [指南要求](#transferring-with-manifest-guidelines)
+ [示例清单](#manifest-examples)

### 指南要求
<a name="transferring-with-manifest-guidelines"></a>

使用这些指南来帮助您创建适用于的清单 DataSync。

------
#### [ Do ]
+ 指定要传输的每个文件或对象的完整路径。

  您不能只指定一个目录或文件夹，然后希望传输其中的所有内容。对于这种情况，请考虑使用[包含筛选条件](filtering.md)，而不是清单。
+ 确保每个文件或对象路径都与您在配置 DataSync 源位置时指定的挂载路径、文件夹、目录或前缀相关。

  例如，假设您[配置了一个 S3 位置](create-s3-location.md#create-s3-location-how-to)，其前缀名为 `photos`。该前缀包括一个要传输的对象 `my-picture.png`。然后，在清单中，您只需要指定对象（`my-picture.png`），而不是前缀和对象（`photos/my-picture.png`）。
+ 要指定 Amazon S3 对象版本 IDs，请使用逗号分隔对象的路径和版本 ID。

  下面的示例展示了包含两个字段的清单条目。第一个字段包含一个名为 `picture1.png` 的对象。第二个字段用逗号分隔，包含版本 ID `111111`：

  ```
  picture1.png,111111
  ```
+ 在以下情况下使用引号：
  + 当路径包含特殊字符（逗号、引号和行尾）时：

    `"filename,with,commas.txt"`
  + 当路径跨越多行时：

    ```
    "this
    is
    a
    filename.txt"
    ```
  + 当路径包含引号时：

    `filename""with""quotes.txt`

    这表示名为 `filename"with"quotes.txt` 的路径。

  这些引号规则也适用于版本 ID 字段。通常，如果清单字段有引号，必须使用另一个引号将其转义。
+ 用新行分隔每个文件或对象条目。

  您可以使用 Linux 风格的换行（换行符或回车符）或 Windows 风格的换行（回车符后跟换行符）来分隔行。
+ 保存您的清单（例如，`my-manifest.csv` 或 `my-manifest.txt`）。
+ 将清单上传到[DataSync 可以访问](#transferring-with-manifest-access)的 S3 存储桶。

  此存储桶不必位于您正在使用的同一个 AWS 区域 或账户中 DataSync。

------
#### [ Don't ]
+ 只指定一个目录或文件夹，然后希望传输其中的所有内容。

  清单只能包含要传输的文件或对象的完整路径。如果您将源位置配置为使用特定的挂载路径、文件夹、目录或前缀，您不必在清单中包含这些内容。
+ 指定超过 4096 个字符的文件或对象路径。
+ 指定超过 1024 字节的文件路径、对象路径或 Amazon S3 对象版本 ID。
+ 指定重复的文件或对象路径。
+ 包含对象版本 ID（如果您的源位置不是 S3 存储桶）。
+ 在一个清单条目中包含两个以上的字段。

  一个条目只能包含一个文件或对象路径，以及一个 Amazon S3 对象版本 ID（如适用）。
+ 包含不符合 UTF-8 编码的字符。
+ 在条目字段中，在引号外包含非预期的空格。

------

### 示例清单
<a name="manifest-examples"></a>

使用这些示例来帮助您创建适用于的清单 DataSync。

**包含完整文件或对象路径的清单**  
下面的示例展示了带有完整文件或对象传输路径的清单。  

```
photos/picture1.png
photos/picture2.png
photos/picture3.png
```

**仅包含对象键的清单**  
下面的示例展示了一份清单，其中列出了要从 Amazon S3 源位置传输的对象。由于[位置已配置](create-s3-location.md#create-s3-location-how-to)了前缀 `photos`，因此仅指定了对象键。  

```
picture1.png
picture2.png
picture3.png
```

**包含对象路径和版本的清单 IDs**  
以下清单示例中的前两个条目包括要传输的特定 Amazon S3 对象版本。  

```
photos/picture1.png,111111
photos/picture2.png,121212
photos/picture3.png
```

**包含 UTF-8 字符的清单**  
以下示例展示了包含 UTF-8 字符的文件清单。  

```
documents/résumé1.pdf
documents/résumé2.pdf
documents/résumé3.pdf
```

## 提供对清单的 DataSync 访问权限
<a name="transferring-with-manifest-access"></a>

您需要一个 AWS Identity and Access Management (IAM) 角色来授予对其 S3 存储桶中清单的 DataSync 访问权限。此角色必须包括以下权限：
+ `s3:GetObject`
+ `s3:GetObjectVersion`

您可以在 DataSync 控制台中自动生成此角色，也可以自己创建该角色。

**注意**  
如果您的清单位于不同的清单中 AWS 账户，则必须手动创建此角色。

### 自动创建 IAM 角色
<a name="creating-manfiest-role-automatically"></a>

在控制台中创建或启动转移任务时， DataSync 可以为您创建一个 IAM 角色，该角色具有访问清单所需的`s3:GetObject`和`s3:GetObjectVersion`权限。

**自动创建角色所需的权限**  
要自动创建角色，请确保您用于访问 DataSync 控制台的角色具有以下权限：  
+ `iam:CreateRole`
+ `iam:CreatePolicy`
+ `iam:AttachRolePolicy`

### 创建 IAM 角色（同一账户）
<a name="creating-manfiest-role-automatically-same-account"></a>

您可以手动创建访问清单 DataSync 所需的 IAM 角色。以下说明假设您 AWS 账户 所在的使用位置相同， DataSync 并且清单的 S3 存储桶位于同一位置。

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在左侧导航窗格的**访问管理**下，选择**角色**，然后选择**创建角色**。

1. 在**选择可信实体**页面中，为**可信实体类型**选择 **AWS 服务**。

1. 对于 “**用例**”，**DataSync**在下拉列表中进行选择，然后选择**DataSync**。选择**下一步**。

1. 在**添加权限**页面上，选择**下一步**。输入角色名称，然后选择**创建角色**。

1. 在**角色**页面上，搜索您刚刚创建的角色并选择其名称。

1. 在角色的详情页面上，选择**权限**选项卡。选择**添加权限**，然后选择**创建内联策略**。

1. 选择 **JSON** 选项卡，然后将以下示例策略粘贴到策略编辑器中：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [{
           "Sid": "DataSyncAccessManifest",
           "Effect": "Allow",
           "Action": [
               "s3:GetObject",
               "s3:GetObjectVersion"
           ],
           "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/my-manifest.csv"
       }]
   }
   ```

------

1. 在刚才粘贴的示例策略中，将以下值替换为您自己的值：

   1. 将 `amzn-s3-demo-bucket` 替换为托管清单的 S3 存储桶名称。

   1. 将 `my-manifest.csv` 替换为清单的文件名称。

1. 选择**下一步**。为您的策略输入名称，然后选择**创建策略**。

1. （推荐）为防止出现[跨服务混淆代理问题](cross-service-confused-deputy-prevention.md)，请执行以下操作：

   1. 在角色的详情页面上，选择**信任关系**选项卡。选择**编辑信任策略**。

   1. 使用以下示例更新信任策略，其中包括 `aws:SourceArn` 和 `aws:SourceAccount` 全局条件上下文键：

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
            {
              "Effect": "Allow",
              "Principal": {
                  "Service": "datasync.amazonaws.com"
              },
              "Action": "sts:AssumeRole",
              "Condition": {
                  "StringEquals": {
                  "aws:SourceAccount": "555555555555"
                  },
                  "ArnLike": {
                  "aws:SourceArn": "arn:aws:datasync:us-east-1:555555555555:*"
                  }
              }
            }
        ]
      }
      ```

------
      + 将每个实例`account-id`替换为您正在使用的 AWS 账户 ID DataSync。
      + `region`替换为你正在使用 AWS 区域 的地方 DataSync。

   1. 选择**更新策略**。

您已经创建了一个允许 DataSync 访问清单的 IAM 角色。在[创建](#manifest-creating-task)或[启动](#manifest-starting-task)任务时指定此角色。

### 创建 IAM 角色（不同账户）
<a name="creating-manfiest-role-automatically-different-account"></a>

如果您的清单位于属于不同的 S3 存储桶中 AWS 账户，则必须手动创建 DataSync 用于访问清单的 IAM 角色。然后，在清单 AWS 账户 所在的位置中，您需要在 S3 存储桶策略中包含该角色。

#### 创建角色
<a name="creating-manfiest-role-automatically-different-account-1"></a>

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在左侧导航窗格的**访问管理**下，选择**角色**，然后选择**创建角色**。

1. 在**选择可信实体**页面中，为**可信实体类型**选择 **AWS 服务**。

1. 对于 “**用例**”，**DataSync**在下拉列表中进行选择，然后选择**DataSync**。选择**下一步**。

1. 在**添加权限**页面上，选择**下一步**。输入角色名称，然后选择**创建角色**。

1. 在**角色**页面上，搜索您刚刚创建的角色并选择其名称。

1. 在角色的详情页面上，选择**权限**选项卡。选择**添加权限**，然后选择**创建内联策略**。

1. 选择 **JSON** 选项卡，然后将以下示例策略粘贴到策略编辑器中：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [{
           "Sid": "DataSyncAccessManifest",
           "Effect": "Allow",
           "Action": [
               "s3:GetObject",
               "s3:GetObjectVersion"
           ],
           "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/my-manifest.csv"
       }]
   }
   ```

------

1. 在刚才粘贴的示例策略中，将以下值替换为您自己的值：

   1. 将 `amzn-s3-demo-bucket` 替换为托管清单的 S3 存储桶名称。

   1. 将 `my-manifest.csv` 替换为清单的文件名称。

1. 选择**下一步**。为您的策略输入名称，然后选择**创建策略**。

1. （推荐）为防止出现[跨服务混淆代理问题](cross-service-confused-deputy-prevention.md)，请执行以下操作：

   1. 在角色的详情页面上，选择**信任关系**选项卡。选择**编辑信任策略**。

   1. 使用以下示例更新信任策略，其中包括 `aws:SourceArn` 和 `aws:SourceAccount` 全局条件上下文键：

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
            {
              "Effect": "Allow",
              "Principal": {
                  "Service": "datasync.amazonaws.com"
              },
              "Action": "sts:AssumeRole",
              "Condition": {
                  "StringEquals": {
                  "aws:SourceAccount": "000000000000"
                  },
                  "ArnLike": {
                  "aws:SourceArn": "arn:aws:datasync:us-east-1:000000000000:*"
                  }
              }
           }
        ]
      }
      ```

------
      + 将的`account-id`每个实例替换为您正在使用的 AWS 账户 ID DataSync。
      + `region`替换为你正在使用 AWS 区域 的地方 DataSync。

   1. 选择**更新策略**。

您创建了可以包含在 S3 存储桶策略中的 IAM 角色。

#### 更新 S3 存储桶策略以包含角色
<a name="creating-manfiest-role-automatically-different-account-2"></a>

创建 IAM 角色后，必须将其添加到清单 AWS 账户 所在的另一个存储桶策略中的 S3 存储桶策略中。

1. 在中 AWS 管理控制台，切换到包含你的 manfiest 的 S3 存储桶的账户。

1. 打开 Amazon S3 控制台，网址为 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在存储桶的详情页面上，选择**权限**选项卡。

1. 在 **存储桶策略**下，选择 **编辑**并执行以下操作来修改您的 S3 存储桶策略：

   1. 更新编辑器中的内容，以包含以下策略声明：

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Sid": "DataSyncAccessManifestBucket",
            "Effect": "Allow",
            "Action": [
              "s3:GetObject",
              "s3:GetObjectVersion"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
          }
        ]
      }
      ```

------

   1. `account-id`替换为您正在使用的账户 DataSync 的 AWS 账户 ID。

   1. `datasync-role`替换为您刚刚创建的 DataSync 允许访问清单的 IAM 角色。

   1. 将 `amzn-s3-demo-bucket` 替换为在其他 AWS 账户中托管清单的 S3 存储桶名称。

1. 选择**保存更改**。

您已经创建了一个 IAM 角色， DataSync 允许您在其他账户中访问您的清单。在[创建](#manifest-creating-task)或[启动](#manifest-starting-task)任务时指定此角色。

## 在创建任务时指定清单
<a name="manifest-creating-task"></a>

您可以指定 DataSync 要在创建任务时使用的清单。

### 使用控制 DataSync 台
<a name="manifest-creating-task-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. 对于 **S3 URI**，请选择托管在 S3 存储桶上的清单。

   或者，您也可以输入 URI（例如，`s3://bucket/prefix/my-manifest.csv`）。

1. 对于**对象版本**，请选择 DataSync 要使用的清单版本。

   默认情况下， DataSync 使用对象的最新版本。

1. 对于**清单访问角色**，执行下列操作之一：
   + 选择 “**自动生成**” DataSync 以自动创建一个 IAM 角色，该角色具有访问其 S3 存储桶中的清单所需的权限。
   + 选择可以访问清单的现有 IAM 角色。

   有关更多信息，请参阅 [提供对清单的 DataSync 访问权限](#transferring-with-manifest-access)。

1. 配置所需的任何其他任务设置，然后选择**下一步**。

1. 选择**创建任务**。

### 使用 AWS CLI
<a name="manifest-creating-task-cli"></a>

1. 复制以下 `create-task` 命令：

   ```
   aws datasync create-task \
     --source-location-arn arn:aws:datasync:us-east-1:123456789012:location/loc-12345678abcdefgh \
     --destination-location-arn arn:aws:datasync:us-east-1:123456789012:location/loc-abcdefgh12345678 \
     --manifest-config {
         "Source": {
           "S3": {
               "ManifestObjectPath": "s3-object-key-of-manifest",
               "BucketAccessRoleArn": "bucket-iam-role",
               "S3BucketArn": "amzn-s3-demo-bucket-arn",
               "ManifestObjectVersionId": "manifest-version-to-use" 
           }
         }
     }
   ```

1. 对于 `--source-location-arn` 参数，指定数据传输源位置的 Amazon 资源名称（ARN）。

1. 对于 `--destination-location-arn` 参数，指定数据传输目标位置的 ARN。

1. 对于 `--manifest-config` 参数，请执行以下操作：
   + `ManifestObjectPath`：指定清单的 S3 对象键。
   + `BucketAccessRoleArn`— 指定允许 DataSync 访问其 S3 存储桶中的清单的 IAM 角色。

     有关更多信息，请参阅 [提供对清单的 DataSync 访问权限](#transferring-with-manifest-access)。
   + `S3BucketArn`：指定托管清单的 S3 存储桶的 ARN。
   + `ManifestObjectVersionId`— 指定 DataSync 要使用的清单版本。

     默认情况下， DataSync 使用对象的最新版本。

1. 运行 `create-task` 命令来创建您的任务。

准备就绪后，您可以[启动传输任务](run-task.md)。

## 在启动任务时指定清单
<a name="manifest-starting-task"></a>

您可以指定 DataSync 要在执行任务时使用的清单。

### 使用控制 DataSync 台
<a name="manifest-starting-task-console"></a>

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

1. 在左侧导航窗格中，选择**任务**，然后选择要启动的任务。

1. 在任务概览页面，选择**开始**，然后选择**使用覆盖选项开始**。

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

1. 对于 **S3 URI**，请选择托管在 S3 存储桶上的清单。

   或者，您也可以输入 URI（例如，`s3://bucket/prefix/my-manifest.csv`）。

1. 对于**对象版本**，请选择 DataSync 要使用的清单版本。

   默认情况下， DataSync 使用对象的最新版本。

1. 对于**清单访问角色**，执行下列操作之一：
   + 选择 “**自动生成**” DataSync 以自动创建 IAM 角色来访问其 S3 存储桶中的清单。
   + 选择可以访问清单的现有 IAM 角色。

   有关更多信息，请参阅 [提供对清单的 DataSync 访问权限](#transferring-with-manifest-access)。

1. 选择**开始**，以开始传输。

### 使用 AWS CLI
<a name="manifest-starting-task-cli"></a>

1. 复制以下 `start-task-execution` 命令：

   ```
   aws datasync start-task-execution \
     --task-arn arn:aws:datasync:us-east-1:123456789012:task/task-12345678abcdefgh \
     --manifest-config {
         "Source": {
           "S3": {
               "ManifestObjectPath": "s3-object-key-of-manifest",
               "BucketAccessRoleArn": "bucket-iam-role",
               "S3BucketArn": "amzn-s3-demo-bucket-arn",
               "ManifestObjectVersionId": "manifest-version-to-use" 
           }
         }
     }
   ```

1. 对于 `--task-arn` 参数，请指定要启动的任务的 Amazon 资源名称（ARN）。

1. 对于 `--manifest-config` 参数，请执行以下操作：
   + `ManifestObjectPath`：指定清单的 S3 对象键。
   + `BucketAccessRoleArn`— 指定允许 DataSync 访问其 S3 存储桶中的清单的 IAM 角色。

     有关更多信息，请参阅 [提供对清单的 DataSync 访问权限](#transferring-with-manifest-access)。
   + `S3BucketArn`：指定托管清单的 S3 存储桶的 ARN。
   + `ManifestObjectVersionId`— 指定 DataSync 要使用的清单版本。

     默认情况下， DataSync 使用对象的最新版本。

1. 运行 `start-task-execution` 命令开始传输。

## 限制
<a name="transferring-with-manifest-limitations"></a>
+ 您不能将清单与[筛选条件](filtering.md)一起使用。
+ 您不能只指定一个目录或文件夹，然后希望传输其中的所有内容。对于这种情况，请考虑使用[包含筛选条件](filtering.md)，而不是清单。
+ 您不能使用 “**保留已删除文件**” 任务选项（`PreserveDeletedFiles`在 [API](https://docs.aws.amazon.com/datasync/latest/userguide/API_Options.html#DataSync-Type-Options-PreserveDeletedFiles) 中）来[维护目标中不在源中的文件或对象](configure-metadata.md)。 DataSync 仅传输清单中列出的内容，不会删除目的地中的任何内容。

## 问题排查
<a name="manifests-troubleshooting"></a>

**与 `HeadObject` 或 `GetObjectTagging` 相关的错误**  
如果您要 IDs 从 S3 存储桶传输具有特定版本的对象，则可能会看到与`HeadObject`或相关的错误`GetObjectTagging`。例如，以下是与 `GetObjectTagging` 相关的错误：

```
[WARN] Failed to read metadata for file /picture1.png (versionId: 111111): S3 Get Object Tagging Failed
[ERROR] S3 Exception: op=GetObjectTagging photos/picture1.png, code=403, type=15, exception=AccessDenied, 
msg=Access Denied req-hdrs: content-type=application/xml, x-amz-api-version=2006-03-01 rsp-hdrs: content-type=application/xml, 
date=Wed, 07 Feb 2024 20:16:14 GMT, server=AmazonS3, transfer-encoding=chunked, 
x-amz-id-2=IOWQ4fDEXAMPLEQM+ey7N9WgVhSnQ6JEXAMPLEZb7hSQDASK+Jd1vEXAMPLEa3Km, x-amz-request-id=79104EXAMPLEB723
```

如果您看到其中任何一个错误，请验证用于访问您的 DataSync S3 源位置的 IAM 角色是否具有以下权限：
+ `s3:GetObjectVersion`
+ `s3:GetObjectVersionTagging`

如果您需要更新角色，使其具有这些权限，请参阅 [为创建 IAM 角色 DataSync 以访问您的 Amazon S3 位置](create-s3-location.md#create-role-manually)。

**错误：`ManifestFileDoesNotExist`**  
此错误表示在源中找不到清单中的文件。查看创建清单的[指南](#transferring-with-manifest-guidelines)。

## 后续步骤
<a name="manifests-next-steps"></a>

如果尚未开始，请[启动任务](run-task.md)。否则，[请监视任务的活动](monitoring-overview.md)。

# 使用筛选条件传输特定文件、对象和文件夹
<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'
```

# 了解如何 DataSync 处理文件和对象元数据
<a name="metadata-copied"></a>

AWS DataSync 可以在数据传输期间保留您的文件或对象元数据。如何复制元数据取决于您的传输位置以及这些位置是否使用类似类型的元数据。

## 系统级元数据
<a name="metadata-copied-system-level"></a>

通常， DataSync 不会复制系统级元数据。例如，从 SMB 文件服务器传输时，您在文件系统级别配置的权限不会复制到目标存储系统。

有一些例外。在 Amazon S3 和其他对象存储之间传输时， DataSync 会复制一些[系统定义的对象元数据](#metadata-copied-between-object-s3)。

## 在 Amazon S3 传输中复制的元数据
<a name="metadata-copied-amazon-s3"></a>

下表描述了当传输涉及 Amazon S3 位置时 DataSync 可以复制哪些元数据。

**Topics**
+ [到 Amazon S3](#metadata-copied-to-s3)
+ [在 Amazon S3 和其他对象存储之间](#metadata-copied-between-object-s3)
+ [在 Amazon S3 和 HDFS 之间](#metadata-copied-between-hdfs-s3)

### 到 Amazon S3
<a name="metadata-copied-to-s3"></a>


| 从其中一个位置复制时 | 到此位置 | DataSync 可以复制 | 
| --- | --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/metadata-copied.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/metadata-copied.html)  |  以下是 Amazon S3 用户元数据： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/metadata-copied.html) 存储在 Amazon S3 用户元数据中的文件元数据可使用 AWS Storage Gateway与文件网关上 NFS 共享互操作。文件网关支持从本地网络对复制到 Amazon S3 的数据进行低延迟访问。 DataSync此元数据也可以与 Lustre 互操作 FSx 。 将包含此元数据的对象 DataSync 复制回 NFS 服务器时，文件元数据将被恢复。还原元数据要求向 NFS 服务器授予提升的权限。有关更多信息，请参阅 [使用 NFS 文件服务器配置 AWS DataSync 传输](create-nfs-location.md)。  | 

### 在 Amazon S3 和其他对象存储之间
<a name="metadata-copied-between-object-s3"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/metadata-copied.html)

### 在 Amazon S3 和 HDFS 之间
<a name="metadata-copied-between-hdfs-s3"></a>


| 在这些位置之间复制时 | DataSync 可以复制 | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/metadata-copied.html)  | 以下是 Amazon S3 用户元数据：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/metadata-copied.html)HDFS 使用字符串来存储文件和文件夹的用户和群组所有权，而不是数字标识符，例如 UIDs 和 GIDs。 | 

## 在 NFS 传输中复制的元数据
<a name="metadata-copied-nfs"></a>

下表描述了 DataSync 可以在使用网络文件系统 (NFS) 的位置之间复制哪些元数据。


| 在这些位置之间复制时 | DataSync 可以复制 | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/metadata-copied.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/metadata-copied.html)  | 

## 在 SMB 传输中复制的元数据
<a name="metadata-copied-smb"></a>

下表描述了 DataSync 可以在使用服务器消息块 (SMB) 的位置之间复制哪些元数据。


| 在这些位置之间复制时 | DataSync 可以复制 | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/metadata-copied.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/metadata-copied.html)  | 

## 在其他传输场景中复制的元数据
<a name="metadata-copied-different"></a>

DataSync 在这些存储系统（其中大多数具有不同的元数据结构）之间进行复制时，使用以下方式处理元数据。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/metadata-copied.html)

## 了解何时以及如何 DataSync 应用默认 POSIX 元数据
<a name="POSIX-metadata"></a>

DataSync 在以下情况下应用默认 POSIX 元数据：
+ 当传输的源位置和目标位置不具有类似的元数据结构时
+ 当源位置缺少元数据时

下表描述了在这些类型的传输期间如何 DataSync 应用默认 POSIX 元数据：


| 来源 | 目标位置 | 文件权限 | 文件夹权限 | UID | GID | 
| --- | --- | --- | --- | --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/metadata-copied.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/metadata-copied.html)  |  0755  | 0755 |  65534  |  65534  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/metadata-copied.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/metadata-copied.html)  |  0644  |  0755  |  65534  |  65534  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/metadata-copied.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/metadata-copied.html)  |  0644  |  0755  |  65534  |  65534  | 

1 如果对象没有先前应用的元数据 DataSync。

# 由复制的链接和目录 AWS DataSync
<a name="special-files-copied"></a>

AWS DataSync 根据传输中涉及的存储位置，硬链接、符号链接和目录的处理方式会有所不同。

## 硬链接
<a name="special-files-copied-hard-links"></a>

以下是在一些常见的传输场景中 DataSync 处理硬链接的方法：
+ 在 **NFS 文件服务器、Lustre、 FSx OpenZFS、 FSx FSx ONTAP（使用 NFS）和 Amazon EFS 之间传输时，**会保留硬链接。
+ **传输到 Amazon S3 时**，硬链接引用的每个底层文件仅传输一次。在增量传输期间，将在您的 S3 存储桶中创建单独的对象。如果 Amazon S3 中的硬链接未更改，则在传输到 NFS 文件服务器、Lustre、OpenZFS、 FSx ONTAP（使用 NFS）或 Amazon EFS 文件系统时，硬链接会正确恢复。 FSx FSx 
+ **传输到 Microsoft Azure Blob Storage 时**，硬链接引用的每个底层文件仅传输一次。在增量传输期间，如果源中有新的引用，则会在您的 blob 存储中创建单独的对象。从中传输时Azure Blob Storage，将硬链接当作单个文件进行 DataSync 传输。
+ 在 **SMB 文件服务器、 FSx Windows 文件服务器和 FSx ONTAP（使用 SMB）之间传输时**，不支持硬链接。如果在这些情况下 DataSync 遇到硬链接，则传输任务完成时会出现错误。要了解更多信息，请查看您的 CloudWatch 日志。
+ **传输到 HDFS 时**，不支持硬链接。 CloudWatch 日志显示这些链接已跳过。

## 符号链接
<a name="special-files-copied-symbolic-links"></a>

以下是在一些常见的传输场景中如何 DataSync 处理符号链接：
+ 在 **NFS 文件服务器、Lustre、 FSx OpenZFS、 FSx ONTAP（使用 NFS）和 Amazon EFS 之间传输时，符号链接**会保留。 FSx 
+ **在传输到 Amazon S3 时**，链接目标路径将存储在 Amazon S3 对象中。在传输到 NFS 文件服务器、Lustre、OpenZFS、 FSx ONTAP 或 Amazon EFS 文件系统时， FSx 链接可以正确恢复。 FSx 
+ **传输到时 Azure Blob Storage**，不支持符号链接。 CloudWatch 日志显示这些链接已跳过。
+ 在 **SMB 文件服务器、 FSx Windows 文件服务器和 FSx ONTAP（使用 SMB）之间传输时**，不支持符号链接。 DataSync 不会传输符号链接本身，而是传输符号链接引用的文件。要识别重复文件并使用符号链接去重，您必须在目标文件系统上配置去重。
+ **传输到 HDFS 时**，不支持符号链接。 CloudWatch 日志显示这些链接已跳过。

## 目录
<a name="special-files-copied-directories"></a>

通常，在存储系统之间传输时会 DataSync 保留目录。以下情况并非如此：
+ **传输到 Amazon S3 时**，目录表示为带有前缀的空对象，并以正斜杠（`/`）结尾。
+ **在传输到没有分层名称空间的 Azure Blob Storage 时**，目录不存在。看起来像目录的内容只是对象名称的一部分。

# 配置文件、对象和元数据的处理方式
<a name="configure-metadata"></a>

您可以配置在不同位置之间传输时如何 AWS DataSync 处理文件、对象及其关联的元数据。

例如，对于定期传输，您可能希望使用源中的更改覆盖目标中的文件，以保持位置同步。您可以复制诸如文件和文件夹的 POSIX 权限、与对象关联的标签以及访问控制列表 (ACLs) 之类的属性。

## 传输模式选项
<a name="task-option-transfer-mode"></a>

您可以配置是仅 DataSync 传输初始副本后更改的数据（包括元数据），还是每次运行任务时传输所有数据。如果计划进行定期传输，则可能仅需要传输自上次执行任务以来发生更改的内容。


| 控制台中的选项 | API 中的选项 | 说明 | 
| --- | --- | --- | 
|  **仅传输更改的数据**  |  [TransferMode](https://docs.aws.amazon.com/datasync/latest/userguide/API_Options.html#DataSync-Type-Options-TransferMode) 设置为 `CHANGED`  | 初次完全传输后，仅 DataSync 复制源位置和目标位置不同的数据和元数据。 | 
|  **传输所有数据**  |  [TransferMode](https://docs.aws.amazon.com/datasync/latest/userguide/API_Options.html#DataSync-Type-Options-TransferMode) 设置为 `ALL`  |  DataSync 将源中的所有内容复制到目的地，而不比较位置之间的差异。  | 

## 文件和对象处理选项
<a name="task-option-file-object-handling"></a>

您可以控制如何 DataSync 处理目标位置中的文件或对象的某些方面。例如， DataSync 可以删除目标中不在源中的文件。


| 控制台中的选项 | API 中的选项 | 说明 | 
| --- | --- | --- | 
|  **保留已删除数据**  |  [PreserveDeletedFiles](https://docs.aws.amazon.com/datasync/latest/userguide/API_Options.html#DataSync-Type-Options-PreserveDeletedFiles)  |  指定是否在目标位置 DataSync 维护源中不存在的文件或对象。 如果将任务配置为从 Amazon S3 存储桶中删除对象，则可能会为某些存储类产生最低存储持续时间费用。有关详细信息，请参阅 [Amazon S3 传输的存储类别注意事项](create-s3-location.md#using-storage-classes)。  无法将任务配置为删除目标中的数据，同时又[传输所有数据](#task-option-transfer-mode)。当您传输所有数据时， DataSync不会扫描您的目标位置，也不知道要删除什么。   | 
|  **覆盖文件**  |  [OverwriteMode](https://docs.aws.amazon.com/datasync/latest/userguide/API_Options.html#DataSync-Type-Options-OverwriteMode)  |  指定在源数据或元数据发生更改时是否 DataSync 修改目标位置的数据。如果未将任务配置为覆盖数据，即使源数据不同，目标数据也不会覆盖。 如果您的任务覆盖对象，则您可能需要为某些存储类别（例如检索或提前删除）支付额外费用。有关详细信息，请参阅 [Amazon S3 传输的存储类别注意事项](create-s3-location.md#using-storage-classes)。  | 

## 元数据处理选项
<a name="task-option-metadata-handling"></a>

DataSync 可以在传输过程中保留文件和对象的元数据。 DataSync 可以保留的元数据取决于所涉及的存储系统以及这些系统是否使用类似的元数据结构。

在配置任务之前，请务必了解在源位置和目标位置之间传输时如何 DataSync 处理[元数据](metadata-copied.md)和[特殊文件](special-files-copied.md)。

**重要**  
DataSync 支持与某些第三方云存储系统（例如 Google Cloud Storage 和 IBM Cloud Object Storage）之间的传输，这些系统以不完全兼容 S3 的方式处理系统元数据。对于这些传 DataSync 输，会尽力复制元数据属性 `ContentType` `ContentEncoding``ContentLanguage`，例如、、和`CacheControl`。如果目标存储系统未应用这些属性，则在任务验证过程中会将其忽略。


| 控制台中的选项 | API 中的选项 | 说明 | 
| --- | --- | --- | 
|  **副本所有权**  | [https://docs.aws.amazon.com/datasync/latest/userguide/API_Options.html#DataSync-Type-Options-Gid](https://docs.aws.amazon.com/datasync/latest/userguide/API_Options.html#DataSync-Type-Options-Gid) |  指定是否 DataSync 复制 POSIX 文件和文件夹所有权，例如文件所有者的组 ID 和文件所有者的用户 ID。  | 
|  **复制权限**  | [PosixPermissions](https://docs.aws.amazon.com/datasync/latest/userguide/API_Options.html#DataSync-Type-Options-PosixPermissions) |  指定是否 DataSync 将文件和文件夹的 POSIX 权限从源复制到目标。  | 
| 复制时间戳 | [Atime](https://docs.aws.amazon.com/datasync/latest/userguide/API_Options.html#DataSync-Type-Options-Atime) 和 [Mtime](https://docs.aws.amazon.com/datasync/latest/userguide/API_Options.html#DataSync-Type-Options-Mtime) |  指定是否 DataSync 将时间戳元数据从源复制到目标。当您需要多次运行任务时，必须使用这些选项。  | 
| 复制对象标签 | [ObjectTags](https://docs.aws.amazon.com/datasync/latest/userguide/API_Options.html#DataSync-Type-Options-ObjectTags) |  指定在对象存储系统之间传输时是否 DataSync 保留与您的对象关联的标签。  | 
| 副本所有权 DACLs、和 SACLs | [SecurityDescriptorCopyFlags ](https://docs.aws.amazon.com/datasync/latest/userguide/API_Options.html#DataSync-Type-Options-SecurityDescriptorCopyFlags) 设置为 OWNER\$1DACL\$1SACL |  DataSync 复制以下内容： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/configure-metadata.html)  | 
| 副本所有权和 DACLs | [SecurityDescriptorCopyFlags ](https://docs.aws.amazon.com/datasync/latest/userguide/API_Options.html#DataSync-Type-Options-SecurityDescriptorCopyFlags) 设置为 OWNER\$1DACL |  DataSync 复制以下内容： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datasync/latest/userguide/configure-metadata.html) DataSync 选择此选项 SACLs 时不会复制。  | 
| 不要复制所有权或 ACLs | [SecurityDescriptorCopyFlags ](https://docs.aws.amazon.com/datasync/latest/userguide/API_Options.html#DataSync-Type-Options-SecurityDescriptorCopyFlags) 设置为 NONE |  DataSync 不复制任何所有权或权限数据。 DataSync 写入目标位置的对象归提供访问目标的凭证 DataSync的用户所有。目标对象权限是根据目标服务器上配置的权限确定的。  | 

## 配置文件、对象和元数据处理选项
<a name="configure-file-metadata-options"></a>

您可以配置在创建、编辑或启动传输任务时如何 DataSync 处理文件、对象和元数据。

### 使用控制 DataSync 台
<a name="configure-metadata-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. 对于**传输方式**，请选择下列选项之一：
   + **仅传输更改的数据**
   + **传输所有数据**

   有关这些选项的详细信息，请参阅[传输模式选项](#task-option-transfer-mode)。

1. 如果 DataSync 要在目标位置维护源中不存在的文件或对象，请选择 “**保留已删除**的文件”。

   如果您不选择此选项，并且您的任务从 Amazon S3 存储桶中删除对象，则可能会为某些存储类产生最低存储持续时间费用。有关详细信息，请参阅 [Amazon S3 传输的存储类别注意事项](create-s3-location.md#using-storage-classes)。
**警告**  
您不能取消选择此选项并启用**传输所有数据**。当您传输所有数据时， DataSync 不会扫描您的目标位置，也不知道要删除什么。

1. 如果 DataSync要在源数据或元数据发生更改时修改目标位置的数据，请选择 “**覆盖文件**”。

   如果您的任务覆盖对象，则您可能需要为某些存储类别（例如检索或提前删除）支付额外费用。有关详细信息，请参阅 [Amazon S3 传输的存储类别注意事项](create-s3-location.md#using-storage-classes)。

   如果不选择此选项，即使源数据不同，目标数据也不会被覆盖。

1. 在 “**传输选项**” 下，选择 DataSync 要如何处理元数据。有关选项的更多信息，请参阅[元数据处理选项](#task-option-metadata-handling)。
**重要**  
控制台中的选项取决于任务的源位置和目标位置。您可能需要展开**其他设置**，才能看到部分选项。
   + **副本所有权**
   + **复制权限**
   + **复制时间戳**
   + **复制对象标签**
   + **副本所有权 DACLs、和 SACLs**
   + **副本所有权和 DACLs**
   + **不要复制所有权或 ACLs**

### 使用 DataSync API
<a name="configure-file-metadata-options-api"></a>

可通过在以下任何操作中使用 `Options` 参数来配置文件、对象和元数据处理选项：
+ [CreateTask](https://docs.aws.amazon.com/datasync/latest/userguide/API_CreateTask.html)
+ [StartTaskExecution](https://docs.aws.amazon.com/datasync/latest/userguide/API_StartTaskExecution.html)
+ [UpdateTask](https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateTask.html)

# 配置如何 AWS DataSync 验证数据完整性
<a name="configure-data-verification-options"></a>

在传输过程中， AWS DataSync 使用校验和验证来验证您在不同位置之间复制的数据的完整性。您还可以配置 DataSync 为在传输结束时执行其他验证。

## 数据验证选项
<a name="data-verification-options"></a>

使用以下信息来帮助您决定是否以及 DataSync 如何执行这些额外检查。


| 控制台选项 | API 选项 | 说明 | 
| --- | --- | --- | 
|  **仅验证传输数据**（推荐）  |  [VerifyMode](https://docs.aws.amazon.com/datasync/latest/userguide/API_Options.html#DataSync-Type-Options-VerifyMode) 设置为 `ONLY_FILES_TRANSFERRED`  |  DataSync 计算源位置传输的数据（包括元数据）的校验和。在传输结束时， DataSync 将此校验和与在目的地根据相同数据计算的校验和进行比较。 在传输到 S3 Glacier Flexible Retrieval 或 S3 Glacier Deep Archive 存储类时，推荐使用此选项。有关更多信息，请参阅 [Amazon S3 传输的存储类别注意事项](create-s3-location.md#using-storage-classes)。  | 
|  **验证所有数据**  |  [VerifyMode](https://docs.aws.amazon.com/datasync/latest/userguide/API_Options.html#DataSync-Type-Options-VerifyMode) 设置为 `POINT_IN_TIME_CONSISTENT`  |  传输结束时， DataSync 检查整个来源和目的地，以验证两个位置是否完全同步。  当任务使用[增强模式](choosing-task-mode.md)时不支持。  如果您使用[清单](transferring-with-manifest.md)，则 DataSync 仅扫描和验证清单中列出的内容。 在传输到 S3 Glacier Flexible Retrieval 或 S3 Glacier Deep Archive 存储类时，不支持此选项。有关更多信息，请参阅 [Amazon S3 传输的存储类别注意事项](create-s3-location.md#using-storage-classes)。  | 
| 传输后不要验证数据 |  [VerifyMode](https://docs.aws.amazon.com/datasync/latest/userguide/API_Options.html#DataSync-Type-Options-VerifyMode) 设置为 `NONE`  | DataSync 仅在传输期间执行数据完整性检查。与其他选项不同，在传输结束时没有额外验证。 | 

## 配置数据验证
<a name="configure-data-verification"></a>

可在创建任务、更新任务或开始执行任务时配置数据验证选项。

### 使用控制 DataSync 台
<a name="configure-data-verification-options-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. 对于**验证**，请选择下列选项之一：
   + **仅验证传输数据**（推荐）
   + **验证所有数据**
   + **传输后不要验证数据**

### 使用 DataSync API
<a name="configure-data-verification-options-api"></a>

您可以通过将`VerifyMode`参数与以下任一操作一起使用来配置 DataSync 验证数据的方式：
+ [CreateTask](https://docs.aws.amazon.com/datasync/latest/userguide/API_CreateTask.html)
+ [UpdateTask](https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateTask.html)
+ [StartTaskExecution](https://docs.aws.amazon.com/datasync/latest/userguide/API_StartTaskExecution.html)

# 为 AWS DataSync 任务设置带宽限制
<a name="configure-bandwidth"></a>

您可以为 AWS DataSync 任务及其每次执行配置网络带宽限制。

## 限制任务带宽
<a name="configure-bandwidth-create"></a>

创建、编辑或启动任务时设置带宽限制。

### 使用控制 DataSync 台
<a name="configure-bandwidth-create-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. 在**带宽限制**中，选择以下选项之一：
   + 选择**使用可用**可将所有可用网络带宽用于每个任务执行。
   + 选择 “**设置带宽限制 (MiB/s)**”，然后输入 DataSync 要用于每次任务执行的最大带宽。

### 使用 DataSync API
<a name="configure-bandwidth-create-api"></a>

您可以通过在以下任何操作中使用 `BytesPerSecond` 参数配置带宽：
+ [CreateTask](https://docs.aws.amazon.com/datasync/latest/userguide/API_CreateTask.html)
+ [UpdateTask](https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateTask.html)
+ [StartTaskExecution](https://docs.aws.amazon.com/datasync/latest/userguide/API_StartTaskExecution.html)

## 限制任务执行带宽
<a name="adjust-bandwidth-throttling"></a>

您可以修改正在运行或排队的任务执行的带宽限制。

### 使用控制 DataSync 台
<a name="adjust-bandwidth-throttling-console"></a>

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

1. 在左侧导航窗格中，展开**数据传输**，然后选择**任务**。

1. 选择任务，然后选择**历史记录**以查看任务的执行情况。

1. 选择要修改的任务执行，然后选择**编辑**。

1. 在对话框中，执行下列操作之一：
   + 选择**使用可用**可将所有可用网络带宽用于任务执行。
   + 选择 “**设置带宽限制 (MiB/s)**”，然后输入 DataSync 要用于执行任务的最大带宽。

1. 选择**保存更改**。

   新的带宽限值将在 60 秒内生效。

### 使用 DataSync API
<a name="adjust-bandwidth-throttling-api"></a>

您可以通过在[UpdateTaskExecution](https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateTaskExecution.html)操作中使用`BytesPerSecond`参数来修改正在运行或排队的任务执行的带宽限制。

# 计划 AWS DataSync 任务的运行时间
<a name="task-scheduling"></a>

您可以设置 AWS DataSync 任务计划，定期在存储位置之间传输数据。

## DataSync 任务计划的工作方式
<a name="how-task-scheduling-works"></a>

计划的 DataSync 任务按您指定的频率运行，最小间隔为 1 小时。您可以使用 cron 或 rate 表达式创建任务计划。

**重要**  
您无法将任务安排为以快于 1 小时的间隔运行。

**使用 cron 表达式**  
对于在特定时间和日期运行的任务计划，请使用 cron 表达式。例如，下面展示了如何在 AWS CLI 中配置任务计划，使其在每周日和周三中午 12:00（UTC 时间）运行。  

```
cron(0 12 ? * SUN,WED *)
```

**使用 rate 表达式**  
对定期运行的任务计划（例如每 12 小时运行一次），请使用 rate 表达式。例如，下面展示了如何在 AWS CLI 中配置任务计划，使其每 12 小时运行一次。  

```
rate(12 hours)
```

**提示**  
有关 cron 和 rate 表达式语法的更多信息，请参阅 [https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-cron-expressions.html](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-cron-expressions.html)。

## 创建 DataSync 任务计划
<a name="configure-task-schedule"></a>

您可以使用 DataSync 控制台、AWS CLI、或 DataSync API 安排任务的运行频率。

### 使用 DataSync 控制台
<a name="configure-task-schedule-console"></a>

以下说明介绍了在创建任务时，如何设置计划。稍后，在编辑任务时，您还可以修改计划。

在控制台中，一些计划选项允许您指定任务运行的确切时间（例如每天晚上 10:30）。如果不为这些选项指定时间，将在您创建（或更新）任务的时间运行该任务。

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

1. 在左侧导航窗格中，展开**数据传输**，然后选择**任务**，然后选择**创建任务**。

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

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

1. 对于计划**频率**，执行以下操作之一：
   + 如果不想按计划运行任务，请选择**未计划**。
   + 选择**每小时**，然后选择要在一小时中的哪一分钟运行任务。
   + 选择**每天**，然后输入要运行任务的 UTC 时间。
   + 选择**每周**和一周中的某一天，然后输入要运行任务的 UTC 时间。
   + 选择**周中日期**，选择具体的一天或数天，然后以 HH:MM 格式输入应运行任务的 UTC 时间。
   + 选择**自定义**，然后选择 **Cron 表达式**或 **Rate 表达式**。输入任务计划，最小时间间隔为 1 小时。

### 使用 AWS CLI
<a name="configure-task-schedule-api"></a>

您可以在 `create-task`、`update-task` 或 `start-task-execution` 命令中使用 `--schedule` 参数，为 DataSync 任务创建计划。

以下说明介绍了如何使用 `create-task` 命令执行此操作。

1. 复制以下 `create-task` 命令：

   ```
   aws datasync create-task \
     --source-location-arn arn:aws:datasync:us-east-1:123456789012:location/loc-12345678abcdefgh \
     --destination-location-arn arn:aws:datasync:us-east-1:123456789012:location/loc-abcdefgh12345678 \
     --schedule '{
       "ScheduleExpression": "cron(0 12 ? * SUN,WED *)"
     }'
   ```

1. 对于 `--source-location-arn` 参数，指定数据传输源位置的 Amazon 资源名称（ARN）。

1. 对于 `--destination-location-arn` 参数，指定数据传输目标位置的 ARN。

1. 对于 `--schedule` 参数，为您的计划指定 cron 或 rate 表达式。

   在示例中，cron 表达式 `cron(0 12 ? * SUN,WED *)` 设置了在每周日和每周三中午 12:00（UTC 时间）运行的任务计划。

1. 运行 `create-task` 命令创建带有计划的任务。

## 暂停 DataSync 任务计划
<a name="pause-task-schedule"></a>

在某些情况下，您可能需要暂停 DataSync 任务计划。例如，您可能需要暂时禁用定期传输，以修复任务中的问题，或对存储系统进行维护。

出于以下原因，DataSync 可能会自动禁用您的任务计划：
+ 您的任务因相同错误反复失败。
+ 任务正在使用的 [AWS 区域 被禁用](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html)。

### 使用 DataSync 控制台
<a name="pause-scheduled-task-console"></a>

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

1. 在左侧导航窗格中，展开**数据传输**，然后选择**任务**。

1. 选择要暂停计划的任务，然后选择**编辑**。

1. 在**计划**中，关闭**启用计划**。选择**保存更改**。

### 使用 AWS CLI
<a name="pause-scheduled-task-cli"></a>

1. 复制以下 `update-task` 命令：

   ```
   aws datasync update-task \
     --task-arn arn:aws:datasync:us-east-1:123456789012:task/task-12345678abcdefgh \
     --schedule '{
       "ScheduleExpression": "cron(0 12 ? * SUN,WED *)",
       "Status": "DISABLED"
     }'
   ```

1. 对于 `--task-arn` 参数，指定要暂停其计划的任务 ARN。

1. 对于 `--schedule` 参数，请执行以下操作：
   + 对于 `ScheduleExpression`，为计划指定一个 cron 或 rate 表达式。

     在示例中，表达式 `cron(0 12 ? * SUN,WED *)` 设置了在每周日和每周三中午 12:00（UTC 时间）运行的任务计划。
   + 对于 `Status`，指定 `DISABLED` 以暂停任务计划。

1. 运行 `update-task` 命令。

1. 要恢复计划，请运行相同的 `update-task` 命令，并将 `Status` 设置为 `ENABLED`。

## 检查 DataSync 任务计划的状态
<a name="check-scheduled-task"></a>

您可以查看 DataSync 任务计划是否已启用。

### 使用 DataSync 控制台
<a name="check-scheduled-task-console"></a>

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

1. 在左侧导航窗格中，展开**数据传输**，然后选择**任务**。

1. 在**计划**列中，检查任务的计划是启用还是禁用。

### 使用 AWS CLI
<a name="check-scheduled-task-cli"></a>

1. 复制以下 `describe-task` 命令：

   ```
   aws datasync describe-task \
     --task-arn arn:aws:datasync:us-east-1:123456789012:task/task-12345678abcdefgh
   ```

1. 对于 `--task-arn` 参数，请指定您想要了解其信息的任务 ARN。

1. 运行 `describe-task` 命令。

您将收到提供任务详细信息的响应，其中包括任务的计划。（下面的示例主要关注任务计划配置，不显示完整的 `describe-task` 响应）。

该示例显示任务的计划已手动禁用。如果 DataSync `SERVICE` 禁用了计划，则会显示 `DisabledReason` 的错误消息，帮助您了解任务不断失败的原因。有关更多信息，请参阅 [疑难解答 AWS DataSync 问题](troubleshooting-datasync.md)。

```
{
    "TaskArn": "arn:aws:datasync:us-east-1:123456789012:task/task-12345678abcdefgh",
    "Status": "AVAILABLE",
    "Schedule": {
        "ScheduleExpression": "cron(0 12 ? * SUN,WED *)",
        "Status": "DISABLED",
        "StatusUpdateTime": 1697736000,
        "DisabledBy": "USER",
        "DisabledReason": "Manually disabled by user."
    },
    ...
}
```

# 为你的 AWS DataSync 任务加标签
<a name="tagging-tasks"></a>

*标签*是键值对，可帮助您管理、筛选和搜索 AWS DataSync 资源。您最多可以为每个 DataSync 任务和任务执行添加 50 个标签。

例如，您可以为大型数据迁移创建任务，并使用密钥**Project**和值标记任务**Large Migration**。若要进一步组织迁移，您可以使用密钥**Transfer Date**和值**May 2021**标记任务的一次运行（后续任务执行可能会被标记**June 2021**、**July 2021**等）。

## 给你的 DataSync 任务加标签
<a name="tagging-tasks-console"></a>

只有在创建 DataSync 任务时才能为任务添加标签。

### 使用控制 DataSync 台
<a name="tagging-tasks-console-steps"></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. 在**配置设置**页面，选择**添加新标签**来标记您的任务。

### 使用 AWS CLI
<a name="tagging-tasks-cli-steps"></a>

1. 复制以下 `create-task` 命令：

   ```
   aws datasync create-task \
       --source-location-arn 'arn:aws:datasync:region:account-id:location/source-location-id' \
       --destination-location-arn 'arn:aws:datasync:region:account-id:location/destination-location-id' \
       --tags Key=tag-key,Value=tag-value
   ```

1. 指定命令中的以下参数：
   + `--source-location-arn` – 指定传输中源位置的 Amazon 资源名称（ARN）。
   + `--destination-location-arn` – 请指定传输中目标位置的 ARN。
   + `--tags` – 指定要应用于任务的标签。

     对于多个标签，请用空格分隔密钥值对。

1. （可选）指定适用于您传输场景的其他参数。

   有关`--options`列表，请参阅 [create-task](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/datasync/create-task.html)命令。

1. 运行 `create-task` 命令。

   您会收到一条回复，表明您刚刚创建的任务。

   ```
   {
       "TaskArn": "arn:aws:datasync:us-east-2:123456789012:task/task-abcdef01234567890"
   }
   ```

要查看您为此任务添加的标签，可以使用[list-tags-for-resource](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/datasync/list-tags-for-resource.html)命令。

## 为 DataSync 任务执行添加标签
<a name="tagging-task-executions-console"></a>

您可以为 DataSync 任务的每一次运行添加标签。

如果您的任务已有标签，请记住以下有关任务执行中使用标签的信息：
+ 如果您使用控制台启动任务，其用户创建的标签将自动应用于任务执行。但是，系统创建的以开头的标签 `aws:`不适用。
+ 如果您使用 DataSync API 或启动任务 AWS CLI，则其标签不会自动应用于任务执行。

### 使用控制 DataSync 台
<a name="tagging-task-executions-console"></a>

要在任务执行中添加、编辑或移除标签，必须通过覆盖选项启动任务。

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

1. 在左侧导航窗格中，展开**数据传输**，然后选择**任务**。

1. 选择任务。

1. 选择**开始**，然后选择下列选项之一：
   + **从默认值开始**-应用与您的任务关联的所有标签。
   + 从@@ **覆盖选项开始** — 允许您添加、编辑或删除此特定任务执行的标签。

### 使用 AWS CLI
<a name="tagging-task-executions-cli"></a>

1. 复制以下 `start-task-execution` 命令：

   ```
   aws datasync start-task-execution \
       --task-arn 'arn:aws:datasync:region:account-id:task/task-id' \
       --tags Key=tag-key,Value=tag-value
   ```

1. 指定命令中的以下参数：
   + `--task-arn` – 指定要启动的任务的 ARN。
   + `--tags` – 指定要应用于此特定任务运行的标签。

     对于多个标签，请用空格分隔密钥值对。

1. （可选）指定对您有意义的其他参数。

   有关更多信息，请参阅 [start-task-execution](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/datasync/start-task-execution.html) 命令。

1. 运行 `start-task-execution` 命令。

   您会收到一条回复，其中显示了您刚刚开始的任务执行情况。

   ```
   {
       "TaskExecutionArn": "arn:aws:datasync:us-east-2:123456789012:task/task-abcdef01234567890"
   }
   ```

要查看您为此任务添加的标签，可以使用[list-tags-for-resource](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/datasync/list-tags-for-resource.html)命令。