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

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

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

$ tar cfz archive.tar.gz files
$ sha256sum archive.tar.gz > archive.tar.gz.sha256sum

但是档案文件很大并且存储介质很慢,所以我不想在写出来之后再次将其全部读入。

我可以建立一个管道,在写入文件时对其进行哈希处理吗?我想也许我可以使用该tee实用程序来执行此操作,但它只会写入文件,而不会写入另一个命令的标准输入。

答案1

回答我自己的问题:

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

tar cfz - files | tee >(sha256sum) | cat > archive.tar.gz

相关内容