云服务 如何增量备份文件至 S3 永不删除?

yakjuly · 2012年07月21日 · 最后由 alvin2ye 回复于 2012年07月23日 · 4695 次阅读

以前上传文件存在本地,每天备份一份至 S3. 这样做有一个坏处就是如果服务器出问题了 只能从 S3 上恢复至前一天的文档。

需求: 文件每次通过 carrierwave 上传,则直接上传至 S3. 如果该文文件被新的文件替换了,S3 也是增量上传文件,旧的文件还在,只是用不到。 如果该文件被删除了,S3 保留文件,只是 rails 不引用那个文件了。

故障恢复。 可通过设定一个时间点 将 S3 上的文件 下载至本地恢复到当时的情况。

好处:

  1. 实时备份,永不删除
  2. 节省 S3 空间
  3. 故障恢复快,简单

预计方法有

  1. 上传文件名等不变,S3 有 versioning 用法, 利用文件的 versioning,对一个文件的 version 状态进行变更,根据 last-modified-time 去做还原

好处:直接利用 S3 的 versioning,但是不宜过度利用。因为 aws 的本意是预防你删错文件。 坏处:大多 S3 上传插件 不支持 S3 的 versioning 用法。得自己写。

  1. 自己做一个 version 表,每次上传文件都记录在单独的表里,生成一个 version_id,上传至 S3 时使用 version_id 作为文件名。

好处:上传插件易用,上传方法 常规。 坏处:还原的时候 依赖数据库,总觉得有点小小的不舒服。

求指点,求插件。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号