【发布时间】:2010-10-23 12:04:49
【问题描述】:
将整个 Amazon S3 存储桶复制到不同账户中的存储桶的最简单方法是什么?理想情况下,我们希望每晚将存储桶复制到亚马逊欧洲数据中心的另一个帐户以进行备份。
【问题讨论】:
将整个 Amazon S3 存储桶复制到不同账户中的存储桶的最简单方法是什么?理想情况下,我们希望每晚将存储桶复制到亚马逊欧洲数据中心的另一个帐户以进行备份。
【问题讨论】:
要考虑的一件事是,您可能希望在 Amazon EC2 虚拟机中运行任何执行此操作的程序。如果您的备份在 Amazon 的云之外运行,那么您需要为双向数据传输付费。如果您在 EC2 虚拟机中运行,则无需支付带宽费用(尽管我不确定在北美和欧洲商店之间移动时这是否属实) - 仅适用于 EC2 实例运行的时间(以及无论它存储 EC2 虚拟机的成本,我认为应该是最低的)。
【讨论】:
酷,我可能会考虑编写一个脚本来托管在 Ec2 上。备份的主要目的是防止我们这边的人为错误——如果用户不小心删除了存储桶或类似的东西。
【讨论】:
如果您担心删除,您可能应该查看 S3 的新 Versioning 功能。
【讨论】:
我怀疑没有“自动”的方法可以做到这一点。您只需要编写一个简单的应用程序来移动文件。根据您在 S3 中跟踪文件的方式,您也可以只移动“更改”。
在相关说明中,我很确定亚马逊在备份数据方面做得非常好,所以我认为您不必担心数据丢失,除非您出于存档目的进行备份,或者您想要防止意外删除文件。
【讨论】:
您可以让一个应用程序或服务负责创建两个AmazonS3Client 实例,一个用于源,另一个用于目标,然后源AmazonS3Client 开始在源存储桶中循环并在其中流式传输对象,然后目标AmazonS3Client 将它们流式传输到目标存储桶。
【讨论】:
注意:这不适用于跨帐户同步,但适用于同一帐户的跨区域。
要简单地将所有内容从一个存储桶复制到另一个存储桶,您可以使用 AWS CLI (https://aws.amazon.com/premiumsupport/knowledge-center/move-objects-s3-bucket/):aws s3 sync s3://SOURCE_BUCKET_NAME s3://NEW_BUCKET_NAME
在您的情况下,您需要 --source-region 标志:https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html
如果您要移动大量数据,您可以通过想办法将传输分成不同的组来优化传输速度:https://aws.amazon.com/premiumsupport/knowledge-center/s3-large-transfer-between-buckets/
有多种方法可以在夜间运行。一个例子是AWS instance-schedule(个人未经验证)https://docs.aws.amazon.com/solutions/latest/instance-scheduler/appendix-a.html
【讨论】: