我注意到似乎没有从AWS管理控制台下载整个s3桶的选项。

有什么简单的方法可以把所有东西都装进我的桶里吗?我正在考虑使根文件夹公共,使用wget抓取它,然后再次使它私有,但我不知道是否有更简单的方法。


当前回答

下面是一个总结,你必须做什么来复制整个桶:

1. 创建一个可以操作AWS s3桶的用户

遵循这篇官方文章:配置基础知识

别忘了:

勾选“编程访问”,以便有可能通过CLI处理AWS。 为用户添加正确的IAM policy,允许用户与s3桶进行交互

2. 下载、安装和配置AWS CLI

查看允许配置的链接:https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html

您可以使用以下命令来添加您在创建用户时获得的密钥:

$ aws configure
AWS Access Key ID [None]: <your_access_key>
AWS Secret Access Key [None]: <your_secret_key>
Default region name [None]: us-west-2
Default output format [None]: json

3.使用以下命令下载内容

你可以递归cp命令,但是aws sync命令是f:

aws s3 sync s3://your_bucket /local/path

要在真正下载之前查看下载的文件是什么,可以使用——dryrun选项。 为了提高速度,可以调整s3的max_concurrent_requests和max_queue_size属性。参见:http://docs.aws.amazon.com/cli/latest/topic/s3-config.html 您可以使用——exclude和——include选项排除/包含一些文件。参见:https://docs.aws.amazon.com/cli/latest/reference/s3/

例如,下面的命令将显示桶中显示的所有.png文件。在不使用——dryrun的情况下重播命令以下载结果文件。

aws s3 sync s3://your_bucket /local/path --recursive --exclude "*" --include "*.png" --dryrun

其他回答

除了关于aws s3同步的建议外,我还建议查看s5cmd。

根据我的经验,我发现对于多次下载或大规模下载,这比AWS CLI要快得多。

S5cmd支持通配符,这样可以工作:

S5cmd cp s3://桶名/* ./文件夹

为了添加另一个GUI选项,我们使用了WinSCP的S3功能。它非常容易连接,只需要你的访问密钥和密钥在用户界面。然后,您可以从任何可访问的存储桶中浏览和下载所需的任何文件,包括嵌套文件夹的递归下载。

由于通过安全检查新软件可能是一个挑战,而且WinSCP相当普遍,因此使用它而不是尝试安装更专业的实用程序会非常有益。

如果您使用带有S3Fox的Firefox,它确实允许您选择所有文件(shift-选择第一个和最后一个),然后右键单击并下载所有文件。

我已经处理了500多个文件,没有任何问题。

当在Windows,我的首选GUI工具这是CloudBerry Explorer免费软件 Amazon S3。它有一个相当精致的文件资源管理器和类似ftp的界面。

@Layke的回答很好,但如果你有大量的数据,不想永远等待,你应该阅读“AWS CLI S3配置”。

以下命令将告诉AWS CLI使用1,000个线程执行作业(每个小文件或多部分副本的一部分),并查看100,000个作业:

aws configure set default.s3.max_concurrent_requests 1000
aws configure set default.s3.max_queue_size 100000

运行这些之后,你可以使用简单的sync命令:

aws s3 sync s3://source-bucket/source-path s3://destination-bucket/destination-path

or

aws s3 sync s3://source-bucket/source-path c:\my\local\data\path

在一个拥有4核CPU和16GB RAM的系统上,对于像我这样的情况(3-50GB文件),同步/复制速度从9.5MiB/s提高到700+MiB/s,比默认配置提高了70倍。