我注意到似乎没有从AWS管理控制台下载整个s3桶的选项。
有什么简单的方法可以把所有东西都装进我的桶里吗?我正在考虑使根文件夹公共,使用wget抓取它,然后再次使它私有,但我不知道是否有更简单的方法。
我注意到似乎没有从AWS管理控制台下载整个s3桶的选项。
有什么简单的方法可以把所有东西都装进我的桶里吗?我正在考虑使根文件夹公共,使用wget抓取它,然后再次使它私有,但我不知道是否有更简单的方法。
当前回答
aws s3 sync s3://<source_bucket> <local_destination>
是一个很好的答案,但它不会工作,如果对象在存储类冰川灵活检索,即使文件已经恢复。在这种情况下,你需要添加标志——force-glacier-transfer。
其他回答
正如@layke所说,从S3 cli下载文件是最好的做法,这是安全的。但在某些情况下,人们需要使用wget来下载文件,下面是解决方案
aws s3 presign s3://<your_bucket_name/>
这将presign将为您提供临时公共URL,您可以使用presign_url从S3下载内容,在您的情况下使用wget或任何其他下载客户端。
您可以使用MinIO客户端执行以下操作:mc cp -r https://s3-us-west-2.amazonaws.com/bucketName/ localdir
MinIO还支持会话、断点续传下载、上传等等。MinIO支持Linux、OS X和Windows操作系统。它是用Golang编写的,在Apache Version 2.0下发布。
对于Windows, S3浏览器是我发现的最简单的方法。这是一款优秀的软件,而且非商业用途是免费的。
AWS CLI
有关更多信息,请参阅“AWS CLI命令参考”。
AWS最近发布了他们的命令行工具,它的工作原理很像boto,可以使用
sudo easy_install awscli
or
sudo pip install awscli
安装完成后,您可以简单地运行:
aws s3 sync s3://<source_bucket> <local_destination>
例如:
aws s3 sync s3://mybucket .
将mybucket中的所有对象下载到当前目录。
并输出:
download: s3://mybucket/test.txt to test.txt
download: s3://mybucket/test2.txt to test2.txt
这将使用单向同步下载您的所有文件。它不会删除当前目录中的任何现有文件,除非您指定了——delete,而且它不会更改或删除S3上的任何文件。
您还可以进行S3桶到S3桶的同步,或本地到S3桶的同步。
请查看文档和其他示例。
虽然上面的示例是如何下载完整的存储桶,但您也可以通过执行下面的操作递归地下载文件夹
aws s3 cp s3://BUCKETNAME/PATH/TO/FOLDER LocalFolderName --recursive
这将指示CLI递归下载BUCKETNAME桶中的PATH/ to / folder目录中的所有文件和文件夹键。
您可以使用sync来下载整个S3桶。例如,下载当前目录下名为bucket1的整个桶。
aws s3 sync s3://bucket1 .