我终于找到了一个适用于Linux桌面的备份解决方案:Borg+Vorta

2020-06-09 07:46:42

TLDR;经过多年的搜索,我终于找到了符合我需要的Linux备份设置:Borg+Vorta+BorgBase。

只要我能回想起来,备份我的Linux系统对我来说就一直是个问题。我尝试了各种解决方案,从GNOMES DéjàDUP到各种或多或少维护的开源解决方案,再到使用rsync手动备份文件系统。

前面提到的所有解决方案都不符合我的以下要求中的一项或另一项。

有些人说:“没有后援,没有怜悯”,但我更喜欢“没有自动后备,没有怜悯”。您可能会声称手动计划备份可能是适合您的解决方案,…。对我来说不是。就像新年决心一样:在很短的一段时间后,我会忘记做它们,或者单个备份之间的时间太长,不能真正称其为最新备份。老实说:在我的圈子里,我不知道这个手动策略对谁有效。他们都曾因为上次备份太旧而丢失过重要数据。

我想,只要备份系统不在后台独立工作,它对我就没有用处。

受我的最佳备份解决方案自动特性的影响,我希望使用云存储作为备份端点。这有两个原因:

方便:我不想在备份时随身携带和插入外置硬盘。

火灾和盗窃场景:如果发生罕见的情况,我的笔记本电脑和硬盘都被偷了(有人在地下偷走了我的背包),那么整个备份解决方案都毫无用处。在火灾中被烧毁的两个装置也是如此。

将我的所有备份数据存储在云存储中会带来负面的隐私影响。为什么我要加密我的笔记本电脑硬盘,而我的备份却以明文形式存储在云中?(是的,看看您的iCloud备份)。

只有当我的备份在传输到云存储之前在我的机器上被加密,我才能假设(只要5-Eyes还没有破解量子计算机的加密)除了我之外没有人(甚至云提供商)可以访问我的数据。客户端备份密钥的要求伴随着新的问题BackupInception:如何备份此备份密钥?有关这方面的更多信息,请参阅本文末尾。

为了方便客户端加密,并让我相信备份工具没有欺骗我,至少解决方案的客户端应该是开源的。服务器端的开源对我来说是一件好事,因为它保证如果我选择的提供商消失,另一个提供商可能会填补这一空白。使用封闭源码的服务器,我依赖于商家不会离开。

我不想只将备份用于灾难恢复,比如我的笔记本电脑坏了或着火了,而且还要用于每天“他妈的西蒙搞砸了他的文件”的情况。有时,我会从工作git目录中删除文件或忘记提交。我的备份应该会在我搞砸文件的情况下帮助我,并让我安心更快地进行实验。

为了实现这一点,我希望我的备份系统能让我轻松访问文件系统的不同状态。

在我寻找可行的备份解决方案时,我在大约2年前偶然发现了Borg,我以为它最终解决了我所有的问题。即使我在日常工作中使用了相当多的终端,在我家里的所有机器上启用Borg备份和cronjob也是一个整洁的过程。在最终设法做到这一点之后,我以为我一切都好了,安顿下来了。但显然,cronjob(不是真正的initd,而是系统服务cronjob之类的)出了点问题,我父母的PC几个月都没有备份,没有人意识到这一点。这本身并不是伯格的错误,但它再次向我表明,这个设置仍然处于稳定的-不需要考虑的状态。

继续我的旅程,通过不同的解决方案(重复,重复),都不够稳定或不容易使用,我问HackerNews的人群他们会推荐什么,有人引导我去Borg+Vorta。

Vorta是Borg的GUI,可以在所有主要系统上运行,与此GUI结合使用,Borg实现了我所有的备份梦想。它勾选了我在需求部分打开的所有方框,现在已经平稳运行了大约一个月。救了我三次,设置很简单,没有问题。

Borg是用C/Cython编写的,这使得它在备份创建和备份文件压缩方面有很好的性能。它与差异备份和重复数据消除配合使用,以保持所需的资源、网络和云存储较小。(例如,我当前的备份包含14TB的备份信息,但只需要110 GB)只将更改的文件发送到云存储,从而获得了很高的性能。

