假设我用 复制一个文件pv
,有什么方法可以获取任何哈希值,例如md5
,sha1
等,而不必读取 origin 两次?它必须与大文件或块设备一起使用。
未按预期工作的示例命令:
pv /dev/sda1 | tee md5sum > /mnt/backups/sda.backup
答案1
... | tee md5sum > outputfile
不起作用,因为tee
采用文件名作为参数,该命令将创建一个名为md5sum
.相反,您可以用进程替换来替换文件名(在 Bash/ksh/zsh 中):
... | tee >(md5sum) > outputfile
或者只是翻转逻辑,以便将目标文件名指定给tee
,然后可以将其标准输出通过管道传输到md5sum
:
... | tee outputfile | md5sum
另外,考虑到 MD5 已被破坏,您可能需要使用 例如sha256sum
或来代替。sha512sum