许多用户认为备份就像把文件复制到第二个驱动器一样简单。然而,这种“镜像”方法无法抵御几种常见的风险。简单的复制无法防止人为错误,例如意外格式化驱动器或运行覆盖数据的脚本。它也未能考虑到“位衰减”(bit rot)——即由于硬盘上的磁性颗粒偏移或 SSD 中 NAND 晶体管随时间漏电而导致的数据逐渐损坏。为了解决这些问题,一个可靠的系统必须确保数据不仅被复制,而且被保存在即使原始源受损或损坏也能恢复的状态中。

有效的数据保护依赖于快照和恢复点目标(RPO)的概念。与仅显示磁盘当前状态的镜像不同,快照允许用户“回到过去”到之前的状态。这对于从意外删除等错误中恢复至关重要。然而,频繁的快照会造成巨大的存储负担。为了管理这一点,系统可以使用祖父-父亲-儿子(GFS)轮换,即快照频率随着它们更接近当前日期而增加(例如,保留 14 天的每日备份,保留 7 周的每周备份,以及保留一年的每月备份)。为了进一步优化存储和带宽,系统可以使用增量备份和去重技术。这些方法不是存储每个文件的相同副本,而是仅存储快照之间的变化,并通过硬链接引用现有文件。这种方法被 rsnapshot 等工具采用,以节省存储空间并减少将文件传输到第二台机器或云服务所需的带宽。

尽管有这些优化,构建自定义备份解决方案仍涉及重大的技术障碍,例如维护数据库一致性和处理云端特定限制。例如,数据库可能会批量将数据刷新到磁盘,这意味着在错误的毫秒内拍摄的快照可能会导致数据损坏;确保一致性通常需要在快照过程中“冻结”所有 I/O。此外,像 Amazon S3 这样的云提供商可能会对上传大量小文件收取高昂费用,并可能剥离重要的文件元数据。由于这些复杂性,作者建议使用 Borg 或 Restic 等成熟工具,这些工具通过处理加密、块级去重和校验和来抽象掉这些困难。最终,只有当备份能够成功恢复时才具有功能性,因此,定期且经过验证的恢复演练是任何数据保护策略中最后且必不可少的步骤。