下载整个S3存储桶?

我注意到似乎没有从AWSpipe理控制台下载整个S3存储桶的选项。

有没有简单的方法来抓住我的一个桶里的一切? 我正在考虑公开根文件夹,使用wget抓住它,然后再将它私有,但我不知道是否有一个更简单的方法。

AWS CLI

AWS CLI的文档

AWS最近发布了他们的命令行工具。 这与boto非常相似,可以使用sudo easy_install awsclisudo pip install awscli

一旦安装,你可以简单地运行:

命令

 aws s3 sync s3://mybucket . 

输出

 download: s3://mybucket/test.txt to test.txt download: s3://mybucket/test2.txt to test2.txt 

这将下载所有的文件(单向同步)。 它不会删除当前目录中的任何现有文件(除非指定–delete ),并且不会更改或删除S3上的任何文件。

您也可以对S3存储桶执行S3存储桶,或对S3存储桶同步执行本地存储。

查看文档和其他示例:

http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

您可以使用s3cmd下载您的存储桶。

 s3cmd --configure s3cmd sync s3://bucketnamehere/folder /destination/folder 

更新

还有另外一个可以用来叫做Rclone的工具。 以下是Rclone文档中的代码示例。

 rclone sync /home/local/directory remote:bucket 

我已经使用了几种不同的方法将Amazon S3数据复制到本地机器,包括s3cmd,到目前为止最简单的是Cyber​​duck 。 您只需input亚马逊凭证,并使用简单的界面下载/上传/同步您的任何存储桶/文件夹/文件。

截图

S3浏览器是我find的最简单的方法。 这是优秀的软件…而且它是免费的非商业用途。 仅限Windows。

http://s3browser.com/

如果您使用Visual Studio,请下载http://aws.amazon.com/visualstudio/

安装后,转到Visual Studio – AWS资源pipe理器 – S3 – 你的桶 – 双击

在窗口中,您将能够select所有文件。 右键点击并下载文件。

另一个可以帮助一些osx用户的选项是传输 。 这是一个FTP程序,也可以让你连接到你的S3文件。 它有一个选项来安装任何ftp或s3存储作为find文件夹 。 但这只是在有限的时间。

我已经为s3做了一些开发,我还没有find一个简单的方法来下载整个桶。 如果你想用Java编码,jets3t lib很容易用来创build一个桶列表,并遍历这个列表来下载它们。

http://jets3t.s3.amazonaws.com/downloads.html

首先从AWSpipe理手册获取一个公用密钥集,以便创build一个S3service对象…

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

然后获取你的桶对象的数组…

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

最后,迭代该数组,以一次一个下载对象与此代码…

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

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

如果你想用Python编写代码,你可以使用Boto。

PS后环顾BucketExplorer我做你想做的。 https://forums.aws.amazon.com/thread.jspa?messageID=248429

如果你使用S3Fox的Firefox,这样可以让你select所有的文件(shift-select首先和最后一个),右键单击并下载所有文件…我已经完成了500多个文件没有问题

在Windows中,我的首选GUI工具是用于S3的Cloudberry Explorer。http://www.cloudberrylab.com/free-amazon-s3-explorer-cloudfront-IAM.aspx。; 有一个相当精美的文件浏览器,类似ftp的界面。

在AWS CLI中使用此命令:

 aws s3 cp s3://bucketname. --recursive 

使用AWS S3 CLI下载:

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

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

使用GUI下载,使用Cyber​​duck

希望能帮助到你.. :)

你可以用https://github.com/minio/mc来做到这一点:;

 mc cp -r https://s3-us-west-2.amazonaws.com/bucketName/ localdir 

MC还支持会话,可恢复的下载,上传等等。 mc支持Linux,OS X和Windows操作系统。 用Golang编写,并在Apache 2.0版本下发布。

