备份数据,就像我应该是成年人一样

2020-09-21 02:51:25

就像我应该做的很多事情一样,但不要 - 锻炼,吃得好,睡得好,在公共场所为女性和少数族裔挺身而出 - 备份我的数据一直是我最多也就是半途而废的事情。

在过去的10年里,我拖着一个外置硬盘,里面有几百GB的数据,大约每三四年备份一次。每次我尝试从这些备份中恢复任何东西时,我都会后悔,因为我当然只是买了驱动器,插上电源,然后将内容复制到其中,所以它是FAT32驱动器,而我大部分使用的是EXT4文件系统,这意味着在此过程中我所有的文件权限都会丢失。

我已经多次多次递归地编写了可耻的小shell脚本,将文件权限设置为0644,将目录权限设置为0755。

我的部分问题是,我既知道rsync有足够的危险性,又有一张信用卡,这样我就可以配置云虚拟机,所以永远在转角处就是我完美的备份解决方案,我会自己编写、维护和实际执行,而不是处理我生活中发生的任何事情。我已经接受了这永远不会发生的事实,或者更确切地说,我宁愿割伤自己,也不愿为自己编写和维护另一款特别的软件。

幸运的是,我最近发现有两个东西为我解决了整个问题:Borg和rsync.net。

博格是备份软件。它在数据块级别对数据进行压缩和重复数据消除,并且强烈建议(但不强制)您在备份数据之前对数据进行加密。这就是我的rsync和shell脚本这个半途而废的令人厌恶的东西。

我读了几遍它的文档,印象深刻。然后,我开始比较不同的VM主机,看看哪一个可以为我提供最便宜的块存储选项,而随机Google搜索的结果将我引导到了rsync.net。他们是一家存储备份的公司,价格相当便宜,如果你使用Borg进行备份,价格甚至会更低。我猜他们只是真的很喜欢博格,也想让我们也喜欢它。

我签约了他们最便宜的计划,100 GB起,每年18美元。它们没有网络进出成本,并且可以随时调整存储量。一旦我的账户被激活,我做了一个小小的密码重置舞蹈,并上传了一个公共SSH密钥。

这在rsync.net的服务器上创建了一个名为";home&34;的远程Borg存储库。环境变量是,所以我们在远程服务器上使用较新版本的Borg(撰写本文时的版本为1.1.11),因为默认版本相当旧(版本0.29.0)。

在选择要使用的加密方法时,可以在repokey或keyfile之间进行选择(#34;repokey";或";keyfile";)。它们都创建了一个使用密码锁定的私钥;不同之处在于,使用repokey时,密钥存储在Borg存储库中,而使用密钥文件时,密钥存储在Borg存储库之外。归根结底,这取决于我们是否认为密码短语对我们的数据就足够安全,或者我们是否认为有一个秘密密钥文件是必要的。我认为我的密码管理器可以创建足够强大的密码来满足我的需要,并且我不想考虑丢失密钥文件,所以我选择了repokey-blake2&34;。

它在我的主页Borg存储库中创建了存档。我没有更改默认的压缩算法。

默认情况下,Borg使用lz4压缩数据。它可以使用其他压缩方法(xz、zlib、zstd)。我在我拥有的一些二进制文件上比较了它们的压缩比,发现它们之间没有什么不同。我想这是因为我拥有的大型二进制文件大多是有损格式的音频和视频文件,这些文件似乎不会从进一步压缩中获得太多好处。我也有很多文本文件,但是文本在今天的硬件上占用的相对空间太少了,所以花费CPU周期来比lz4更好地压缩它是没有意义的。

这个备份命令嗡嗡作响了一段时间,并经历了几个重启周期。由于重复数据消除,在备份完成后立即(或次日)执行第二次备份所需的时间大大减少:

我将其设置为在中午作为每日定时的systemd服务运行(在NixOS上非常简单,每个Linux用户都应该使用它,除非他们讨厌自己),并且永远不会再考虑这个问题。一年几块钱,这是笔不错的交易。