管道校验和

管道校验和

我想构建一个巨大的数据块(某种备份)并通过网络(ssh 或 rsync)将其发送到另一台主机。远程主机上有足够的空间来存储数据,但本地主机上没有足够的空间,因此我无法将其存储为本地文件。我想在数据进入管道时计算数据的校验和(然后与生成的远程文件的校验和进行比较)。因此,我正在寻找一个可以放在管道中间的程序,并让它计算通过的所有内容的校验和。

我脑海中突然出现了两个“MITM”程序pvmbuffer但似乎都没有此功能。而且catdd达不到要求:-)用于计算校验和的各种程序(例如md5sumsha1sum等等)都消耗它们的输入并且不传递它。帮助?谢谢!

答案1

您可以使用tee和处理替换>(…),例如

cat blob | tee >(md5sum >&2) | ssh user@remote 'tee >(md5sum >&2) >/tmp/blob'

该管道将​​校验和写入 stderr,以免干扰 stdout。如果您想保留哈希值,可以将其重定向到文件。

cat blob | tee >(md5sum >blob.md5) | <your pipe>

相关内容