如果你只有文件(没有子目录),一个快速的解决scheme是select所有文件( click第一个, Shift+click最后一个), right click Enterright click并selectOpen 。 对于大多数数据文件,这将直接下载到您的计算机。

  1. Windows用户需要从这个链接下载S3EXPLORER,它也有安装说明: – http://s3browser.com/download.aspx

  2. 然后为s3explorer提供AWS密钥,例如secretkey,accesskey和region,这个链接包含s3explorer的configuration指令:复制粘贴链接到浏览器:s3browser.com/s3browser-first-run.aspx

  3. 现在,您的所有s3桶将在s3explorer的左侧面板上可见。

  4. 只需select存储桶,然后单击左上angular的存储桶菜单,然后从菜单中select将所有文件下载到选项。 下面是相同的截图:

分组select屏幕

  1. 然后浏览一个文件夹在特定的地方下载桶

  2. 点击确定,你的下载将开始。

aws同步是完美的解决scheme。 这不是一个双向的方式..它是从源头到目的地的一种方式。 另外,如果你有很多项目,最好先创builds3端点,这样下载速度就会更快(因为下载不是通过互联网,而是通过内部网),并且不收费

这里有一些东西下载所有的桶,列出他们,列出他们的内容。

  //connection string private static void dBConnection() { app.setAwsCredentials(CONST.getAccessKey(), CONST.getSecretKey()); conn = new AmazonS3Client(app.getAwsCredentials()); app.setListOfBuckets(conn.listBuckets()); System.out.println(CONST.getConnectionSuccessfullMessage()); } private static void downloadBucket() { do { for (S3ObjectSummary objectSummary : app.getS3Object().getObjectSummaries()) { app.setBucketKey(objectSummary.getKey()); app.setBucketName(objectSummary.getBucketName()); if(objectSummary.getKey().contains(CONST.getDesiredKey())){ //DOWNLOAD try { s3Client = new AmazonS3Client(new ProfileCredentialsProvider()); s3Client.getObject( new GetObjectRequest(app.getBucketName(),app.getBucketKey()), new File(app.getDownloadedBucket()) ); } catch (IOException e) { e.printStackTrace(); } do { if(app.getBackUpExist() == true){ System.out.println("Converting back up file"); app.setCurrentPacsId(objectSummary.getKey()); passIn = app.getDataBaseFile(); CONVERT= new DataConversion(passIn); System.out.println(CONST.getFileDownloadedMessage()); } } while(app.getObjectExist()==true); if(app.getObjectExist()== false) { app.setNoObjectFound(true); } } } app.setS3Object(conn.listNextBatchOfObjects(app.getS3Object())); } while (app.getS3Object().isTruncated()); } 

/ —————————-扩展方法——————- —————— /

 //Unzip bucket after download public static void unzipBucket() throws IOException { unzip = new UnZipBuckets(); unzip.unZipIt(app.getDownloadedBucket()); System.out.println(CONST.getFileUnzippedMessage()); } //list all S3 buckets public static void listAllBuckets(){ for (Bucket bucket : app.getListOfBuckets()) { String bucketName = bucket.getName(); System.out.println(bucketName + "\t" + StringUtils.fromDate(bucket.getCreationDate())); } } //Get the contents from the auto back up bucket public static void listAllBucketContents(){ do { for (S3ObjectSummary objectSummary : app.getS3Object().getObjectSummaries()) { if(objectSummary.getKey().contains(CONST.getDesiredKey())){ System.out.println(objectSummary.getKey() + "\t" + objectSummary.getSize() + "\t" + StringUtils.fromDate(objectSummary.getLastModified())); app.setBackUpCount(app.getBackUpCount() + 1); } } app.setS3Object(conn.listNextBatchOfObjects(app.getS3Object())); } while (app.getS3Object().isTruncated()); System.out.println("There are a total of : " + app.getBackUpCount() + " buckets."); } 

}

Chrome应用扩展-S3浏览器

你可以免费使用它

最后我用云浆果买了它,这是凉爽的云浆果