S3明智地移动文件年/月

时间:2017-11-14 11:28:12

标签: amazon-web-services amazon-s3

我有一个存储桶(s3://Bucket1),其中有数百万个文件,格式如下:

s3://Bucket1/yyyy-mm-dd/

我想移动这些文件,如

s3://Bucket1/year/mm

任何帮助,脚本,方法都会非常有用。

我已经尝试了aws s3 cp s3://Bucket1/ s3://Bucket1/ --include "2017-01-01*"但是效果并不好,而且我必须添加额外的内容来删除文件。

1 个答案:

答案 0 :(得分:0)

基本步骤是:

  1. 获取对象列表
  2. 将对象复制到新名称
  3. 删除旧对象
  4. 获取对象列表

    鉴于您有数百万个文件,最好的方法是使用Amazon S3 Inventory获取所有对象的CSV文件。

    将对象复制到新名称

    然后,编写一个读取CSV文件的脚本并发出 copy()命令将文件复制到新位置。这可以用任何具有AWS SDK(例如Python)的语言编写。

    删除旧对象

    使用S3 object lifecycle management删除旧文件,而不是单独删除对象。使用此方法的好处是:

    • 删除是免费的(而发出数百万条删除命令会产生费用)
    • 可以在复制文件后完成,提供验证所有文件都已正确复制的机会(通过检查下一个S3库存输出)

    您可以使用AWS CLI发出aws s3 mv命令,该命令将复制和删除相结合 - 有效地提供重命名功能。但是,shell脚本并不容易,如果事情中途失败,文件将处于混合状态。这就是为什么我更喜欢"复制所有对象,然后才删除"方法更多。