长话短说,我们存储了这样的文件/accounts/account-abc/docs/uuid.pdf
,这是非常多余的。我们想要的基本上是docs/uuid.pdf
. 还有很多其他关于复制的帖子,但它们都是单个目录。我需要这样的东西(这显然是错误的):
aws s3 cp s3://accounts/*/docs s3://docs/ --recursive ---include "*"
我是否需要编写自定义脚本才能完成上述操作?
这是一个 Python 脚本,它将文件从给定复制SOURCE_PATH
到 a TARGET_PATH
,删除所有子文件夹:
import boto3
SOURCE_BUCKET = 'source-bucket'
SOURCE_PATH = 'accounts/'
TARGET_BUCKET = 'target-bucket'
TARGET_PATH = 'docs/'
s3_resource = boto3.resource('s3')
bucket = s3_resource.Bucket(SOURCE_BUCKET)
for object in bucket.objects.filter(Prefix=SOURCE_PATH):
target_key = object.key[object.key.rfind('/')+1:]
print('Copying', target_key)
s3_resource.Object(TARGET_BUCKET, TARGET_PATH + target_key).copy({'Bucket':SOURCE_BUCKET, 'Key': object.key})
# Optional, to delete source object:
# object.delete()
如果您只想从SOURCE_PATH
还包含docs
(根据您的示例)的子目录的 a复制,您可能需要修改它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句