1 个不稳定版本
0.1.0 | 2021 年 2 月 11 日 |
---|
#30 在 #folders
15KB
149 行
ddiff
一个小工具,用于检查两个文件夹是否相同。
工作原理
ddiff
是一个简单的 Rust 编写的 CLI 二进制文件,它计算两个不同文件夹中每个文件的哈希值,并查找第一个文件夹中有而第二个文件夹中没有的文件,反之亦然,或者路径匹配但内容(哈希)不同的文件。
为什么?
我经常需要检查两个文件夹是否相同(例如,在网络中复制非常重要的文件),由于我对数据完整性非常小心,所以我通常计算两个文件夹中每个文件的哈希值并将它们进行比较。
这很有效,但不容易,不快,当然也不优雅。
我知道有涉及
rsync
的解决方案,但在我看来,它与“天真”/手动方法一样糟糕。
因此,我决定构建一个工具来解决此问题。
安装
-
使用 Cargo 安装(需要 Rust 工具链)
cargo install ddiff
-
从 发布页面 下载二进制文件并将其添加到您的
$PATH
。 适用于 Linux 和 macOS 的“x86”
用法
ddiff 0.1.0
USAGE:
ddiff <path-a> <path-b>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
ARGS:
<path-a>
<path-b>
示例输出
>>> Files with same path but with different hash
path hash A hash B
file_random 9b53eed45673c3e91f365f66c9138117bc595888bcdc63f907fafdb28cb72bca 49d138ac765678706c3cc84721af69d66dcb91dfaa71b46e469d296e0788b133
>>> Files in testA/ but not in testB
path hash testA/ hash testB
unique_a 16b3a442c222b958453e73cb818a51a060bed10b9bf6649f2bbb43a9e57bff78
>>> Files in testB but not in testA/
path hash testB hash testA/
unique_b 16b3a442c222b958453e73cb818a51a060bed10b9bf6649f2bbb43a9e57bff78
ddiff checked 6 files, about 28 B, in 17.220658ms
哈希
此工具使用 BLAKE3 哈希算法。
我知道...非加密哈希会更好,但我真的很喜欢加密哈希的性质,并且有一个非常酷的实用程序叫做 b3sum
来验证哈希。它也足够快,不会在几乎任何机器上成为瓶颈,尤其是由于 ddiff
是多线程的(感谢 Rayon)
路线图
- 添加单元测试和更多集成测试
- 添加基准测试
- 构建 ARM 二进制文件 重要
- 改进文档并发布
- 添加简单的安装脚本
- 在 Homebrew 和其他包管理器上发布
贡献
可能没有人会阅读这段内容,但如果你偶然来到这里并且想添加一些功能、改进我的代码、建议新的功能,或者更可能的是提交一个问题来解决错误,无论如何,你都可以提交 PR、填写问题或给我发邮件。
我也非常关注现实世界的测试用例和用例场景。请告诉我这个小工具是否对您有帮助,或者您是否有任何改进的想法。
贡献
Git钩子
该仓库有git预提交钩子,用于强制执行良好的格式、代码检查和开发侧的测试(感谢cargo-husky
),相同的规则也将应用于GitHub Actions。
常规提交
即使没有通过提交信息钩子强制执行,该仓库也遵循常规提交。
持续集成/持续交付
本项目使用GitHub Actions进行CI和构建版本。
感谢出色的action-rs
项目。
许可证
本项目受MIT许可证许可。
依赖项
~8–19MB
~243K SLoC