有没有办法从意外删除 Amazon S3 存储桶中恢复?
我们的存储桶中有关键信息,我需要降低意外或恶意删除存储桶本身的风险。
我知道我可以在本地同步整个存储桶,但是如果我的存储桶大小为 100GB,这不太实用。
关于备份策略的任何想法?
小智 25
另一种方法是在您的存储桶上启用 S3 版本控制。然后您可以恢复已删除的文件等。有关如何启用此功能,请参阅 S3 文档
使用像BucketExplorer这样的第三方工具使得版本控制变得非常简单(与直接调用 API 相比)。
您还可以为您的 S3 存储桶启用多因素身份验证删除 - 这使得“意外删除”变得更加困难;)
小智 15
你可以使用 s3cmd http://s3tools.org/s3cmd
所以要备份一个叫做 mybucket 的bucket
s3cmd mb s3://mybucket_backup
s3cmd --recursive cp s3://mybucket s3://mybucket_backup
Run Code Online (Sandbox Code Playgroud)
一种可能的解决方案可能是创建一个“备份桶”并在那里复制您的敏感信息。理论上,您的数据在 S3 中比在硬盘中更安全。
另外,我不确定意外删除是否是一个真正的问题,因为您需要在删除存储桶之前意外删除所有存储桶键。
这不是一个便宜的解决方案,但如果您的存储桶真的很重要,您可以这样做:启动Amazon EC2 实例并定期同步那里的内容。
Amazon EC2 是他们的虚拟化托管服务提供商。您可以启动 Linux、Windows 等的实例并运行您想要的任何东西。您按小时付费,并且您在本地为该服务器获得了相当大的存储空间。例如,我使用“大”大小的实例,它带有 850GB 的本地磁盘空间。
很酷的部分是它与 S3 位于同一网络上,并且您可以在 S3 和 EC2 之间进行无限制的传输。我在 Windows EC2 实例上使用 20 美元的Jungle Disk软件,它让我可以像访问本地磁盘文件夹一样访问我的 S3 存储桶。然后我可以执行预定的批处理文件将内容从 S3 复制到我的本地 EC2 磁盘空间。如果你愿意,你可以自动化它以保持每小时备份,或者如果你想赌博,设置 JungleDisk(或它的 Linux 等价物)每小时同步一次。如果有人删除了一个文件,您至少有几分钟的时间从 EC2 取回它。不过,我建议使用常规脚本备份 - 如果您将备份压缩到 850GB 的卷上,则很容易保留几天的备份。
这对于 SQL Server 日志传送非常有用,但我也可以看到它是如何实现您的目标的。
小智 6
稍微修改一下布伦特的(优秀的)答案;您不需要保持实例运行。创建一个 EC2 AMI,将您的数据拉下来,将其同步到 EBS 卷,为该卷创建快照并自行关闭。
您也可以保持卷本身运行,但快照它应该足以进行备份。如果您的自定义 AMI 在没有交互的情况下执行所有这些操作(包括在完成后自行关闭),那么您的“备份”脚本只需要“ec2run -n 1 -t m1.small ami-”和即发即忘。