我有一个存储桶(s3://Bucket1
),其中有数百万个文件,格式如下:
s3://Bucket1/yyyy-mm-dd/
我想移动这些文件,如
s3://Bucket1/year/mm
任何帮助,脚本,方法都会非常有用。
我已经尝试了aws s3 cp s3://Bucket1/ s3://Bucket1/ --include "2017-01-01*"
但是效果并不好,而且我必须添加额外的内容来删除文件。
答案 0 :(得分:0)
基本步骤是:
获取对象列表
鉴于您有数百万个文件,最好的方法是使用Amazon S3 Inventory获取所有对象的CSV文件。
将对象复制到新名称
然后,编写一个读取CSV文件的脚本并发出 copy()命令将文件复制到新位置。这可以用任何具有AWS SDK(例如Python)的语言编写。
删除旧对象
使用S3 object lifecycle management删除旧文件,而不是单独删除对象。使用此方法的好处是:
您可以使用AWS CLI发出aws s3 mv
命令,该命令将复制和删除相结合 - 有效地提供重命名功能。但是,shell脚本并不容易,如果事情中途失败,文件将处于混合状态。这就是为什么我更喜欢"复制所有对象,然后才删除"方法更多。