我注意到似乎没有从AWS管理控制台下载整个s3桶的选项。
有什么简单的方法可以把所有东西都装进我的桶里吗?我正在考虑使根文件夹公共,使用wget抓取它,然后再次使它私有,但我不知道是否有更简单的方法。
我注意到似乎没有从AWS管理控制台下载整个s3桶的选项。
有什么简单的方法可以把所有东西都装进我的桶里吗?我正在考虑使根文件夹公共,使用wget抓取它,然后再次使它私有,但我不知道是否有更简单的方法。
当前回答
为了添加另一个GUI选项,我们使用了WinSCP的S3功能。它非常容易连接,只需要你的访问密钥和密钥在用户界面。然后,您可以从任何可访问的存储桶中浏览和下载所需的任何文件,包括嵌套文件夹的递归下载。
由于通过安全检查新软件可能是一个挑战,而且WinSCP相当普遍,因此使用它而不是尝试安装更专业的实用程序会非常有益。
其他回答
对于Windows, S3浏览器是我发现的最简单的方法。这是一款优秀的软件,而且非商业用途是免费的。
我已经为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之后,“下载整个桶”可能会满足你的需要。
除了关于aws s3同步的建议外,我还建议查看s5cmd。
根据我的经验,我发现对于多次下载或大规模下载,这比AWS CLI要快得多。
S5cmd支持通配符,这样可以工作:
S5cmd cp s3://桶名/* ./文件夹
如果桶相当大,有一个叫做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),这可能会影响你的账单,先计算一下这将是成本
只需要在aws s3 cp命令中传递——recursive &——include "*",如下:aws——region "${BUCKET_REGION}" s3 cp s3://${BUCKET}${BUCKET_PATH}/ ${LOCAL_PATH}/tmp——recursive——include "*" 2>&1