如何将大于 5GB 的 s3 对象从一个存储桶移动到另一个存储桶?

Ben*_*ing 8 filesystems amazon-s3 amazon-web-services

比5GB较大物体具有多部分上传支撑。我们在一个存储桶中已经有 5GB 以上的文件,我想将它们移到同一个 AWS 帐户下的另一个存储桶中。当我使用 s3cmd 发出命令时:

s3cmd mv s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2]
Run Code Online (Sandbox Code Playgroud)

我回来了错误:

ERROR: S3 error: 400 (InvalidRequest): The specified copy source is larger than the maximum allowable size for a copy source: 5368709120
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我认为如果没有额外的带宽/成本,它将无法移动。即便如此,我还是想弄清楚您是否可以以某种多部分方法移动大文件。

emm*_*dee 5

目前,您尝试执行的操作无法在单个操作中完成。将 S3cmd 中的移动到 API 本质上是一个复制和全部删除,它是复制操作的限制。

http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html

您可以在 Amazon S3 中存储最多 5 TB 的单个对象。您可以使用此 API 在单个原子操作中创建最大 5 GB 的对象副本。但是,要复制大于 5 GB 的对象,您必须使用分段上传 Upload Part - Copy API

http://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjctsMPUapi.html

本节中的示例向您展示了如何使用分段上传 API 复制大于 5 GB 的对象。您可以在一次操作中复制小于 5 GB 的对象。