备份存储在Amazon S3上的数据

我有一个运行Web服务器的EC2实例,将用户上传的文件存储到S3。 这些文件是一次写入,永远不会改变,但偶尔会被用户检索。 我们每年可能会累积大约200-500GB的数据。 我们希望确保这些数据是安全的,尤其是意外删除,并希望能够恢复被删除的文件,而不pipe其原因。

我已经阅读了关于S3桶的版本特性,但我似乎无法find没有修改历史的文件是否可以恢复。 有关版本的信息,请参阅AWS文档:

http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectVersioning.html

在这些例子中,他们没有显示数据上传的场景,但从未修改过,然后被删除。 这种情况下删除的文件是否可恢复?

然后,我们认为我们可以使用对象生命周期pipe理将S3文件备份到Glacier:

http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html

但是,这似乎对我们不起作用,因为文件对象不会被复制到冰川,而是移动到冰川(更准确地说,它似乎是一个对象属性被改变,但无论如何…)。

因此,似乎没有直接的方法来备份S3数据,并且将数据从S3传输到本地服务器可能是耗时的,并且可能随着时间的过去而导致显着的传输成本。

最后,我们认为我们每个月都会创build一个新的存储桶来作为每月的完整备份,并在第1天将原始存储桶的数据复制到新的存储桶中。然后使用诸如duplicity( http://duplicity.nongnu.org/) )我们会每晚同步备份存储桶。 在本月底,我们会将备份存储桶的内容放入Glacier存储中,并使用原始存储桶的新当前副本创build新的备份存储桶并重复此过程。 这似乎是可行的,并最大限度地减less了存储/传输成本,但我不确定是否允许直接从桶到桶的传输,而不是首先将数据放到控制客户端。

所以,我想这里有几个问题。 首先,S3版本是否允许恢复从未修改过的文件? 有什么方法可以“复制”从S3到冰河的文件,我已经错过了? 可以直接在S3存储桶之间进行复制或其他工具传输文件以避免传输成本? 最后,我在备份S3数据的方法中脱颖而出吗?

预先感谢您提供的任何见解!

更新

亚马逊最近宣布版本化现在与生命周期规则一起工作

我已经阅读了关于S3桶的版本特性,但我似乎无法find>恢复是否可能的文件没有修改历史。 有关版本的信息,请参阅AWS文档:

我刚刚试过这个。 是的,您可以从原始版本恢复。 删除文件时,会生成一个删除标记,您可以在此之前恢复该版本,即:单一修订版本。

然后,我们认为我们可以使用对象生命周期>pipe理将S3文件备份到Glacier:

但是,似乎这对我们不起作用,因为文件对象不会被复制到冰川,而是移动到冰川(更准确地说,它似乎是一个对象属性被改变,但是>无论如何…)。

冰川是真正意义上的长期存储,这是很less访问。 一次性检索大部分数据也会非常昂贵,因为这并不意味着要及时恢复大量数据(百分比)。

最后,我们认为我们每个月都会创build一个新的桶来作为每月的full>备份,并在第一天将原桶的数据复制到新的桶中。然后使用类似于duplicateity ( http://duplicity.nongnu。 org / ),我们会每隔>夜晚同步备份存储桶。

不要这样做,每个账户只能有100个桶,所以在3年内,只需要备份就可以占用桶的三分之一。

所以,我想这里有几个问题。 首先,S3版本是否允许恢复>从未修改过的文件?

有什么方法可以“复制”从S3到冰河的文件,我已经错过了?

从来没听说过

我不喜欢安装S3,因为它的速度很慢,可以像老式的nfs一样挂起来。 根据需要更好地上/下。

http://s3tools.org/s3cmd

它容易脚本…不要忘记你的〜/ .s3cfg文件

听起来像你可能需要S3FS基本上安装你的S3桶,就好像它们是本地文件系统:

http://code.google.com/p/s3fs/wiki/FuseOverAmazon

我更喜欢使用此分叉版本,因为它保留了与Amazon S3的Web控制面板中创build的文件夹结构相同的文件夹结构:

https://github.com/tongwang/s3fs-c

然后我有一些shell脚本,基本上使用rsync将数据同步到我的本地设置。

一般来说,我发现S3FS最适合阅读放在Amazon S3存储桶中的内容。 写作不一致。 但是为了备份S3存储桶,S3FS的Tony Wang分支工作很好。