下载整个S3存储桶?
我注意到似乎没有从AWSpipe理控制台下载整个S3存储桶的选项。
有没有简单的方法来抓住我的一个桶里的一切? 我正在考虑公开根文件夹,使用wget
抓住它,然后再将它私有,但我不知道是否有一个更简单的方法。
AWS CLI
AWS CLI的文档
AWS最近发布了他们的命令行工具。 这与boto非常相似,可以使用sudo easy_install awscli
或sudo 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,到目前为止最简单的是Cyberduck 。 您只需input亚马逊凭证,并使用简单的界面下载/上传/同步您的任何存储桶/文件夹/文件。
S3浏览器是我find的最简单的方法。 这是优秀的软件…而且它是免费的非商业用途。 仅限Windows。
如果您使用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下载,使用Cyberduck 。
希望能帮助到你.. :)
你可以用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
Enter
或right click
并selectOpen
。 对于大多数数据文件,这将直接下载到您的计算机。
-
Windows用户需要从这个链接下载S3EXPLORER,它也有安装说明: – http://s3browser.com/download.aspx
-
然后为s3explorer提供AWS密钥,例如secretkey,accesskey和region,这个链接包含s3explorer的configuration指令:复制粘贴链接到浏览器:s3browser.com/s3browser-first-run.aspx
-
现在,您的所有s3桶将在s3explorer的左侧面板上可见。
-
只需select存储桶,然后单击左上angular的存储桶菜单,然后从菜单中select将所有文件下载到选项。 下面是相同的截图:
分组select屏幕
-
然后浏览一个文件夹在特定的地方下载桶
-
点击确定,你的下载将开始。
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浏览器
你可以免费使用它
最后我用云浆果买了它,这是凉爽的云浆果