我可以在创建文件时计算其校验和吗?

jl6*_*jl6 4 checksum tar tee

我正在创建一个大型tar档案,我也想创建档案的校验和。我可以这样实现:

$ tar cfz archive.tar.gz files
$ sha256sum archive.tar.gz > archive.tar.gz.sha256sum
Run Code Online (Sandbox Code Playgroud)

但是存档文件很大并且在慢速媒体上,所以我不想在写出来后重新读一遍。

我可以构建一个在写入文件时对文件进行哈希处理的管道吗?我想也许我可以使用该tee实用程序来做到这一点,但这只会写入文件,而不是写入另一个命令的标准输入。

jl6*_*jl6 6

回答我自己的问题:

是的,您可以使用 tee 和 bash 进程替换:

tar cfz - files | tee >(sha256sum) | cat > archive.tar.gz
Run Code Online (Sandbox Code Playgroud)

  • 只需使用`| tee archive.tar.gz | sha256sum`然后。 (3认同)