#摘要 #哈希 #数据

app rblake2sum

计算路径或目录的递归blake2摘要

5个不稳定版本

0.3.1 2023年5月2日
0.3.0 2023年5月2日
0.2.1 2020年2月1日
0.2.0 2018年12月23日
0.1.0 2018年12月9日

#310 in 文件系统

每月 35次下载

MPL-2.0 OR MIT OR Apache-2.0

21KB
54 代码行

rblake2sum

文件系统路径的递归blake2摘要(哈希)。

类似于sha256sum(或者更少为人知的基于blake2的:b2sum),但适用于目录。

所使用的递归文件系统摘要算法在底层库crev-recursive-digest中描述。

在底层,它使用walkdirblake2,具有高效的I/O处理,使其运行速度快。

使用

$ rblake2sum /usr/
f60d19435bb5e859d911c6600dcf96856dfce5de94d4fefd2b2675051ac10fc36dbde87fd86a30eb5224209b47263eb546bd9e3d7bdf64c1f26a7dccf51809af /usr/

$ rblake2sum --help
rblake2sum 0.2.0
Dawid Ciężarkiewicz <[email protected]>
Calculate recursive blake2 digest for path or directory

USAGE:
    rblake2sum [FLAGS] [paths]...

FLAGS:
        --base64     
    -h, --help       Prints help information
    -V, --version    Prints version information

ARGS:
    <paths>...

安装

您可以使用cargo从源代码编译

cargo install rblake2sum

或使用预编译发布二进制文件

注意

此工具计算路径内容的摘要。为了说明

$ mkdir a
$ touch a/file
$ cp -r a b
$ rblake2sum a b
3ecc0360bcfc32fd672443ecbe9b7e278be9e0a731cfedb4ada782bf9753ddd8768d467fcb7ee0b6e5920d1fe3352a6314f2ba73f3cfb3eed7c1a88dfe92cc38 a
3ecc0360bcfc32fd672443ecbe9b7e278be9e0a731cfedb4ada782bf9753ddd8768d467fcb7ee0b6e5920d1fe3352a6314f2ba73f3cfb3eed7c1a88dfe92cc38 b

不同的路径,相同的内容。但是

$ mv a/file a/differentfile
$ rblake2sum a
6e4a518652881f356d863ae034e7508648455536e5393824b5cc96232786a4733ffb9c3cdd62bda4741ca0bfe60a181f6ae47959ceb0493716699e9b28f686ac a

路径中文件或目录的名称是其内容的一部分。

在最简单的情况下,文件的rblake2sum类似于内容的正常b2sum,但前缀为F(表示路径类型)。为了说明

$ echo -en "F" > f
$ cat f differentfile | hexdump -C /dev/stdin
00000000  66                                                |f|
00000001
$ cat f differentfile | b2sum /dev/stdin
c4df78482e7b82e1eea4026a9f61732a62a15a1741737a539733713c2beb3e0057f076934e9fb60646771a4d9084d32a8e48fe838108a842262cf2aad996fa26  /dev/stdin
$ rblake2sum differentfile
c4df78482e7b82e1eea4026a9f61732a62a15a1741737a539733713c2beb3e0057f076934e9fb60646771a4d9084d32a8e48fe838108a842262cf2aad996fa26 differentfile
$ echo "foobar" > file
$ cat f file | b2sum /dev/stdin
96178099394650380ee4bb34aed2eae3ef7a7782adbec3a9aeb436697544b63ed0218ff1240ea1823539183c5e183f211fa8d092bfebe351dc34f77047bceeec  /dev/stdin
$ rblake2sum file
96178099394650380ee4bb34aed2eae3ef7a7782adbec3a9aeb436697544b63ed0218ff1240ea1823539183c5e183f211fa8d092bfebe351dc34f77047bceeec file

依赖关系

~2–10MB
~93K SLoC