#integrity #file #bit #checker #rot #bitrot

app brck

一个简单的位旋转检查器

1 个不稳定版本

0.1.0 2024年3月24日

#487文件系统

每月21次下载

MIT/Apache

32KB
627

Brck —— 一个简单的位旋转检查器

Brck 是一个针对旧版文件系统的简单位旋转检查器。它记录并比较常规文件的修改时间和加密哈希值。当一个文件的哈希值更改,但其修改时间没有更改时,Brck 会报告该文件已损坏,这样您就有机会从备份中恢复文件。您有备份,对吧?😉

Brck 的原始源代码托管在 这里

安装

Brck 可在 crates.io 上找到。您可以使用 Rust 的包管理器 Cargo 安装它。

$ cargo install brck

用法

没有任何选项时,Brck 会递归地记录当前工作目录中的所有常规文件,并将这些记录写入一个gzip压缩的 .brck 文件。

$ brck

当您再次运行相同的命令时,Brck 将将记录的文件与当前文件系统进行比较,并报告任何损坏的文件。

$ brck
corrupted: ./test_file
Error: Found 1 denied difference

Brck 默认情况下是安静的。使用 -v 增加详细程度或使用 -s 请求摘要。或者,使用 -J 启用 JSON 输出并进行自己的后处理,例如使用 jq

$ brck -vvJ | jq -sr 'group_by(.type)[] | [.[0].type, length] | @tsv' 2>/dev/null
added   4
corrupted       1
unchanged       1219

查看内置帮助以获取所有支持选项

$ brck --help

功能

  • 并行顺序处理:Brck 并行处理文件,但按顺序输出和记录文件

  • 单次遍历:Brck 只读取一次您的文件

  • 常量内存:Brck 的内存占用与处理文件的数目无关

  • 相对路径:Brck 记录相对路径,这样您可以移动包含目录

  • 默认情况下安静:没有任何选项时,Brck 将拒绝的差异打印到标准输出,错误打印到标准错误;没有其他内容

  • 人类可读或机器可读,可选的换行分隔的 JSON 输出

  • 首次中断信号时优雅关闭,第二次强制立即关闭

  • Pledgedunveiled 在 OpenBSD 上

限制

  • Brck 不跟随符号链接。

  • Brck 不跟踪硬链接。由于 Brck 会单独对每个副本进行哈希处理,因此在存在大型硬链接文件的情况下性能将次优。

  • Brck 不跟踪 reflinks。现代基于写入的复制文件系统不在范围之内,因为它们应该像 OpenZFS 和 Btrfs 一样检查文件内容完整性。

  • Brck 可能会泄露文件元数据,因为其 .brck 文件可能与列出的文件具有不同的权限。

  • Brck 不尊重特定平台的临时目录,如 UNIX 中的 TMPDIR。相反,它在当前工作目录中创建临时文件,位于 .brck 文件旁边。这样,Brck 可以在 POSIX 兼容的系统上原子地更新文件。

  • Brck 可能无法删除其临时文件,例如在发生段错误的情况下。

另请参阅

依赖项

~7–20MB
~244K SLoC