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

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


当前回答

试试这个命令:

aws s3同步您的bucketnamedirectory您的localdirectory

例如,如果你的桶名是myBucket,本地目录是c:\local,那么:

aws s3 sync s3://myBucket c:\local

有关awscli的更多信息,请查看这个 Aws cli安装

其他回答

正如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> 

您可以使用MinIO客户端执行以下操作:mc cp -r https://s3-us-west-2.amazonaws.com/bucketName/ localdir

MinIO还支持会话、断点续传下载、上传等等。MinIO支持Linux、OS X和Windows操作系统。它是用Golang编写的,在Apache Version 2.0下发布。

您可以使用这个AWS cli命令将整个S3桶内容下载到本地文件夹

aws s3 sync s3://your-bucket-name "Local Folder Path"

如果你看到这样的错误

fatal error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)

——no-verify-ssl(布尔)

默认情况下,AWS CLI与AWS服务通信时使用SSL。对于每个SSL连接,AWS CLI将验证SSL证书。此选项将覆盖验证SSL证书的默认行为。 参考

使用命令——no-verify-ssl来使用这个标记

aws s3 sync s3://your-bucket-name "Local Folder Path" --no-verify-ssl

试试这个命令:

aws s3同步您的bucketnamedirectory您的localdirectory

例如,如果你的桶名是myBucket,本地目录是c:\local,那么:

aws s3 sync s3://myBucket c:\local

有关awscli的更多信息,请查看这个 Aws cli安装

如果桶相当大,有一个叫做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),这可能会影响你的账单,先计算一下这将是成本