我在 S3(这是我的主要文件主机)上托管了 200 GB 的产品图像。
我是否需要在其他地方备份数据,或者 S3 本身就安全吗?
我一直在尝试将 S3 存储桶安装到 EC2 实例,然后每晚进行一次 rsync 备份。问题是它有大约 300 万个文件,因此需要一段时间才能生成不同的 rsync 需求。备份实际上需要大约 3 天才能完成。
有什么想法可以做得更好吗?(如果有必要的话?)
答案1
有趣的是,我一直在研究这个问题。
由于最终的一致性,您对 S3 的备份可能会失败,具体取决于您的区域;基本警告是,如果您这样做足够多,在某些时候您会在打开或查找文件时遇到错误,因为 Amazon 后台的文件系统魔法会在服务器之间同步,所以您的备份可能不可靠。
至于是否需要以其他方式保存它们,这取决于您的风险管理。您信任亚马逊来保存您的数据吗?
他们可能会丢失某些数据,或者他们的存储系统出现更大的故障;毫无疑问,他们的合同中有条款规定,如果他们丢失了你的数据,那就是你的问题。不是他们的问题。此外,鉴于您的数据存储在其他地方,您不知道他们会用它做什么;执法部门想要您的数据?您甚至可能不知道其他人访问了它。
您信任它吗?如果数据不是您的业务的关键,并且您愿意接受这种风险,那么就没有必要将其下载到异地存储。如果您不愿意冒着您的数据在亚马逊的存储服务器中不安全的风险,您应该安排定期将其转储到您自己的存储中。
换句话说,我认为这个问题没有直接的答案,因为这取决于您的风险承受能力和业务需求。许多人不会完全相信他们的收入仅仅来自云存储,我个人对此感到有点担心……
为了更好地做到这一点,在讨论和研究中,另一种要考虑的方法是创建一个足够大的 EBS 卷来存储数据,将其附加到 EC2 实例,将数据保存在那里,然后您可以卸载该卷并将该数据保存到 S3。 我正在研究是否可以将卷文件本身或内容保存到 S3 来完成此操作……但完成后您可以删除 EBS 实例以节省存储成本。
编辑我重读后发现,您是从 S3 保存到 EC2 实例,而不是相反(尽管我不知道最终一致性问题是否仍会在那里引起问题)。您尝试将数据保存到 EC2 实例作为备份?我认为从成本角度来看,这不是一个合理的策略;当您考虑到此类数据的长期存储以及 VM 时间时,将数据备份到本地驱动器可能更便宜。考虑到驱动器成本,您可以将数据复制到本地磁盘作为备份。
我仍然会保留关于信任亚马逊及其存储的警告。如果你想把所有东西都保存在亚马逊 S3 中,但又想获得更多的冗余,那么跨区域复制你的 S3 存储桶,如果它们发生影响一个区域的中断,它不应该影响所有区域。你希望如此。一切皆有可能。
这取决于您对数据的重视程度、您愿意为数据付出多少费用以及您愿意承受多大的风险。
答案2
我用过s3cmd 的 s3cmd sync
来执行此操作。它的操作有点类似于 rsync,可以在 S3 和您选择的另一个 Linux 系统之间推送和拉取整个目录。
我看不出您无法s3cmd sync
运行 EC2 实例,甚至无法运行您自己的开发人员工作站(或存储服务器)的任何理由。
您可能想要设置一个 VPC 实例,然后您可以为 VPC 内的一个小节点分配备份服务器的角色,并为其提供 Amazon 网络内以及本地子网内的 IP。
答案3
我的建议是,数据是您的责任,而不是亚马逊的责任。如果丢失数据不是大问题,那么就不要自己备份。如果是大问题,那么像我一样,将自己的备份(至少)带到便宜的 JBOD(并定期验证)。
当亚马逊丢失你的数据时,你就会知道他们愿意为你的这些数据承担多大的责任。
答案4
虽然这是一个老话题,但它是谷歌搜索 S3 备份时出现的第一件事,所以我想补充一下...
我自己对此进行了一些研究,我发现了 Rclonehttps://rclone.org/- 它是一款类似 rsync 的软件,用于在云文件存储服务之间进行复制,并支持大多数云文件存储服务。没有从属关系,我还没有用过它,所以我不能说它是好是坏,但我认为它可能对某些人有帮助。
在我看来,有机会提供对云托管文件(S3,Google Storage,Rackspace Cloud Files 等)进行“异地”备份的托管服务......