好的,所以我正在设置我的 S3 数据的异地备份,并已将跨区域复制设置到另一个区域的新存储桶。但是,我在原始存储桶中有很多数据也需要移动,超过 2000 万个文件中的数据超过 100TB。我的第一个想法是运行:
aws s3 sync s3://source-bucket s3://destination-bucket
在 EC2 实例上。但这花费的时间比我预期的要长,而且它发出的所有 PUT/LIST 请求的成本都比我预期的要高。
阅读 AWS 文档,他们似乎推荐使用 AWS Snowball 进行此类操作。从常见问题解答:
根据经验,如果使用现有 Internet 连接的空闲容量将数据上传到 AWS 需要超过一周的时间,那么您应该考虑使用 Snowball。
但是,它们看起来像是用于导入或导出,而不是同时用于两者。我需要用同一个雪球做两个不同的工作吗?无论如何,我不会仍然为所有这些 PUT/LIST 请求付费,以便将数据放到雪球上吗?他们提到了 0.03 美元/GB 的数据传输,但没有提到 API 请求。
如果您要将 AWS 中已有的数据复制到另一个区域,Snowball 似乎不是一个好的选择。从 AWS 中的 EC2 实例的命令行运行同步似乎是正确的。
您是否尝试过配置max_concurrent_requests?这可能会解决性能问题。此外,本文对您的情况有更多建议。
如何在 Amazon S3 存储桶之间复制对象?