在坚实的加密和压缩之上,Borg提供了一个备份安装功能(保险丝系统),这对于像时光机一样的访问来说真的很棒。我可以简单地从某个时间戳装载我的备份,然后通过我的普通文件浏览器访问它。

使用Vorta作为GUI,可以认为博格备份的配置是用户友好的。

通过100%开源,可以监控源代码,项目越大,代码就越好。博格的主要开发商托马斯·瓦尔德曼(Thomas Waldmann)在博格周围提供商业服务。这给了我希望,他对推动博格和继续努力有持续的兴趣。另一方面,在撰写本文时,博格项目的创始资金总计约为每月150欧元。这笔资金不足以让任何开发人员在不久的将来全职开发Borg。

Borg本身没有提供GUI,完全在命令行中运行。正如上一段所述,我绝对不是Borg-CLI专家,也不想深入探讨这个话题。这里有三个很好的Borg cli入门来源:

如果您计划使用Borg备份大量机器,那么您应该考虑一下Borgical。使用borgatic,您可以从一个YAML文件配置Borg。

正如所指出的,Vorta为我改变了Borg,并最终使其成为可行的日常解决方案。GUI为大多数Borg命令行参数提供了一个简单的界面。设置备份非常简单,我花了大约3分钟。

Borg的一个缺点是:为了使Borg能够使用云存储,云存储需要运行Borg备份服务器。这带来了一个限制,即不是所有的云存储都可以使用,并且存储本身可能比S3冰川解决方案稍微贵一点。

如果您是精通技术的用户,并且愿意管理和更新Linux服务器,则可以自己托管Borg后端,如Borg文档中所述。

如果您和我一样喜欢“只需工作”的系统,那么™托管解决方案对您来说可能是更好的方式。因为我的Borg备份是加密的,所以我不在乎谁拥有这些数据,因为他们无法访问这些数据。

我手头有三个托管提供商,它们提供一个博格后端。我与这些提供商中的任何一个都没有任何从属关系:

他们支持Vorta的开发(我希望只要BorgBase存在,Vorta就会一直存在并不断更新)。

具有通知功能,可以在X天未执行备份后给我发电子邮件,以防止上述静默备份失败。

BorgBase作为后端,如果连续5天没有备份,则会发出通知。

保存每小时3份、每日3份、每周4份、每月6份、年度2份的档案和最近72小时的所有档案。(如果我在周五搞砸了什么,我可以在周一滚动查看我的每小时备份,找到一种工作状态)。

我在使用Vorta时发现了一个很好的技巧:您可以定义不备份包含特定文件(例如.nobackup)的目录。因此,如果我有不应该包含在备份CD[目录]中的目录,则触摸.nobackup会将它们排除在外。这个过程感觉比在“排除配置”中输入所有不同的文件路径要容易得多。如果要找出使用此方法排除的目录,可以使用find/-name.nobackup 2>;&;1|grep-v&34;权限。

拥有客户端加密备份的乐趣随之而来的缺点是必须以某种方式存储密钥,并且您可以访问该密钥。如果您丢失了密钥,您的备份也会丢失!

当然,密钥在执行备份的机器上,对于恢复已删除的单个文件的日常工作来说,这可能就足够了。但对于您很可能无法访问您的计算机的情况(盗窃、火灾、磁盘故障、笔记本电脑掉到地上并摔坏,…)。我们需要把钥匙存放在别的地方。

对于此场景,我有以下设置:备份加密密钥保存在我的密码存储(KeepassXC)中。这个密码存储本身有一个随机生成的长主密码,我认为这是安全的。为了不丢失对密码存储的访问,我每年手动将存储保存到在线存储中几次,并自动将其备份到另一台设备上。

当我的机器中断时,一个由四个步骤组成的过程保证我可以再次访问我的文件:1)下载密码存储文件2)从密码存储中获取备份密钥3)安装博格4)恢复数据。

您可能需要考虑最后一种情况:您既无法访问加密密钥,也无法从密码存储中解密它(昏迷、死亡、阿尔茨海默氏症、…)。。如果你害怕这种情况,你应该给你信任的亲戚提供密钥,以及如何访问数据的说明。如果你生活在一个没有一个可以信任的亲戚的场景中,像Shamir秘密共享这样的系统可能会对你有所帮助。