我注意到似乎没有从AWS管理控制台下载整个s3桶的选项。
有什么简单的方法可以把所有东西都装进我的桶里吗?我正在考虑使根文件夹公共,使用wget抓取它,然后再次使它私有,但我不知道是否有更简单的方法。
我注意到似乎没有从AWS管理控制台下载整个s3桶的选项。
有什么简单的方法可以把所有东西都装进我的桶里吗?我正在考虑使根文件夹公共,使用wget抓取它,然后再次使它私有,但我不知道是否有更简单的方法。
当前回答
只需要在aws s3 cp命令中传递——recursive &——include "*",如下:aws——region "${BUCKET_REGION}" s3 cp s3://${BUCKET}${BUCKET_PATH}/ ${LOCAL_PATH}/tmp——recursive——include "*" 2>&1
其他回答
为了添加另一个GUI选项,我们使用了WinSCP的S3功能。它非常容易连接,只需要你的访问密钥和密钥在用户界面。然后,您可以从任何可访问的存储桶中浏览和下载所需的任何文件,包括嵌套文件夹的递归下载。
由于通过安全检查新软件可能是一个挑战,而且WinSCP相当普遍,因此使用它而不是尝试安装更专业的实用程序会非常有益。
AWS CLI是在本地下载整个S3存储桶的最佳选择。
安装AWS CLI。 配置AWS CLI以使用默认的安全凭据和默认的AWS区域。 下载整个S3桶使用命令 Aws s3 sync s3://yourbucketname localpath
不同AWS服务的AWS CLI参考:AWS命令行接口
@Layke的回答很好,但如果你有大量的数据,不想永远等待,你应该阅读“AWS CLI S3配置”。
以下命令将告诉AWS CLI使用1,000个线程执行作业(每个小文件或多部分副本的一部分),并查看100,000个作业:
aws configure set default.s3.max_concurrent_requests 1000
aws configure set default.s3.max_queue_size 100000
运行这些之后,你可以使用简单的sync命令:
aws s3 sync s3://source-bucket/source-path s3://destination-bucket/destination-path
or
aws s3 sync s3://source-bucket/source-path c:\my\local\data\path
在一个拥有4核CPU和16GB RAM的系统上,对于像我这样的情况(3-50GB文件),同步/复制速度从9.5MiB/s提高到700+MiB/s,比默认配置提高了70倍。
100%为我工作,我已经下载了所有的文件从aws s3备份。
安装AWS CLI。选择您的操作系统并按照以下步骤操作:安装或更新AWS CLI的最新版本 检查AWS版本:AWS——version
执行config命令:aws configure
Aws s3 cp s3://yourbucketname你的\本地\路径——递归
例如(Windows操作系统):aws s3 cp s3://yourbucketname C:\aws-s3-backup\project-name——recursive
请查看此链接:如何从S3下载整个存储桶到本地文件夹
使用boto3下载具有特定前缀的桶中的所有对象
import boto3
s3 = boto3.client('s3', region_name='us-east-1',
aws_access_key_id=AWS_KEY_ID,
aws_secret_access_key=AWS_SECRET)
def get_all_s3_keys(bucket,prefix):
keys = []
kwargs = {'Bucket': bucket,Prefix=prefix}
while True:
resp = s3.list_objects_v2(**kwargs)
for obj in resp['Contents']:
keys.append(obj['Key'])
try:
kwargs['ContinuationToken'] = resp['NextContinuationToken']
except KeyError:
break
return keys
def download_file(file_name, bucket,key):
file=s3.download_file(
Filename=file_name,
Bucket=bucket,
Key=key)
return file
bucket="gid-folder"
prefix="test_"
keys=get_all_s3_keys(bucket,prefix):
for key in keys:
download_file(key, bucket,key)