What is the easiest way to duplicate an entire Amazon S3 bucket to a bucket in a different account? Ideally, we'd like to duplicate the bucket nightly to a different account in Amazon's European data center for backup purposes.
6 回答
要考虑的一件事是,您可能希望在 Amazon EC2 虚拟机中运行任何执行此操作的程序。如果您的备份在 Amazon 的云之外运行,那么您需要为双向数据传输付费。如果您在 EC2 虚拟机中运行,则无需支付带宽费用(尽管我不确定在北美和欧洲商店之间移动时这是否属实) - 仅适用于 EC2 实例运行的时间(以及任何它存储 EC2 虚拟机的成本,我认为应该是最低的)。
I suspect there is no "automatic" way to do this. You'll just have to write a simple app that moves the files over. Depending on how you track the files in S3 you could move just the "changes" as well.
On a related note, I'm pretty sure Amazon does a darn good job backup up the data so I don't think you necessarily need to worry about data loss, unless your back up for archival purposes, or you want to safeguard against accidentally deleting files.
您可以创建一个应用程序或服务,负责为AmazonS3Client
源创建两个实例,另一个为目标创建另一个实例,然后源AmazonS3Client
开始在源存储桶中循环并流式传输对象,而目标AmazonS3Client
将它们流式传输到目标存储桶。
酷,我可能会考虑编写一个脚本来托管在 Ec2 上。备份的主要目的是防止我们这边的人为错误——如果用户不小心删除了存储桶或类似的东西。
如果您担心删除,您可能应该查看 S3 的新版本控制功能。
注意:这不适用于跨帐户同步,但适用于同一帐户的跨区域。
为了简单地将所有内容从一个存储桶复制到另一个存储桶,您可以使用 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-桶间/
有多种方法可以每晚运行。一个例子是 AWS 实例调度(个人未经验证)https://docs.aws.amazon.com/solutions/latest/instance-scheduler/appendix-a.html