如何将 S3 存储桶移动到不同位置

如何将 S3 存储桶移动到不同位置

我们使用 S3 存储 Web 应用中的数百万条条目,现在我们将所有内容移至 EC2、欧盟服务器,并且我们还想将 S3 数据移至欧盟。但我们使用的存储桶位于美国,似乎没有工具可以将整个存储桶内容移至不同的存储桶。

当我们切换到 EU bucket 时,还存在如何同步数据的问题,这些数据将在迁移运行时同时创建。

答案1

新官员AWS CLI本机支持的大部分功能s3cmd

http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

aws s3 sync s3://oldbucket s3://newbucket --source-region us-west-1 --region us-west-2

答案2

我想,你可以运行:

s3cmd --recursive cp s3://oldbucket/ s3://newbucket

应该直接复制吧。

答案3

我不知道有哪个打包的解决方案可以做到这一点,但它本质上只是一个存储桶列表,然后将每个对象从美国存储桶复制到欧盟存储桶。PUT-copy API 支持“if-modified-since”和“if-none-match”,因此您可以重复运行它而无需重复工作: http://docs.amazonwebservices.com/AmazonS3/2006-03-01/API/index.html?RESTObjectCOPY.html

对于实时迁移,我建议采用以下方法:

  1. 可选的第一步:如果您有大量数据需要迁移,请考虑使用 AWS Import/Export 在美国的物理设备上捕获数据的第一个快照,然后将其物理运送到欧盟。这可以节省您的时间和金钱。
    • 按照上述方法,使用 if-modified-since 或 if-none-match 设置脚本,将数据从美国迁移到欧盟。使其足够智能,不会用陈旧的美国数据破坏新的欧盟数据(一旦您进入下面的第 5 步)。循环连续运行它,直到两个存储桶处于大致相同的状态。
    • 修改您的 Web 应用程序以同时将数据放入美国和欧盟存储桶,同时继续仅从美国获取数据。
    • 继续运行迁移脚本,直到您确信存储桶处于完全相同的状态(或者尽可能接近,以实现最终的一致性)。
    • 再次修改 Web 应用程序以仅从 EU 存储桶获取数据。
    • 您现在可以关闭迁移脚本。
    • 寻找最终一致性异常并清除它们。
    • 修改 Web 应用程序以停止将数据放入美国存储桶。
    • 删除美国存储桶中的所有内容。

您可能希望在迁移期间在 EU 存储桶上使用 S3 低冗余存储以获得更便宜的数据速率和更快的响应时间,因为数据只是美国数据的副本。

答案4

我已经用 S3 做了大量的工作,但从未遇到过可以原生执行此操作的工具。不过,使用几个s3cmd-同步同步脚本以使两个存储桶彼此同步。

相关内容