将版本控制的 S3 存储桶还原到特定时间点

将版本控制的 S3 存储桶还原到特定时间点

假设我已为存储桶启用了 S3 版本控制:http://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html

然后,假设某人(例如初级员工)弄乱了 S3 存储桶(意外删除了一些文件等)

那么,我如何将整个版本化存储桶恢复到特定时间点?我相信,有了 S3 的 API,这应该是可能的,但我不想自己编写这样的脚本,因为担心会遗漏某些内容(我不是 AWS 专家)。

有解决这个问题的好办法吗?我使用 S3 存储桶作为我的 Rails 应用程序的图像存储,因此,基于 Ruby 的、可以用作 rake 任务的东西将是理想的选择。

答案1

您可以使用s3-pit-restore

S3 时间点还原是一个您可以用来将存储桶或存储桶子集还原到给定时间点的工具,如下所示:

s3-pit-restore --bucket my-bucket --dest my-restored-bucket --timestamp "06-17-2016 23:59:50 +2"

s3-pit-restore 实际提供的功能:

  • 恢复所有时间戳小于给定时间戳的文件
  • 恢复整个存储桶或存储桶前缀
  • 并行下载多个文件,整体速度很快
  • 自定义并行工作者数量以优化带宽使用
  • 从 s3 bucket 版本或 glacier 恢复(如果已启用)

答案2

如果我理解文档正确做法是,当您启用版本控制时,删除文件只会将“最新”版本恢复为一个版本号。然而,这不是提供恢复整个存储桶的功能。这使得 S3 中的先前版本不适合您的需求(即从删除中恢复)。

为了以防万一,也要在其他地方保留备份。堆栈溢出有关于此问题/答案的使用s3cmd。我相信您可以在某处找到基于 Ruby 的脚本,或者在需要时在该网站上寻求帮助。

相关内容