

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

# 使用命令行界面 (CLI) 传输文件
<a name="transfer-cli"></a>

以下各节详细介绍了如何File Transfer使用命令行界面 (CLI) 上传、下载和配置热文件夹。

**Topics**
+ [上传文件](#upload-cli)
+ [配置热文件夹](#hot-folders-file-transfer-cli)
+ [下载文件](#download-cli)

## 上传文件
<a name="upload-cli"></a>

以下命令适用于命令行界面 (CLI)。使用以下命令，可以从您在配置文件中设置的相应 S3 存储桶下载文件。可以从计算机上的任何位置运行这些命令。但是，我们建议从根运行这些命令。

File Transfer 保留您提供的文件夹结构。这意味着文件夹结构在到达 Amazon S3 后保持不变。但是，您无法在绝对路径中提供 File Transfer。这意味着文件路径不能以 `/`（正斜杠）开头。

File Transfer 可以上传所有 S3 存储类。有关存储类的更多信息，请参阅 [Amazon S3 存储类](https://aws.amazon.com/s3/storage-classes/)。

**注意**  
建议在本地计算机上禁用睡眠模式。如果您的计算机激活了睡眠模式，正在进行的传输可能会被中断。在**设置**中，切换为**禁用休眠(仅限 macOS)**。

**使用 CLI 开始上传**

1. 打开终端。

1. （推荐）导航到包含待上传文件和文件夹的文件夹。

1. 在计算机上的任意位置运行以下命令，将文件从本地计算机上传到 Amazon S3。

   ```
   filetransfer upload [transfer profile] [relative path]
   ```

   1. 将*[传输配置文件]*替换为您要使用的传输配置文件。

   1. 将*[相对路径]*替换为要上传的文件或目录的路径。

      1. 相对路径不以 `/`（正斜杠）开头。例如：`Users/username/Desktop/folder1`

      1. 不要使用绝对路径。绝对文件路径以 `/`（正斜杠）开头。例如：`/Users/username/Desktop/folder1`

   1. 命令示例：`filetransfer upload [transfer profile name] /Users/username/Desktop/folder1`

File Transfer 对您的文件执行 [File Transfer 校验和](checksums.md)。校验和用于额外的文件完整性验证，以便您检测文件是否被意外修改。校验和完成后，开始传输。如果您提供自己的*媒体哈希列表* (*MHL*)，则 File Transfer 可以验证您的文件是否与 MHL 中定义的校验和相匹配。MHL 是一个 XML 文件，通常附带原始摄像机镜头。

### Flags
<a name="upload-cli-flags"></a>

为了执行某些操作，可以在命令的末尾添加标志。是否使用标志是可选的。


| 标记 | 描述 | 示例 | 
| --- | --- | --- | 
|  --help  |  列出可用的标志和命令。  |  `filetransfer --help`  | 
|  --checksum-algorithm  |  定义哪个校验和计算 File Transfer 执行。支持的值：`md5`、`XXHash`、`XXHash64` 和 `XXH3`。  |  `filetransfer upload [remote configuration] [relative path] –-checksum-algorithm xxhash64`  | 
|  --enable-metadata-filter  |  使用时，File Transfer 会自动筛选系统元数据文件。这些文件包括 `Thumbs.db`、`.DS_Store` 和以 `._.` 开头的文件  |  `filetransfer upload [remote configuration] [relative path] --enable-metadata-filter`  | 
|  --filter  |  根据文件格式筛选正在传输的文件。筛选条件字段接受有效的正则表达式。示例：`^.*\.(mov)$` 仅传输以 `.mov` 结尾的文件。可以将筛选条件添加到配置文件中以执行特定操作。当您在配置中添加筛选条件而不是将其用作特定命令的标志时，File Transfer 会将操作应用于所有传输。  |  `filetransfer upload [remote configuration] [relative path] --filter "^.*\.(mov)$"` 此命令只会上传格式为 `.mov` 的文件。  | 
|  --force  |  无论筛选条件或冲突如何，都会强制传输。默认情况下，File Transfer 不会传输以前传输的文件。 强制标志可以使 File Transfer 忽略任何筛选条件或冲突。如果不小心删除了需要下载的文件，则此功能非常有用。  |  `filetransfer upload [remote configuration] [relative path] --force`  | 
|  --max-age  |  只传输在截至当前时间的时间窗口内创建或修改的文件。如果未提供任何单位，则最长期限将以秒为单位。例如，`2d` 将下载最近两天的文件，`3500` 将上传最近 3500 秒的文件。  |  `filetransfer upload [remote configuration] [relative path] --max-age “2d”` 上述命令只会将最近 2 天内的文件上传到 S3 存储桶。  | 
|  --retry-count  |  如果发生错误，File Transfer 将尝试传输文件，次数与重试次数相同。  |  `filetransfer upload [remote configuration] [relative path] --retry-count 4`  | 
|  --chunk-size  |  组块大小（以 MB 为单位，默认为 25）  |  `filetransfer upload [remote configuration] [relative path] --chunk-size 50`  | 
|  --auto-tuning  |  允许工具决定最佳配置值以优化传输  |  `filetransfer upload [remote configuration] [relative path] --auto-tuning true`  | 
|  --max-active-checksums  |  活动校验和的最大数量（默认为 1）。此标志仅对上传有效。  |  `filetransfer upload [remote configuration] [relative path] --max-active-checksums 5`  | 
|  --max-active-transfers  |  最大传输数量  |  `filetransfer upload [remote configuration] [relative path] --max-active-transfers 10`  | 
|  --prefix  |  用于上传和下载的 S3 前缀路径  |  `filetransfer upload [remote configuration] [relative path] --prefix my/s3/path`  | 
|  --profile  |  AWS 已命名的个人资料  |  `filetransfer upload [remote configuration] [relative path] --profile my_named_profile`  | 
|  --threads  |  每次上传的线程数（默认为 10）  |  `filetransfer upload [remote configuration] [relative path] --threads 10`  | 
|  FILETRANSFER\$1CONFIG\$1DIR  |  覆盖默认 `.filetransfer` 文件夹。 此变量可以定义任何目录来存储配置文件和数据库文件。如果未设置 `FILETRANSFER_CONFIG_DIR`，则将使用默认值 `~/.filetransfer`。仍必须将文件命名为 `configuration.yaml` 或 `configuration.yaml` 和 `checksum-cache.db`。如果文件不存在，就会被创建。  |  `FILETRANSFER_CONFIG_DIR=Desktop/config1 filetransfer upload [remote configuration] [relative path]`  | 

## 配置热文件夹
<a name="hot-folders-file-transfer-cli"></a>

**要使用 CLI 配置上传热文件夹。**

1. 使用计算机上的任何文本编辑软件打开配置文件。

   1. Windows：导航到您计算机上的 `User/<your username>` 文件夹。打开 `.filetransfer` 文件夹，用文本编辑器打开 `filetransfer.yaml` 文件。

   1. macOS：输入 **Cmd\$1Shift\$1G**。然后输入 **\$1/.filetransfer**。使用文本编辑器打开 `filetransfer.yaml` 文件。

   1. Linux：使用任何文本编辑器打开 `filetransfer.yaml` 文件。文件位于 `~/.filetransfer/configuration.yaml` 中。

1. 使用以下字段创建新 `hot_folder` 部分

   ```
   hot folders:
                 - enabled: true
                 local_source_folder: /Users/user/myhotfolder
                 name: my_hot_folder
                 remote_configurations:
                   - remote_configuration_name: example_configuration
                     s3_destination_folder: my/s3/prefix
   ```

1. 仅当 `enabled` 设置为 true 时，热文件夹才会处于活动状态。

1. 将 *local\$1source\$1folder* 替换为您希望 File Transfer 监控的文件夹位置。文件路径必须包含完整路径：`C:\path\to\upload-hot-folder` (Windows) 或 `/path/to/upload-hot-folder` (Linux&macOS)。

1. 在 `remote_configurations` 下：

   1. 将 *remote\$1configuration\$1name* 替换为您使用的远程配置的名称。可以在 `protocols.s3.transfer_profiles` 下找到您的远程配置。

   1. （可选）将 *s3\$1destination\$1folder* 替换为要将文件上传到的 S3 目标文件夹。如果此文件夹尚不存在，File Transfer 将在 Amazon S3 中创建该文件夹。如果未设置此值，会将文件放在存储桶的根目录中。

   1. （可选）您可以根据需要在此处添加任意数量的远程配置条目，热文件夹将使用每个远程配置开始上传。这允许您设置一个将上传到多个存储桶的热文件夹。

1. 以下示例是具有多个热文件夹的上传热文件夹配置。在此示例中，有两个热文件夹。

   1. 第一个热文件夹设置为监视 `Media/drive` 文件夹。将文件添加到此文件夹后，它将启动两次上传，一次使用 `example1` 远程配置，另一次使用 `example2` 远程配置。每次上传都将使用其各自的 `s3_destination_folder`。

   1. 第二个热文件夹设置为监视 `/Users/user1/myhotfolder` 文件夹。将文件添加到此文件夹后，它将使用 `another_configuration` 远程配置开始单次上传。所有文件都将上传到 Amazon S3 中的 `example_folder` 文件夹中。

   ```
   hot folders: 
           - enabled: true
             local_source_folder: /Media/drive
             name: my_hot_folder
             remote_configurations:
                   - remote_configuration_name: example1
                     s3_destination_folder: my/s3/folder
                   - remote_configuration_name: example2
                     s3_destination_folder: second/folder
           - enabled: true
             local_source_folder: /Users/user1/my_hot_folder
             name: another_hot_folder
             remote_configurations:
                   - remote_configuration_name: another_configuration
                     s3_destination_folder: example/folder
   ```

1. 保存配置文件。
**注意**  
当您启动进程守护程序或添加/更新热文件夹时，将开始对整个文件夹进行自动强制上传。如果您不喜欢这种行为，可以打开 GUI 并取消此作业。

## 下载文件
<a name="download-cli"></a>

使用以下命令，可以从您在配置文件中设置的相应 S3 存储桶下载文件。可以从计算机上的任何位置运行这些命令。我们建议从根运行这些命令。

File Transfer 无法直接从 Deep Archive 或 Glacier 存储类下载。这是因为这些类存储在不同的系统中。这些类型的对象需要使用不同的方法检索文件。有关从不同系统检索对象的更多信息，请参阅[恢复已归档的对象](https://docs.aws.amazon.com/AmazonS3/latest/userguide/restoring-objects.html)。有关存储类的更多信息，请参阅 [Amazon S3 存储类](https://aws.amazon.com/s3/storage-classes/)。

**注意**  
建议在本地计算机上禁用睡眠模式。如果您的计算机激活了睡眠模式，正在进行的传输可能会被中断。在**设置**中，切换为**禁用休眠(仅限 macOS)**。

**使用 CLI 开始下载**

1. 打开终端。

1. （推荐）导航到要将文件下载到的文件夹。

1. 在计算机上的任意位置运行以下命令，将文件从 Amazon S3 下载到您的计算机上。

   ```
   filetransfer download [transfer profile]
                     [relative path]
   ```

   1. 将*[传输配置文件]*替换为您要使用的传输配置文件。

   1. 将*[相对路径]*替换为要将文件下载到的路径。

      1. 相对路径不以 `/`（正斜杠）开头。例如：`Users/username/Desktop/folder1`

      1. 不要使用绝对路径。绝对文件路径以 `/`（正斜杠）开头。例如：`/Users/username/Desktop/folder1`

   1. 命令示例：`filetransfer download [transfer profile name] /Users/username/Desktop/folder1`

File Transfer 检查本地 File Transfer 数据库以验证所选文件是否已下载。

### Flags
<a name="download-cli-flags"></a>

为了执行某些操作，可以在命令的末尾添加标志。是否使用标志是可选的。


| 标记 | 描述 | 示例 | 
| --- | --- | --- | 
|  --help  |  列出可用的标志和命令。  |  `filetransfer --help`  | 
|  --checksum-algorithm  |  定义哪个校验和计算 File Transfer 执行。支持的值：`md5`、`XXHash`、`XXHash64` 和 `XXH3`。  |  `filetransfer download [remote configuration] [relative path] –-checksum-algorithm xxhash64`  | 
|  --enable-metadata-filter  |  使用时，File Transfer 会自动筛选系统元数据文件。这些文件包括 `Thumbs.db`、`.DS_Store` 和以 `._.` 开头的文件  |  `filetransfer download [remote configuration] [relative path] --enable-metadata-filter`  | 
|  --filter  |  根据文件格式筛选正在传输的文件。筛选条件字段接受有效的正则表达式。示例：`^.*\.(mov)$` 仅传输以 `.mov` 结尾的文件。可以将筛选条件添加到配置文件中以执行特定操作。当您在配置中添加过滤器而不是将其用作特定命令的标志时，File Transfer 会将操作应用于所有传输。  |  `filetransfer download [remote configuration] [relative path] --filter "^.*\.(mov)$"` 此命令只会下载格式为 `.mov` 的文件。  | 
|  --force  |  无论筛选条件或冲突如何，都会强制传输。默认情况下，File Transfer 不会传输以前传输的文件。 强制标志可以使 File Transfer 忽略任何筛选条件或冲突。如果不小心删除了需要下载的文件，则此功能非常有用。  |  `filetransfer download [remote configuration] [relative path] --force`  | 
|  --max-age  |  只传输在截至当前时间的时间窗口内创建或修改的文件。如果未提供任何单位，则最长期限将以秒为单位。例如，`2d` 将下载最近两天的文件，`3500` 将上传最近 3500 秒的文件。  |  `filetransfer download [remote configuration] [relative path] --max-age “2d”` 上述命令只会将最近 2 天内的文件下载到 S3 存储桶。  | 
|  --retry-count  |  如果发生错误，File Transfer 将尝试传输文件，次数与重试次数相同。  |  `filetransfer download [remote configuration] [relative path] --retry-count 4`  | 
|  --chunk-size  |  组块大小（以 MB 为单位，默认为 25）  |  `filetransfer download [remote configuration] [relative path] --chunk-size 50`  | 
|  --auto-tuning  |  允许工具决定最佳配置值以优化传输  |  `filetransfer download [remote configuration] [relative path] --auto-tuning true`  | 
|  --max-active-checksums  |  活动校验和的最大数量（默认为 1）  |  `filetransfer download [remote configuration] [relative path] --max-active-checksums 5`  | 
|  --max-active-transfers  |  最大传输数量  |  `filetransfer download [remote configuration] [relative path] --max-active-transfers 10`  | 
|  --prefix  |  用于上传和下载的 S3 前缀路径  |  `filetransfer download [remote configuration] [relative path] --prefix my/s3/path`  | 
|  --profile  |  AWS 已命名的个人资料  |  `filetransfer download [remote configuration] [relative path] --profile my_named_profile`  | 
|  --threads  |  每次下载的线程数（默认为 10）  |  `filetransfer download [remote configuration] [relative path] --threads 10`  | 
|  FILETRANSFER\$1CONFIG\$1DIR  |  覆盖默认 `.filetransfer` 文件夹。 此变量可以定义任何目录来存储配置文件和数据库文件。如果未设置 `FILETRANSFER_CONFIG_DIR`，则将使用默认值 `~/.filetransfer`。仍必须将文件命名为 `configuration.yaml` 或 `configuration.yaml` 和 `checksum-cache.db`。如果文件不存在，就会被创建。  |  `FILETRANSFER_CONFIG_DIR=Desktop/config1 filetransfer download [remote configuration] [relative path]`  | 