

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

# 在本地计算机和计算机之间复制多个文件 CloudShell
<a name="multiple-files-upload-download"></a>

本教程介绍如何在本地计算机和之间复制多个文件 CloudShell。

使用 AWS CloudShell 界面，您可以在本地计算机和 Shell 环境之间一次上传或下载单个文件。要同时在本地计算机 CloudShell 之间复制多个文件，请使用以下选项之一：
+ Amazon S3：在本地计算机和 CloudShell之间复制文件时，使用 S3 存储桶作为中介。
+ 压缩文件：将多个文件压缩到一个压缩文件夹中，可以使用该 CloudShell 界面上传或下载这些文件。

**注意**  
由于 CloudShell 不允许传入的互联网流量，因此目前无法使用`scp`或`rsync`之类的命令在本地计算机和 CloudShell 计算环境之间复制多个文件。

## 使用 Amazon S3 上传和下载多个文件
<a name="multiple-files-S3"></a>

此步骤介绍如何使用 Amazon S3 上传和下载多个文件。

### 先决条件
<a name="prerequesities-s3-multiple-files"></a>

要使用存储桶和对象，您需要一个 IAM policy 来授予执行以下 Amazon S3 API 操作的权限：
+ `s3:CreateBucket`
+ `s3:PutObject`
+ `s3:GetObject`
+ `s3:ListBucket`

有关 Amazon S3 操作的完整列表，请参阅《Amazon Simple Storage Service API 参考》**中[操作](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)部分。

## AWS CloudShell 使用 Amazon S3 将多个文件上传到


此步骤介绍如何使用 Amazon S3 上传多个文件。

1. 在中 AWS CloudShell，通过运行以下`s3`命令创建 S3 存储桶：

   ```
   aws s3api create-bucket --bucket your-bucket-name --region us-east-1
   ```

   如果调用成功，命令行将显示来自 S3 服务的响应：

   ```
   {
       "Location": "/your-bucket-name"
   }
   ```

1. 将目录中的文件从本地计算机上传到存储桶。请选择以下选项之一来上传文件：
   + AWS 管理控制台：用于 drag-and-drop将文件和文件夹上传到存储桶。
   + AWS CLI：在本地计算机上安装该版本版本的工具后，使用命令行将文件和文件夹上传到存储桶。

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

     （如果您正在使用 AWS CloudShell，则应该已经登录到控制台。）
   +  在**存储桶**列表中，请选择要将文件夹和文件上传到其中的存储桶的名称。您也可以通过选择**创建存储桶**来创建自己选择的存储桶。
   +  要将文件上传到文件夹，请选择要上传的文件，然后选择 **上传**。然后，将您选择的文件和文件夹拖放到列出目标存储桶中的对象的控制台窗口，或者选择**添加文件**或**添加文件夹**。

     **上传**页面上将列出所选文件。
   + 选中复选框以指示要添加的文件。
   + 要将所选文件添加到存储桶，请选择**上传**。

**注意**  
有关更多信息，请参阅《Amazon Simple Storage Service 控制台用户指南》**中的[如何将文件和文件夹上传到 S3 存储桶](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)。

------
#### [ Using AWS CLI ]

