
本文将讨论备份软件工具,这些工具通过将数据流分成单独的组件(块)来形成存储库。
存储库组件还可以进行压缩和加密,最重要的是-通过重复的备份过程-可以再次使用。
例如,基于各种哈希函数,相似存储库中的备份是相关组件的命名链。
有几种类似的解决方案,我将重点介绍3:zbackup,borgbackup和restic。
预期结果
由于所有申请人都以一种或另一种方式要求创建存储库,因此最重要的因素之一将是存储库大小的估计。 在理想情况下,根据公认的方法,其大小应不超过13 GB,甚至更少-进行良好的优化。
还非常需要能够在不使用tar存档程序的情况下直接备份文件,以及无需其他工具(如rsync和sshfs)即可使用ssh / sftp。
备份行为:
- 存储库的大小等于或小于更改的大小。
- 使用压缩和/或加密时,预计会有很大的处理器负载,并且如果归档和/或加密过程将在备份存储服务器上工作,则网络和磁盘子系统上可能会有相当大的负载。
- 如果损坏存储库,则在创建新备份和尝试还原时都可能会出现延迟错误。 有必要计划其他措施以确保存储库的完整性,或使用内置方法检查存储库的完整性。
如先前文章之一所示,使用tar作为参考值是可接受的。
Zbackup测试
zbackup操作的一般机制是程序在输入处提供的数据流中找到包含相同数据的区域,然后对其进行压缩和加密(可选),每个区域仅保存1次。
对于重复数据删除,带有滑动窗口的64位环形哈希函数用于字节检查与现有数据块的一致性(类似于在rsync中的实现方式)。
对于压缩,在多线程执行中使用lzma和lzo,而对于加密-aes。 在最新版本中,将来有机会从存储库中删除旧数据。
该程序是用C ++编写的,具有最小的依赖关系。 作者显然受到unix-way的启发,因此该程序在创建备份时会在stdin上接收数据,在还原时会向stdout提供类似的数据流。 因此,在编写自己的备份解决方案时,zbackup可以用作很好的“砖”。 例如,文章作者,自2014年以来,该程序是家用计算机的主要备份工具。
除非另有说明,否则常规tar将用作数据流。
让我们看看结果是什么:验证工作有2个版本:
- 创建存储库并在服务器上使用源数据启动zbackup,然后将存储库的内容传输到备份存储服务器。
- 在备份存储服务器上创建一个存储库,在备份存储服务器上通过ssh启动zbackup,并通过管道将数据提供给它。
第一种选择的结果如下:43m11s(使用未加密的存储库和lzma压缩器时),19m13s(使用lzo替换压缩器时)。
源数据在服务器上的负载如下(所示为lzma的示例,其中lzo的情况大致相同,但rsync的比例约为四分之一的时间):

显然,这样的备份过程仅适用于相对罕见且较小的更改。 也非常需要将zbackup的操作限制为1个线程,否则处理器上的负载将非常大,因为 该程序非常擅长在多个线程中工作。 磁盘负载很小,通常对于现代的基于ssd的磁盘子系统而言,这不会引起注意。 您还可以清楚地看到将存储库数据同步到远程服务器的过程的开始,其速度与常规rsync相当,并且取决于备份存储服务器的磁盘子系统的性能。 该方法的缺点是本地存储库的存储,结果是数据的重复。
实际上,更有趣和实用的是第二种选择,即在备份存储服务器上立即运行zbackup。
首先,我们将在不使用lzma压缩器使用加密的情况下检查操作:

每次测试运行的时间:
如果使用aes激活加密,结果将非常接近:

对相同数据的运行时间,并进行加密:
如果将加密与lzo上的压缩结合使用,它将像这样:

