it-swarm.cn

如何在不对源存储桶进行版本控制的情况下备份AWS S3存储桶

有什么方法可以从意外删除Amazon S3存储桶中恢复?

我们的存储桶中有重要信息,我需要减轻存储桶本身意外或恶意删除的风险。

我知道我可以在本地同步整个存储桶,但是如果我的存储桶大小为100GB,这不太实用。

关于备份策略有什么想法吗?

44
Nikhil Gupte

另一种方法是在存储桶上启用S3版本控制。然后,您可以还原已删除的文件等。 请参阅S3文档以了解如何启用此功能

使用 BucketExplorer 之类的第三方工具可以很轻松地进行版本控制(与直接调用API相比)。

您还可以为S3存储桶启用多因素身份验证删除-这使“意外删除”变得有点困难;)

有关多因素身份验证删除的更多信息
有关删除对象的更多信息

23
snarkyboojum

您可以使用s3cmd http://s3tools.org/s3cmd

因此要备份一个名为mybucket的存储桶

s3cmd mb s3://mybucket_backup
s3cmd --recursive cp s3://mybucket s3://mybucket_backup
13
Ian Purton

这不是一个便宜的解决方案,但是如果您的存储桶确实很关键,请按以下步骤操作:启动 Amazon EC2实例 并在那里定期同步内容。

Amazon EC2是他们的虚拟化托管提供商。您可以启动Linux,Windows等实例,并运行所需的任何程序。您按小时付费,就可以在本地为该服务器获得相当大的存储空间。例如,我使用“大型”实例,该实例带有850GB的本地磁盘空间。

最酷的部分是它与S3在同一网络上,并且您可以在S3和EC2之间获得无限的传输。我在Windows EC2实例上使用了$ 20 密林磁盘 软件,它使我可以像访问本地磁盘文件夹一样访问S3存储桶。然后,我可以执行计划的批处理文件以将内容从S3复制到本地EC2磁盘空间。如果需要,或者可以进行赌博,您可以使其自动化以保持每小时备份,将JungleDisk(或其Linux等效版本)设置为每小时同步一次。如果有人删除了文件,则至少需要几分钟的时间才能从EC2取回文件。不过,我还是建议您使用常规脚本备份-如果要将备份压缩到850GB的卷中,则很容易保留几天的备份。

这对于SQL Server日志传送确实很有用,但是我也可以看到它如何实现您的目标。

7
Brent Ozar

一种可能的解决方案是只创建一个“备份存储桶”,并在那里复制您的敏感信息。从理论上讲,S3中的数据比硬盘驱动器中的数据更安全。

另外,我不确定是否会意外删除,因为您需要偶然地删除所有存储桶键,然后才能删除存储桶。

7
JAG

修改布伦特的(优秀)答案;您无需保持实例运行。创建一个EC2 AMI,将您的数据下拉,将其同步到EBS卷,对该卷进行快照并关闭自身。

您可以使卷本身保持正常运行,但是对其进行快照应足以进行备份。如果您的自定义AMI在没有交互的情况下完成了所有这些操作(包括在完成后将其自身关闭),那么您的“备份”脚本只需要执行“ ec2run -n 1 -t m1.small AMI-”并立即执行即可。

6
Andrew Lusk

另一个可能的解决方案是将存储桶复制到S3中的欧洲区域。意外删除后,这可能会使存储桶保留足够长的时间以至于无法恢复。

6
shawnswaner