rug*_*ert 625 amazon-s3 amazon-web-services
我注意到似乎没有从AWS管理控制台下载整个S3存储桶的选项.
有一种简单的方法可以抓住我的一个桶中的所有东西吗?我正在考虑将根文件夹设置为public,使用wget它来抓取所有内容,然后再将其设置为私有,但我不知道是否有更简单的方法.
Lay*_*yke 1183
AWS最近发布了他们的命令行工具.这很像boto,可以使用sudo easy_install awscli或安装sudo pip install awscli
安装完成后,您可以直接运行:
命令:
aws s3 sync s3://<source_bucket> <local_destination>
Run Code Online (Sandbox Code Playgroud)
输出:
aws s3 sync s3://mybucket .
Run Code Online (Sandbox Code Playgroud)
这将下载所有文件(单向同步).它不会删除当前目录中的任何现有文件(除非您指定--delete),并且它不会更改或删除S3上的任何文件.
您还可以执行S3存储桶到S3存储桶,或本地到S3存储桶同步.
查看文档和其他示例:
http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html
Phi*_* M. 163
您可以使用s3cmd下载您的存储桶.
s3cmd --configure
s3cmd sync s3://bucketnamehere/folder /destination/folder
Run Code Online (Sandbox Code Playgroud)
更新
您可以使用另一种称为Rclone的工具.下面是Rclone文档中的代码示例.
rclone sync /home/local/directory remote:bucket
Run Code Online (Sandbox Code Playgroud)
小智 81
我使用了一些不同的方法将Amazon S3数据复制到本地计算机,包括s3cmd,到目前为止最简单的是Cyberduck.您需要做的就是输入您的Amazon凭据并使用简单的界面下载/上传/同步您的任何存储桶/文件夹/文件.
Naj*_*thi 45
100%对我有用,我已经从aws s3 backet下载了所有文件。
安装 AWS CLI。选择您的操作系统并按照此处的步骤操作:安装或更新最新版本的 AWS CLI
检查AWS版本:aws --version
aws configureaws s3 cp s3://yourbucketname your\local\path --recursive例如(Windows 操作系统):aws s3 cp s3://yourbucketname C:\aws-s3-backup\project-name --recursive
查看此链接:如何将整个存储桶从 S3 下载到本地文件夹
Dar*_*ila 44
您基本上有很多选择,但最好的选择是使用AWS CLI
这是一个演练
在您的计算机中下载并安装AWS CLI
使用Bundled Installer(Linux,OS X或Unix)安装AWS CLI
配置AWS CLI
确保输入在创建帐户时收到的有效访问密钥和密钥
使用以下命令同步s3存储桶
aws s3 sync s3://yourbucket /local/path
Run Code Online (Sandbox Code Playgroud)
将以上命令替换为以下数据
yourbucket >>你要下载的s3水桶
/ local/path >>本地系统中要下载所有文件的路径
希望这可以帮助!
Sar*_*dra 40
要使用AWS S3 CLI下载:
aws s3 cp s3://WholeBucket LocalFolder --recursive
aws s3 cp s3://Bucket/Folder LocalFolder --recursive
Run Code Online (Sandbox Code Playgroud)
要使用代码下载,请使用AWS SDK.
要使用GUI下载,请使用Cyberduck.
希望能帮助到你.. :)
dwo*_*rad 21
S3浏览器是我找到的最简单的方法.它是优秀的软件......它是免费的非商业用途.仅限Windows.
Ive*_*.me 19
如果您使用Visual Studio,请下载http://aws.amazon.com/visualstudio/
安装完成后,转到Visual Studio - AWS Explorer - S3 - 您的存储桶 - 双击
在窗口中,您将能够选择所有文件.右键单击并下载文件.
我已经为s3做了一些开发,我还没有找到一个简单的方法来下载整个存储桶.如果你想用Java编写代码,jets3t lib很容易用来创建一个桶列表并迭代该列表来下载它们.
http://jets3t.s3.amazonaws.com/downloads.html
首先从AWS管理部门获取公共私钥集,以便创建S3service对象...
AWSCredentials awsCredentials = new AWSCredentials(YourAccessKey, YourAwsSecretKey);
s3Service = new RestS3Service(awsCredentials);
Run Code Online (Sandbox Code Playgroud)
然后得到你的桶对象数组......
S3Object[] objects = s3Service.listObjects(YourBucketNameString);
Run Code Online (Sandbox Code Playgroud)
最后,迭代该数组,使用此代码一次下载一个对象...
S3Object obj = s3Service.getObject(bucket, fileName);
file = obj.getDataInputStream();
Run Code Online (Sandbox Code Playgroud)
我将连接代码放在线程安全的单例中.出于显而易见的原因,省略了必要的try/catch语法.
如果您更喜欢用Python编写代码,那么可以使用Boto代替.
看完BucketExplorer之后PS我做你想做的事. https://forums.aws.amazon.com/thread.jspa?messageID=248429
@Layke的回答很好,但是如果您有大量数据并且不想永远等待,那么您应该密切关注如何获得AWS S3 CLI sync命令以使桶与大规模并行化同步的文档.以下命令将告诉AWS CLI使用1,000个线程来执行作业(每个小文件或多部分副本的一部分)并预测100,000个作业:
aws configure set default.s3.max_concurrent_requests 1000
aws configure set default.s3.max_queue_size 100000
Run Code Online (Sandbox Code Playgroud)
运行这些后,您可以使用simple sync命令,如下所示:
aws s3 sync s3://source-bucket/source-path s3://destination-bucket/destination-path
Run Code Online (Sandbox Code Playgroud)
要么
aws s3 sync s3://source-bucket/source-path c:\my\local\data\path
Run Code Online (Sandbox Code Playgroud)
在具有CPU 4内核和16GB RAM的系统上,对于像我这样的情况(3-50GB文件),同步/复制速度从大约9.5MiB/s变为700 + MiB/s,比默认配置速度提高了70倍.
AWS sdk API将是上传整个文件夹并存储到s3并将整个s3存储桶下载到本地的最佳选择。
用于将整个文件夹上传到s3
aws s3 sync . s3://BucketName
Run Code Online (Sandbox Code Playgroud)
本地下载整个s3存储桶
aws s3 sync s3://BucketName .
Run Code Online (Sandbox Code Playgroud)
您还可以为s3中的特定文件夹分配路径(例如BucketName / Path),以进行下载
您可以使用https://github.com/minio/mc进行此操作:
mc cp -r https://s3-us-west-2.amazonaws.com/bucketName/ localdir
Run Code Online (Sandbox Code Playgroud)
mc还支持会话,可恢复的下载,上载等等。mc支持Linux,OS X和Windows操作系统。用Golang编写,并在Apache 2.0版下发布。
如果您只想从 AWS 下载存储桶,请先在您的机器上安装 AWS CLI。在终端中,将目录更改为要下载文件的位置并运行此命令。
aws s3 sync s3://bucket-name .
Run Code Online (Sandbox Code Playgroud)
如果您还想同步本地和 s3 目录(以防您在本地文件夹中添加了一些文件),请运行以下命令:
aws s3 sync . s3://bucket-name
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以使用同步下载整个 S3 存储桶。例如,下载当前目录下名为bucket1的整个存储桶。
aws s3 sync s3://bucket1 .
Run Code Online (Sandbox Code Playgroud)
如果你使用带有S3Fox的Firefox,可以让你选择所有文件(shift-select first and last)和rightclick并下载所有...我用500多个文件做了没有问题
为了添加另一个 GUI 选项,我们使用WinSCP 的 S3 功能。连接非常容易,只需要在 UI 中提供您的访问密钥和秘密密钥。然后,您可以从任何可访问的存储桶浏览和下载您需要的任何文件,包括嵌套文件夹的递归下载。
由于通过安全性清除新软件可能是一项挑战,而且 WinSCP 相当普遍,因此仅使用它而不是尝试安装更专业的实用程序确实有益。
小智 5
aws s3 sync s3://<source_bucket> <local_destination>
Run Code Online (Sandbox Code Playgroud)
是一个很好的答案,但如果对象位于存储类 Glacier 灵活检索中,即使文件已恢复,它也不起作用。在这种情况下,您需要添加标志 --force-glacier-transfer 。