

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

# 创建一个传输数据的任务
<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`。