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

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


当前回答

使用awscli下载/上传文件到s3总是更好。同步将帮助您恢复没有任何麻烦。

aws s3 sync s3://bucketname/ .

其他回答

你可以用s3cmd命令简单地得到它:

s3cmd get --recursive --continue s3://test-bucket local-directory/

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,下载就开始了。

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

使用AWS S3 CLI下载:

aws s3 cp s3://WholeBucket LocalFolder --recursive
aws s3 cp s3://Bucket/Folder LocalFolder --recursive

要使用代码下载,请使用AWS SDK。

要使用GUI下载,请使用Cyberduck。

我已经为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之后,“下载整个桶”可能会满足你的需要。