**注意**  
对于此选项，您需要在本地计算机上安装该 AWS CLI 工具，并配置用于调用 AWS 服务的凭据。有关更多信息，请参阅 [AWS Command Line Interface 《用户指南》](https://docs.aws.amazon.com/cli/latest/userguide/)。
   + 启动该 AWS CLI 工具并运行以下`aws s3`命令，将指定的存储桶与本地计算机上当前目录的内容同步：

     ```
     aws s3 sync folder-path s3://your-bucket-name 
     ```

   如果同步成功，则会显示添加到存储桶的每个对象的上传消息。

------

1. 返回 CloudShell 命令行并输入以下命令，将 shell 环境中的目录与 S3 存储桶的内容同步：

   ```
   aws s3 sync  s3://your-bucket-name folder-path
   ```
**注意**  
您还可以将 `--exclude "<value>"` 和 `--include "<value>"` 参数添加至 `sync` 命令来执行模式匹配以排除或包含特定文件或对象。  
 有关更多信息，请参阅《AWS CLI 命令参考》**中的[使用 Exclude 和 Include 筛选条件](https://docs.aws.amazon.com/cli/latest/reference/s3/index.html#use-of-exclude-and-include-filters)。

   如果同步成功，则会显示从存储桶下载到目录的每个文件的下载消息。
**注意**  
应用同步命令时，仅以递归方式将源目录中的新文件和更新过的文件复制到目标位置。

## AWS CloudShell 使用 Amazon S3 下载多个文件


此步骤介绍如何使用 Amazon S3 下载多个文件。

1. 使用 AWS CloudShell 命令行输入以下`aws s3`命令，将 S3 存储桶与 shell 环境中当前目录的内容同步：

   ```
   aws s3 sync folder-path s3://your-bucket-name
   ```
**注意**  
您还可以将 `--exclude "<value>"` 和 `--include "<value>"` 参数添加至 `sync` 命令来执行模式匹配以排除或包含特定文件或对象。  
 有关更多信息，请参阅《AWS CLI 命令参考》**中的[使用 Exclude 和 Include 筛选条件](https://docs.aws.amazon.com/cli/latest/reference/s3/index.html#use-of-exclude-and-include-filters)。

   如果同步成功，则会显示添加到存储桶的每个对象的上传消息。

1. 将桶内容下载到本地计算机上。由于 Amazon S3 控制台不支持下载多个对象，因此您需要使用安装在本地计算机上的 AWS CLI 工具。

   在该 AWS CLI 工具的命令行中，运行以下命令：

   ```
   aws s3 sync s3://your-bucket-name folder-path
   ```

   如果同步成功，命令行将显示在目标目录中更新或添加的每个文件的下载消息。
**注意**  
对于此选项，您需要在本地计算机上安装该 AWS CLI 工具，并配置用于调用 AWS 服务的凭据。有关更多信息，请参阅 [AWS Command Line Interface 《用户指南》](https://docs.aws.amazon.com/cli/latest/userguide/)。

## 使用压缩文件夹上传和下载多个文件
<a name="multiple-files-zip"></a>

此步骤介绍如何使用压缩文件夹上传和下载多个文件。

使用这些 zip/unzip 实用程序，您可以压缩存档中的多个文件，这些文件可以视为单个文件。这些实用程序已预先安装在 CloudShell 计算环境中。

 有关预安装工具的更多信息，请参阅 [开发工具和 Shell 实用程序](vm-specs.md#utilities-installed)。

## AWS CloudShell 使用压缩文件夹将多个文件上传到该文件夹


此步骤介绍如何使用压缩文件夹上传多个文件。

1. 在本地计算机上，将要上传的文件添加到压缩文件夹中。

1. 启动 CloudShell，然后选择 “**操作**”、“**上传文件**”。

1. 在**上传文件**对话框中，选择**选择文件**，然后选择您刚创建的压缩文件夹。

1. 在**上传文件**对话框中，选择**上传**，将所选文件添加到 Shell 环境中。

1. 在 CloudShell 命令行中，运行以下命令将 zip 存档的内容解压缩到指定目录：

   ```
   unzip zipped-files.zip -d my-unzipped-folder
   ```

## AWS CloudShell 使用压缩文件夹下载多个文件


此步骤介绍如何使用压缩文件夹下载多个文件。

1. 在 CloudShell 命令行中，运行以下命令将当前目录中的所有文件添加到压缩文件夹：

   ```
   zip -r zipped-archive.zip *
   ```

1. 选择**操作**、**下载文件**。

1. 在**下载文件**对话框中，输入压缩文件夹的路径（例如 `/home/cloudshell-user/zip-folder/zipped-archive.zip`），然后选择**下载**。

   如果路径正确，浏览器对话框将提供打开压缩文件夹或将其保存到本地计算机的选项。

1. 现在，您可以在本地计算机上解压缩下载的压缩文件夹中的内容。