1 个不稳定版本
0.1.0 | 2024年3月24日 |
---|
#487 在 文件系统
每月21次下载
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 输出
-
首次中断信号时优雅关闭,第二次强制立即关闭
限制
-
Brck 不跟随符号链接。
-
Brck 不跟踪硬链接。由于 Brck 会单独对每个副本进行哈希处理,因此在存在大型硬链接文件的情况下性能将次优。
-
Brck 不跟踪 reflinks。现代基于写入的复制文件系统不在范围之内,因为它们应该像 OpenZFS 和 Btrfs 一样检查文件内容完整性。
-
Brck 可能会泄露文件元数据,因为其
.brck
文件可能与列出的文件具有不同的权限。 -
Brck 不尊重特定平台的临时目录,如 UNIX 中的
TMPDIR
。相反,它在当前工作目录中创建临时文件,位于.brck
文件旁边。这样,Brck 可以在 POSIX 兼容的系统上原子地更新文件。 -
Brck 可能无法删除其临时文件,例如在发生段错误的情况下。
另请参阅
-
Jargon File 中的 bit rot 定义 (存档)
-
一个名为 Bitrot 的类似 Python 程序
-
关于 UNIX 可以原子完成的操作 的博客文章
依赖项
~7–20MB
~244K SLoC