工作时间:
最终存储库的大小相对相同,总计为13GB。 这意味着重复数据删除工作正常。 另外,在已经压缩的数据上,使用lzo会产生明显的效果,就总运行时间而言,zbackup接近于重复/重复,但是,它比基于librsync的延迟2-5倍。
好处显而易见-节省备份存储服务器上的磁盘空间。 至于用于检查存储库的工具-zbackup不提供它们,建议使用故障安全磁盘阵列或云提供程序。
总的来说,尽管该项目已经实施了3年,但给人留下了很好的印象(最近的功能要求大约是一年前,但没有答案)。
测试borgbackup
Borgbackup是阁楼的一个分支,是另一个zbackup式系统。 它是用python编写的,具有类似于zbackup的功能列表,但另外还知道如何:
- 通过保险丝安装备份
- 检查存储库内容
- 在客户端-服务器模式下工作
- 对数据使用各种压缩器,并在压缩文件类型时使用启发式定义。
- 2种加密,AES和Blake选项
- 内置工具
性能检查borgbackup基准测试Crud ssh:// backup_server / repo / path local_dir
结果如下:
CZ-BIG 96.51 MB / s(10 100.00 MB全零文件:10.36s)
RZ-BIG 57.22 MB / s(10 100.00 MB全零文件:17.48s)
UZ-BIG 253.63 MB / s(10 100.00 MB全零文件:3.94s)
DZ-BIG 351.06 MB / s(10 100.00 MB全零文件:2.85s)
CR-BIG 34.30 MB / s(10 100.00 MB随机文件:29.15s)
RR-BIG 60.69 MB / s(10 100.00 MB随机文件:16.48s)
UR-BIG 311.06 MB / s(10 100.00 MB随机文件:3.21s)
DR-BIG 72.63 MB / s(10 100.00 MB随机文件:13.77s)
CZ-MEDIUM 108.59 MB / s(1000 1.00 MB全零文件:9.21s)
RZ-MEDIUM 76.16 MB / s(1000 1.00 MB全零文件:13.13s)
UZ-MEDIUM 331.27 MB / s(1000 1.00 MB全零文件:3.02s)
DZ-MEDIUM 387.36 MB / s(1000 1.00 MB全零文件:2.58s)
CR-MEDIUM 37.80 MB / s(1000 1.00 MB随机文件:26.45s)
RR-MEDIUM 68.90 MB / s(1000 1.00 MB随机文件:14.51s)
UR-MEDIUM 347.24 MB / s(1000 1.00 MB随机文件:2.88s)
DR-MEDIUM 48.80 MB / s(1000 1.00 MB随机文件:20.49s)
CZ-SMALL 11.72 MB / s(10000 10.00 kB全零文件:8.53s)
RZ-SMALL 32.57 MB / s(10000 10.00 kB全零文件:3.07s)
UZ-SMALL 19.37 MB / s(10000 10.00 kB全零文件:5.16s)
DZ-SMALL 33.71 MB / s(10000 10.00 kB全零文件:2.97s)
CR-SMALL 6.85 MB / s(10000 10.00 kB随机文件:14.60s)
RR-SMALL 31.27 MB / s(10000 10.00 kB随机文件:3.20s)
UR-SMALL 12.28 MB / s(10000 10.00 kB随机文件:8.14s)
DR-SMALL 18.78 MB / s(10000 10.00 kB随机文件:5.32s)
在测试过程中,启发式将用于定义文件类型的压缩(自动压缩),结果如下:
首先,检查未加密的操作:
工作时间:
如果启用存储库授权(认证模式),结果将接近:

工作时间:
激活AES加密后,结果不会有太大的降低:

如果将aes更改为blake,情况将完全改善:

工作时间:
与zbackup一样,存储库的大小为13GB,甚至略小,这在一般情况下是可以预期的。 工作时间非常令人高兴,它可以与基于librsync的解决方案相提并论,从而提供了更大的可能性。 我还很高兴能够通过环境变量设置各种参数,这在自动模式下使用borgbackup时具有非常重要的优势。 备份期间的负载也很令人满意:从处理器负载来看-borgbackup在1个线程中工作。
使用时没有特别的缺点。
测试restic
尽管restic是一个相当新的解决方案(自2013年或更早以来就已知前两个候选者),但它具有很好的特性。 用Go语言编写。
与zbackup相比,它还提供:
- 检查存储库的完整性(包括检入部分)。
- 大量支持存储备份的协议和提供程序的列表,以及rclone-对云解决方案的rsync支持。
- 相互比较两个备份。
- 通过保险丝安装存储库。
通常,可能性列表与borgbackup非常接近,在某些地方更多,在某些地方更少。 功能-缺乏禁用加密的能力,因此,备份将始终被加密。 让我们在实践中看看您可以从该软件中获得什么:
结果如下:
工作时间:
结果也可以与基于rsync的解决方案相媲美,并且通常与borgbackup非常接近,但是处理器负载较高(工作多个线程)且锯齿较大。
与rsync一样,该程序最有可能取决于存储服务器上磁盘子系统的性能。 就像zbackup或borgbackup一样,存储库大小为13GB,使用此解决方案时没有明显的缺点。
结果
实际上,所有候选人都有接近的指标,但价格不同。 Borgbackup已经证明自己是最好的,但速度稍慢-Restic,zbackup,也许您不应该开始申请,
如果已在使用它,请尝试更改为borgbackup或restic。
结论
最有前途的解决方案是Restic,因为 是他的能力与速度之比最佳,但是现在我们不急于得出一般结论。
从原则上讲,Borgbackup并不差,但替换zbackup可能更好。 但是,为了确保规则3-2-1起作用,仍可以使用zbackup。 例如,除了基于(lib)rsync的备份工具。
公告公告
备份,第1部分:为什么需要备份,方法,技术概述
备份,第2部分:概述和测试基于rsync的备份工具
备份,第3部分:概述和测试重复性,重复
备份,第4部分:概述和测试zbackup,restic,borgbackup
备份,第5部分:测试Linux的Bacula和Veeam备份
备份:读者要求的部分:AMANDA审查,UrBackup,BackupPC
备份,第6部分:比较备份工具
备份第7部分:结论
由 Finnix 发布