gpt4 book ai didi

python - 我们可以使用 boto3 Python 在 aws s3 存储桶之间递归复制文件和文件夹吗?

转载 作者:太空狗 更新时间:2023-10-30 00:22:43 25 4
gpt4 key购买 nike

是否可以使用 boto3 将一个源存储桶中的所有文件复制到另一个目标存储桶。并且源存储桶没有规则的文件夹结构。

Source bucket: SRC
Source Path: A/B/C/D/E/F..
where in D folder it has some files,
E folder has some files

Target bucket: TGT
Target path: L/M/N/

我需要使用 boto3 将 SRC 存储桶上方的所有文件和文件夹从文件夹 C 复制到 N 文件夹下的 TGT 存储桶。

任何人都知道任何 API 吗?我们是否需要编写新的 python 脚本来完成此任务。

最佳答案

S3存储对象,它不存储文件夹,即使'/'或'\'是对象键名的一部分。您只需要操作键名并将数据复制过来。

import boto3
old_bucket_name = 'SRC'
old_prefix = 'A/B/C/'
new_bucket_name = 'TGT'
new_prefix = 'L/M/N/'
s3 = boto3.resource('s3')
old_bucket = s3.Bucket(old_bucket_name)
new_bucket = s3.Bucket(new_bucket_name)

for obj in old_bucket.objects.filter(Prefix=old_prefix):
old_source = { 'Bucket': old_bucket_name,
'Key': obj.key}
# replace the prefix
new_key = obj.key.replace(old_prefix, new_prefix, 1)
new_obj = new_bucket.Object(new_key)
new_obj.copy(old_source)

zvikico 推荐的定义 new_key 的优化技术:

new_key = new_prefix + obj.key[len(old_prefix):]

关于python - 我们可以使用 boto3 Python 在 aws s3 存储桶之间递归复制文件和文件夹吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43458001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com