AWS:在将S3文件备份到Glacier的同时降低成本的方法?

时间:2013-03-05 18:50:11

标签: amazon-s3 amazon-ec2 amazon-glacier

作为我们项目的一部分,我们在S3上创建了一个非常浓密的文件夹/文件树,所有文件占用了大约6TB的数据。我们目前没有这些数据的备份,这是不好的。我们想定期备份。似乎像冰川一样。

问题是:保持备份总成本的方法是什么?

我们的大多数文件都是文本,因此我们可以压缩它们并上传整个ZIP存档。这将需要处理(在EC2上),所以我很好奇是否有任何经验法则来比较运行EC2实例以进行压缩而不仅仅是上传未压缩文件的额外成本。

另外,我们必须为数据传输付费,所以我想知道除了(i)从S3下载文件到实例之外是否有任何备份方式; (ii)以原始形式上传文件或将其压缩至Glacier。

2 个答案:

答案 0 :(得分:19)

我通常认为Glacier是S3的替代存储,而不是附加存储。即,数据通常存储在S3或Glacier中,但很少存储在两者中。

如果您信任S3公布的11个耐久性9,那么您就不会备份,因为S3本身可能会丢失数据。

您可能希望备份数据,因为(就像我一样)您将亚马逊帐户视为单点故障(例如,凭据遭到入侵或亚马逊阻止您的帐户,因为他们认为您正在做一些滥用行为)。但是,在这种情况下,Glacier不是一个足够的备份,因为它仍属于亚马逊的保护伞。

如果您担心由于用户错误,凭据泄露等原因导致S3中的数据丢失,我建议您在亚马逊以外备份S3数据。

我建议您使用Glacier作为存档数据的地方,以便在您知道自己不需要访问它的情况下进行长期,廉价的存储,如果有的话。当事物转移到Glacier时,您将从S3中删除它们。

亚马逊提供从S3到Glacier的自动存档,效果很好,但如果文件的平均大小很小,请注意额外的费用。这是我写的关于这种危险的文章:

  

将S3对象转换为冰川的成本
  http://alestic.com/2012/12/s3-glacier-costs

如果您仍想从S3复制到Glacier,以下是与您的问题相关的一些要点:

  • 您可能会将数据长时间保留在Glacier中,因此压缩它可能值得短期使用CPU。确切的权衡取决于诸如数据的可压缩性,压缩所需的时间以及执行压缩所需的频率等因素。

  • 将数据从S3下载到EC2实例是免费的。将数据上传到Glacier没有数据传输费用。

  • 如果您将许多小文件上传到Glacier,则每件商品的上传费用会相加。您可以通过将许多小文件组合到一个存档中并上传它来节省成本。

另一个可以帮助防止因用户错误或攻击造成意外丢失的S3功能是打开S3版本并启用MFA(多因素身份验证)。这可以防止任何人永久删除对象,除非他们拥有凭据和您拥有的物理设备。

答案 1 :(得分:1)

我最初通过执行以下操作来解决我想要备份的S3存储桶中的相同问题:

  1. 为我要备份到Glacier的每个S3存储桶创建第二个“镜像”存储桶
  2. 启动一个用于运行cron作业的微型Ubuntu服务器实例
  3. 在服务器上安装s3cmd
  4. 编写shell脚本以将每个存储桶中的所有对象同步到镜像存储桶
  5. 启用镜像存储桶上的生命周期规则,将每个对象的状态更改为“Glacier”
  6. 这很好用,但我为了我的目的决定在我的存储桶上启用版本控制更容易。这可确保在意外删除或更新对象时,可以恢复该对象。这种方法的缺点是恢复整个分支或子树的过程可能是耗时的。但它更容易,更具成本效益,并且足以保护铲斗内容物免受永久性破坏。

    希望能帮助有人在路上。