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

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


当前回答

只需要在aws s3 cp命令中传递——recursive &——include "*",如下:aws——region "${BUCKET_REGION}" s3 cp s3://${BUCKET}${BUCKET_PATH}/ ${LOCAL_PATH}/tmp——recursive——include "*" 2>&1

其他回答

AWS CLI是在本地下载整个S3存储桶的最佳选择。

安装AWS CLI。 配置AWS CLI以使用默认的安全凭据和默认的AWS区域。 下载整个S3桶使用命令 Aws s3 sync s3://yourbucketname localpath

不同AWS服务的AWS CLI参考:AWS命令行接口

我已经为S3做了一些开发,我还没有找到一个简单的方法来下载整个存储桶。

如果您想用Java编写代码,那么jets3t库很容易用于创建存储桶列表并遍历该列表以下载它们。

首先,从AWS管理咨询器获取一个公共私钥集,这样您就可以创建一个S3service对象:

AWSCredentials awsCredentials = new AWSCredentials(YourAccessKey, YourAwsSecretKey);
s3Service = new RestS3Service(awsCredentials);

然后,获取bucket对象的数组:

S3Object[] objects = s3Service.listObjects(YourBucketNameString);

最后,遍历该数组,每次下载一个对象:

S3Object obj = s3Service.getObject(bucket, fileName);
            file = obj.getDataInputStream();

我把连接代码放在线程安全的单例中。由于显而易见的原因,省略了必要的try/catch语法。

如果你更愿意用Python编写代码,你可以使用Boto。

在查看BucketExplorer之后,“下载整个桶”可能会满足你的需要。

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

如果你只有文件在那里(没有子目录),一个快速的解决方案是选择所有的文件(点击第一个,Shift+点击最后一个),然后按Enter或右键单击并选择打开。对于大多数数据文件,这将直接下载到您的计算机。

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

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