#备份 #文件树 #哈希 #完整性 #元数据 #更新 #捕获

程序+库 rsure

Rsure 捕获文件树的相关哈希和元数据,并可以在之后验证这些哈希和元数据,以确定文件是否发生变化。它支持增量更新,并包括一个独立的可执行文件用于扫描和检查树。

11 个不稳定版本

0.9.4 2022年2月16日
0.9.3 2021年3月21日
0.9.0 2019年9月8日
0.8.1 2018年5月19日
0.5.0 2016年7月31日

#1151文件系统

每月 29 次下载

MIT 许可证

140KB
3K SLoC

包含 (Zip 文件, 10KB) timing-parellel.xlsx

Rsure 文件完整性

Build Status

人们常说,除非你测试了备份,否则备份是没有用的。但是,如何知道测试恢复实际上是否成功了呢?Rsure 就是为此而设计的。

历史

md5sum 程序捕获一组文件的 MD5 哈希。它还可以读取此输出并比较哈希值与文件。通过在备份前捕获哈希值,并在测试恢复后比较它们,你可以对文件内容至少正确有信心。

然而,这并没有捕获文件的权限和其他属性。有时恢复可能因为这类原因而失败。

入侵检测

有几个类似解决方案专注于入侵检测。Tripwire 和 FreeVeracity(或 Veracity)值得考虑。想法是文件在原地比较以验证它们是否被修改。

不幸的是,至少 Tripwire 似乎过于专注于入侵检测问题,以至于该工具在验证备份方面效果不佳。它确实需要一个中央数据库,并使用绝对路径名来使用文件。然而,FreeVeracity 对于验证备份非常有用,但它似乎已经完全消失了(它有一个不寻常的许可证)。

增量更新

这些解决方案中没有解决的一个问题是增量更新,这可能是由于对入侵检测的重视。在正常运行的系统中,POSIX ctime 字段可以可靠地用来确定文件是否已修改。通过利用这一点,完整性程序可以避免重新计算未更改的文件的哈希值。这种策略与大多数备份软件所做的类似。这是很重要的,因为花费时间对每个文件进行哈希处理可以使完整性更新变得如此耗时,以至于人们避免运行它。完整的哈希处理与常规完整备份一样不切实际。

使用 rsure

获取它

Rsure是用Rust编写的。它最初是一个用来确定Rust对系统类型程序有用性的练习,并且已经被证明是最容易开发和维护的实现。

您可以使用Rust安装程序、rustup或您的发行版的包装系统安装rust(以及cargo),构建它就像这样简单

$ cargo build --release

在Rsure目录内。--release标志很重要,否则性能会较差。您可以为可执行文件安装或链接到./target/release/rsure。您还可以使用cargo install直接安装rsure。

基本用法

切换到您希望保持完整性的目录,例如,我的主目录

$ cd
$ rsure scan

这将扫描文件系统(可能显示进度),并留下一个2sure.dat.gz(2sure是历史遗留的名称,FreeVeracity使用以0开头的名称,并且数字使其在目录列表中接近开头)。如果您想查看此文件,可以这样做。格式大致可读。

然后您可以执行以下操作

$ rsure check

来验证目录。这将显示任何差异。如果您将此文件与您的数据一起备份,您可以在恢复后运行rsure以检查备份是否正确。

以后,您可以运行

$ rsure update

这将使用新数据更新2sure.dat.gz文件。Rust使用“编织”格式在同一文件中有效地保存多个版本。更新命令将刷新任何已更改文件的哈希值。之后,您可以运行

$ rsure signoff

来比较旧扫描和当前扫描,并报告它们之间的差异。

依赖项

~30–41MB
~657K SLoC