我注意到似乎没有从AWS管理控制台下载整个s3桶的选项。
有什么简单的方法可以把所有东西都装进我的桶里吗?我正在考虑使根文件夹公共,使用wget抓取它,然后再次使它私有,但我不知道是否有更简单的方法。
我注意到似乎没有从AWS管理控制台下载整个s3桶的选项。
有什么简单的方法可以把所有东西都装进我的桶里吗?我正在考虑使根文件夹公共,使用wget抓取它,然后再次使它私有,但我不知道是否有更简单的方法。
当前回答
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目录中的所有文件和文件夹键。
其他回答
除了关于aws s3同步的建议外,我还建议查看s5cmd。
根据我的经验,我发现对于多次下载或大规模下载,这比AWS CLI要快得多。
S5cmd支持通配符,这样可以工作:
S5cmd cp s3://桶名/* ./文件夹
Aws同步是完美的解决方案。它不是双向的。从源头到目的地只有一条路。此外,如果你在bucket中有很多项目,首先创建s3端点将是一个好主意,这样下载就会更快(因为下载不是通过互联网进行的,而是通过内部网进行的),而且不收费
如果桶相当大,有一个叫做s4cmd的命令可以进行并行连接,提高下载时间:
把它安装在Debian上就像
apt install s4cmd
如果你有pip:
pip install s4cmd
它将读取~/。s3cfg文件(如果没有安装s3cmd并运行s3cmd——configure),或者您可以在命令上指定——access-key=ACCESS_KEY——secret-key=SECRET_KEY。
命令行类似于s3cmd。在这种情况下,建议同步,因为您可以取消下载并重新启动,而不必重新下载文件。
s4cmd [--access-key=ACCESS_KEY --secret-key=SECRET_KEY] sync s3://<your-bucket> /some/local/dir
如果你下载了很多数据(>1TB),这可能会影响你的账单,先计算一下这将是成本
Windows User need to download S3EXPLORER from this link which also has installation instructions :- http://s3browser.com/download.aspx Then provide you AWS credentials like secretkey, accesskey and region to the s3explorer, this link contains configuration instruction for s3explorer:Copy Paste Link in brower: s3browser.com/s3browser-first-run.aspx Now your all s3 buckets would be visible on left panel of s3explorer. Simply select the bucket, and click on Buckets menu on top left corner, then select Download all files to option from the menu. Below is the screenshot for the same:
桶选择界面
然后浏览文件夹以下载特定位置的bucket 点击OK,下载就开始了。
只需要在aws s3 cp命令中传递——recursive &——include "*",如下:aws——region "${BUCKET_REGION}" s3 cp s3://${BUCKET}${BUCKET_PATH}/ ${LOCAL_PATH}/tmp——recursive——include "*" 2>&1