将所有文件从S3复制到ESB驱动器

时间:2015-07-14 09:42:16

标签: amazon-web-services amazon-ec2 amazon-s3

有没有办法将所有文件从S3复制到属于EC2实例的EBS驱动器(可能属于与S3不同的AWS账户)?

我们正在执行整个帐户的迁移并将实例从t1升级到t2类型,并希望在S3以外的某个地方(以及冰川与S3密切相关的Glacier)备份数据,以防出现问题我们丢失了数据。

我发现只有文章和文档谈论EBS快照,但我不确定S3数据是否可以实际复制到EBS(除了手动以外的其他方式)。

根据this文档,我可以ssh到我的实例并将数据从S3存储桶复制到我的本地EBS驱动器,但我必须指定存储桶的名称。有没有办法如何复制那里的所有桶?

aws s3 sync s3://mybucket

我想实现这个目标:

伪代码:

for each bucket
 do
  aws s3 sync s3://bucketName bucketName
endfor

有没有办法如何使用AWS CLI执行此操作?

2 个答案:

答案 0 :(得分:1)

Amazon S3旨在提供给定年份内99.999999999%的对象持久性,并通过在区域内的可用区域内跨3个独立设施(想想数据中心)自动复制放入存储桶的数据来实现此目的。该耐久性水平对应于平均年度预期损失0.000000001%的对象。例如,如果使用Amazon S3存储10,000个对象,则平均每10,000,000年可能会丢失一个对象。此外,Amazon S3旨在维持两个设施中的并发数据丢失。

如果您仍然担心丢失数据,可以考虑将存储桶的内容复制到另一个区域中设置的新存储桶中。这意味着您将数据放在1个系统中,该系统提供11x9,并在另一个提供11x9的系统中提供副本。假设您的原始存储桶位于都柏林地区,请创建相应的备份'在法兰克福地区使用桶并使用sync命令。

例如。 aws s3 sync s3:// originalbucket s3:// backupbucket

通过这种方式,您将在遍布欧洲的六个不同设施中拥有六份数据副本(如果您在美国或亚洲使用多个地区,这自然也是相关的)。这将是一个更加冗余的配置,而不是将其泵入EBS卷(与S3相比)99.999%的可用性。 S3的费率低于EBS(S3中的1TB = 30美元,而EBS中的1TB(磁性)= 50美元)的经济性更好,您只需支付您消费的容量,而EBS则基于您提供的产品。

快乐的日子......

参考

http://aws.amazon.com/s3/faqs/

http://aws.amazon.com/ebs/faqs/

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

答案 1 :(得分:0)

我同意rdp-cloud的答案,但是如果你坚持创建EBS备份,回答你的问题 - 没有一个aws cli命令可以一次性同步所有可用的桶。您可以使用bash脚本获取所有可用存储桶的列表,然后通过它们同步循环:

#!/bin/bash

BUCKETS=($(aws s3 ls | awk '{print $3}'))

for (( i=0; i<${#BUCKETS[@]}; i++ ))
do
  aws s3 sync s3://$BUCKETS[$i] <destination>
done

确保在运行上述内容之前测试aws s3 ls | awk '{print $3}'是否为您提供了要同步的确切列表。