备份存储在 Amazon S3 上的数据

Fiv*_*ver 16 backup amazon-s3 amazon-web-services

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

我已经阅读了 S3 存储桶的版本控制功能,但我似乎无法找到是否可以恢复没有修改历史记录的文件。有关版本控制,请参阅此处的 AWS 文档:

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

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

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

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

但是,这似乎对我们不起作用,因为文件对象没有复制到 Glacier 而是移动到 Glacier(更准确地说,它似乎是一个对象属性已更改,但无论如何......)。

因此,似乎没有直接的方法来备份 S3 数据,并且将数据从 S3 传输到本地服务器可能非常耗时,并且随着时间的推移可能会产生大量的传输成本。

最后,我们想我们会每个月创建一个新的bucket作为每月的完整备份,并在第1天将原始bucket的数据复制到新的bucket中。然后使用类似duplicity的东西(http://duplicity.nongnu.org/ ) 我们每晚都会同步备份桶。在月底,我们会将备份存储桶的内容放入 Glacier 存储中,并使用原始存储桶的新的当前副本创建一个新的备份存储桶……并重复此过程。这似乎可以工作并最大限度地降低存储/传输成本,但我不确定双重性是否允许直接进行存储桶到存储桶的传输,而无需先将数据传输到控制客户端。

所以,我想这里有几个问题。首先,S3 版本控制是否允许恢复从未修改过的文件?有什么方法可以将文件从 S3“复制”到我错过的 Glacier?duplicity 或任何其他工具可以直接在 S3 存储桶之间传输文件以避免传输成本吗?最后,我在备份 S3 数据的方法上是否离谱?

提前感谢您提供的任何见解!

更新

亚马逊最近宣布版本控制现在适用于生命周期规则

Sir*_*rex 10

我已经阅读了 S3 存储桶的版本控制功能,但我似乎无法找到 >recovery 是否可以用于没有修改历史记录的文件。在 >versioning 上查看 AWS 文档:

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

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

但是,这似乎对我们不起作用,因为文件对象没有复制到 Glacier 而是>移动到 Glacier(更准确地说,它似乎是一个已更改的对象属性,但>无论如何...)。

Glacier 真正用于长期存储,很少访问。一次性检索大部分数据也可能会变得非常昂贵,因为它不适用于大量数据的时间点恢复(按百分比计算)。

最后,我们认为我们会每个月创建一个新的存储桶作为每月的完整>备份,并在第 1 天将原始存储桶的数据复制到新的存储桶中。然后使用诸如duplicityhttp://duplicity.nongnu. org/ ) 我们会每晚同步备份存储桶。

不要这样做,每个帐户只能有 100 个存储桶,因此在 3 年内,仅备份就占用了存储桶限额的三分之一。

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

是的

有什么方法可以将文件从 S3“复制”到我错过的 Glacier?

从来没听说过