名校课程推荐 | MIT《CS 实用工具课程》-备份

备份

如果把人分成两种,那就是:

  • 会备份的人

  • 马上要备份的人

任何没有备份的数据都可能随时永远消失。这里我们要介绍一些有关备份的基础知识以及一些方法的缺陷。

3-2-1 法则

3-2-1法则是备份数据的推荐策略,它说的是你应该有

  • 至少3份数据副本

  • 2份在不同媒介上

  • 1份离线保存

这个法则的中心思想是不要把所有鸡蛋都放在同一个篮子里。有2个不同设备/磁盘备份可以确保其中一个硬件故障不会让数据丢失。同样地,如果你把唯一的备份存储在家里,房子被烧或被抢劫,数据就没了,这就是离线备份存在的原因。本地备份实现了即时可用和速度,如果有天灾人祸,有离线备份就有保障。

测试你的备份

执行备份时一个常见的陷阱是盲目相信系统显示的,而不去验证数据是否可以完全恢复。《玩具总动员2》就差点没了,备份也坏了,但运气救了它。

版本管理

你应该了解 RAID 不是一种备份技术,镜像也不是一种备份解决方案。在某些情况下,简单地将文件同步到某个地方是没有帮助的,例如:

  • 数据损坏

  • 恶意软件

  • 误删文件

如果数据上的变动传播到了备份,那么你将无法在这些场景中恢复备份。注意,很多云存储解决方案都是如此,比如Dropbox、Google Drive、One Drive等等。其中一些确实会在短时间内保留删除的数据,但恢复接口通常不会用来恢复大量文件。

为了防止这种故障模式,应该对适当的备份系统进行版本管理。通过及时提供不同的快照,你可以轻松地导航它们来恢复丢失的数据。这类软件中最广为人知的是macOS Time Machine。

数据去重

但是生成多个数据副本可能会非常占用磁盘空间。而从一个版本到下一个版本,大多数数据都是相同的,不需要再次传输。这里就可以用到数据去重,通过追踪已经存储的内容,可以进行 增量备份 ,其中只需要存储从一个版本到下一个版本的更改内容。这大大减少了第一个副本之后备份所需的空间量。

加密

因为我们可能会备份到不可信的第三方,比如云服务商,所以值得考虑的是,如果你备份的数据被原样复制,那么它可能会被不必要的代理查看。像税单这样的文件是敏感信息,不应该以普通格式备份。为了避免这种情况,多数备份解决方案提供 客户端加密 ,即数据在发送到服务器之前进行加密。这样,服务器就不能读取它要存储的数据,但你可以用你的密匙对它进行解密。

顺便说明一下,如果你的磁盘(或主分区)没有加密,那么任何能进入你计算机的人都可以设法覆盖用户访问控制并读取你的数据。现代硬件支持快速高效地读取和写入加密数据,因此你可能需要考虑启用 整盘加密

Append only

到目前为止,我们考虑的属性主要关注硬件故障或用户错误上,但未能解决如果恶意代理想要删除你的数据会发生什么情况。也就是说,如果有人黑进了你的系统,他们可以清除你在乎的所有数据副本吗?如果你担心这种情况,那么你需要某种仅追加(append only)备份的解决方案。这通常意味着有一个服务器它允许发送新数据但拒绝删除现有数据。通常用户有两个键,一个是支持创建新备份的仅追加键,另一个是完全访问键,它支持删除不再需要的原备份。后者是离线存储的。

注意,这是一个非常具有挑战性的场景,因为你需要在进行更改的同时还要防止恶意用户删除你的数据。这方面现有的商业解决方案包括TarsnapBorgbase

其他注意事项

你可能想了解的其他事项:

  • 定期备份 :过时的备份非常没用。你的系统应该考虑定期进行备份

  • 可启动备份 :一些程序允许你克隆整个磁盘。这样,你就有了一个image,它包含你系统的完整副本,你可以直接从这个副本启动。

  • 差异的备份策略,你可能不需要对所有数据一视同仁。你可以针对不同类型的数据定义不同的备份策略。

  • 仅追加备份另一个考虑是,为了防止恶意代理在进入你电脑后删除备份,可以对备份存储库强制执行仅追加操作

网络服务

不是所有你使用的数据都保存在你的硬盘上。如果你使用 网络服务 ,那么你的有些数据可能是在线存储的,比如Google Docs的演示文稿或Spotify的播放列表。另一个容易忽视的例子是通过网页访问的电子邮件帐户,比如Gmail。在这种情况下找到一个备份解决方案有点棘手。不过,有许多服务允许你直接或通过API下载数据。你可以使用gmvault等工具将邮件文件下载到你的计算机上。

Webpages

同样,一些高质量的内容可以在网上以网页形式找到,如果以上内容是静态的,我们可以通过保存网页和所有附件很容易做到备份。另一个做法是Wayback Machine,它是由Internet Archive管理的一个庞大万维网数字档案馆,Internet Archive是一个致力于保存各种媒介的非营利组织。Wayback Machine允许你抓取并存档网页,以便之后检索已为该网站存档的所有快照。如果你认为这有用的话,可以考虑捐赠这个项目。

资源

推荐几个我们用过的比较好用的备份程序和服务:

  • Tarsnap - 致力于重复数据删除、在线加密备份服务

  • Borg Backup - 支持压缩和认证加密的重复数据删除备份程序。如果你需要云服务商,rsync.net针对Borg用户有优惠价。

  • rsync是一个提供快速增量同步工具。它不是一个完整的备份解决方案。

  • rclone,和rsync一样,用于管理云存储上文件的命令行程序,使用它可以同步来自各种云服务的文件,比如Amazon S3, Dropbox, Google Drive, rsync.net等,支持远程文件夹的客户端加密。

练习

  1. 思考你是如何(不)备份你的数据的,并考虑如何修复/改进它。

  2. 思考如何备份你的电子邮件账户

  3. 选择一个你经常使用的网络服务(Spotify、Google Music等),并找出备份数据的选项。通常人们已经基于可用的API制作了工具(如youtube-dl)解决方案。

  4. 想想你近几年经常访问的一个网站,在archive.org上查找它,它有多少个版本?

  5. 一种有效实现重复数据删除的方法是使用硬链接。符号链接(也称为软链接或符号链接)是指向另一个文件或文件夹的文件,而硬链接是指针的完全复制(它使用相同的索引节点,并指向磁盘中的相同位置)。因此,如果原始文件被删除,符号链接将停止工作,而硬链接则不会。但是,硬链接只适用于文件。尝试使用ln命令创建硬链接,并将它们与ln -s创建的符号链接进行比较。(在macOS中,你需要安装gnu coreutils或hln包)。

客服