我注意到似乎没有从AWS管理控制台下载整个s3桶的选项。
有什么简单的方法可以把所有东西都装进我的桶里吗?我正在考虑使根文件夹公共,使用wget抓取它,然后再次使它私有,但我不知道是否有更简单的方法。
我注意到似乎没有从AWS管理控制台下载整个s3桶的选项。
有什么简单的方法可以把所有东西都装进我的桶里吗?我正在考虑使根文件夹公共,使用wget抓取它,然后再次使它私有,但我不知道是否有更简单的方法。
当前回答
@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倍。
其他回答
如果桶相当大,有一个叫做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),这可能会影响你的账单,先计算一下这将是成本
正如Neel Bhaat在这篇博客中解释的那样,有许多不同的工具可以用于此目的。有些是AWS提供的,大多数是第三方工具。所有这些工具都要求您将AWS帐户密钥和秘密保存在工具本身。在使用第三方工具时要非常谨慎,因为你保存的凭证可能会让你失去全部价值,让你完蛋。
因此,我总是建议为此使用AWS CLI。您可以从这个链接简单地安装它。接下来,运行以下命令并在AWS CLI中保存密钥和秘密值。
aws configure
并使用以下命令将AWS S3 Bucket同步到本地计算机。(本地机器应该安装了AWS CLI)
aws s3 sync <source> <destination>
例子:
1)用于AWS S3到本地存储
aws s3 sync <S3Uri> <LocalPath>
2)从本地存储到AWS S3
aws s3 sync <LocalPath> <S3Uri>
3)从AWS s3桶到另一个桶
aws s3 sync <S3Uri> <S3Uri>
我使用了几种不同的方法将Amazon S3数据复制到本地机器,包括s3cmd,到目前为止最简单的方法是Cyberduck。
你所需要做的就是输入你的亚马逊凭证,然后使用简单的界面来下载、上传、同步你的存储桶、文件夹或文件。
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 SDK API是将整个文件夹和存储库上传到AWS S3以及在本地下载整个AWS S3存储桶的最佳选择。
上传整个文件夹到AWS S3: AWS S3 sync。s3: / / BucketName
本地下载整个AWS S3桶:AWS S3 sync S3://BucketName。
您还可以为AWS S3桶中的特定文件夹分配路径,如BucketName/ path。