我注意到似乎没有从AWS管理控制台下载整个s3桶的选项。
有什么简单的方法可以把所有东西都装进我的桶里吗?我正在考虑使根文件夹公共,使用wget抓取它,然后再次使它私有,但我不知道是否有更简单的方法。
我注意到似乎没有从AWS管理控制台下载整个s3桶的选项。
有什么简单的方法可以把所有东西都装进我的桶里吗?我正在考虑使根文件夹公共,使用wget抓取它,然后再次使它私有,但我不知道是否有更简单的方法。
当前回答
如果您只想从AWS下载桶,请首先在您的计算机中安装AWS CLI。在终端更改目录到你想下载的文件,并运行这个命令。
aws s3 sync s3://bucket-name .
如果你也想同步本地和s3目录(如果你在本地文件夹中添加了一些文件),运行这个命令:
aws s3 sync . s3://bucket-name
其他回答
使用AWS S3 CLI下载:
aws s3 cp s3://WholeBucket LocalFolder --recursive
aws s3 cp s3://Bucket/Folder LocalFolder --recursive
要使用代码下载,请使用AWS SDK。
要使用GUI下载,请使用Cyberduck。
使用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)
除了关于aws s3同步的建议外,我还建议查看s5cmd。
根据我的经验,我发现对于多次下载或大规模下载,这比AWS CLI要快得多。
S5cmd支持通配符,这样可以工作:
S5cmd cp s3://桶名/* ./文件夹
Windows User need to download S3EXPLORER from this link which also has installation instructions :- http://s3browser.com/download.aspx Then provide you AWS credentials like secretkey, accesskey and region to the s3explorer, this link contains configuration instruction for s3explorer:Copy Paste Link in brower: s3browser.com/s3browser-first-run.aspx Now your all s3 buckets would be visible on left panel of s3explorer. Simply select the bucket, and click on Buckets menu on top left corner, then select Download all files to option from the menu. Below is the screenshot for the same:
桶选择界面
然后浏览文件夹以下载特定位置的bucket 点击OK,下载就开始了。
您可以使用sync来下载整个S3桶。例如,下载当前目录下名为bucket1的整个桶。
aws s3 sync s3://bucket1 .