我正在尝试将大量文件从一个存储桶同步到另一个存储桶,像这样使用aws cli的s3 sync命令后,某些文件的大小最大为2GB
aws s3 sync s3://bucket/folder/folder s3://destination-bucket/folder/folder
并验证已传输的文件,很明显,大文件丢失了原始存储桶中原始文件上存在的元数据。
这是较大文件的“已知”问题,其中s3切换到分段上传以处理传输。 可以通过.aws / config文件配置此多部分处理,就像这样
[default]
s3 =
multipart_threshold = 4500MB
但是,当再次测试传输时,仍然不存在较大文件上的元数据时,元数据存在于任何较小文件中,因此很明显,我正在解决分段上传问题。
鉴于这是从s3到s3的传输,是否完全考虑了本地s3配置? 作为替代方案,既然已经传输了所有文件,有没有一种方法可以仅同步元数据?
也尝试过aws s3 cp
也不运气。
答案 0 :(得分:0)
您可以使用跨/相同区域复制将对象复制到另一个Amazon S3存储桶。
但是,只有新添加的对象会在存储桶之间复制。但是,您可以通过将对象复制到自身上来触发复制。我建议您首先在一个单独的存储桶中对此进行测试,以确保您不会意外丢失任何元数据。
最后的选择是编写自己的代码以复制对象,并同时复制元数据。
或者,您可以编写一个脚本,比较两个存储桶,以查看没有获取了正确的元数据的对象,并使其仅更新了目标上的元数据宾语。这实际上涉及在指定元数据的同时将对象复制到自身。这可能比自己复制 ALL 对象容易,因为它只需要“修复”未获取元数据的对象即可。
答案 1 :(得分:0)
最终设法实现了一个解决方案,并借此机会尝试了无服务器框架和步骤功能。
我所遵循的一般流程是:
这可以在没有“步进功能”的情况下实现,但这是让他们轻松进行的一个很好的简单练习。第一个“检查元数据”任务实际上是多余的,因为如果使用多部分传输,则元数据将永远不存在,我最初也触发了PutObject和CopyObject,这就是为什么我要执行“检查元数据”任务。