パイプチェックサム

パイプチェックサム

私は膨大な量のデータ(ある種のバックアップ)を構築し、それをネットワーク(sshまたはrsync)を介して別のホストに送信したいと思います。リモートホストにはデータを保存するのに十分なスペースがありますが、ローカルホストには十分なスペースがないため、ローカルファイルとして保存できません。データがパイプラインに入るときにデータのチェックサムを計算し、生成されたリモートファイルのチェックサムと比較したいと思います。だから私はパイプラインの真ん中に配置して、通過するすべての項目のチェックサムを計算することができるプログラムを探しています。

2つの「MITM」プログラムが私の頭の中に浮上しましたpvが、mbufferどちらもこの機能を持っていないようでした。そしてcatそれはまたdd目標にはなりません :-) チェックサムを計算する様々なプログラム(例えば、md5sumなどsha1sum)は、入力を消費し、渡しません。助ける?ありがとうございます!

答え1

次の代替項目を使用しteeて処理できます。>(…)

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

このパイプは stdout を妨げないように stderr にチェックサムを書き込みます。ハッシュを維持するには、ハッシュをファイルにリダイレクトできます。

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

関連情報