zfsスナップショットの正しいハッシュを取得する方法はありますか?

zfsスナップショットの正しいハッシュを取得する方法はありますか?

ネットワーク経由でZFSスナップショットを送信しています。しかし、もう一方の端にzfs recvを持つほとんどの例とは異なり、私のサーバーにはzfsサポートがないので、大容量ファイルとして保存します。

問題は、zfs転送にcronジョブを使用したいが、定期的にコンピュータを休止状態にすることです。私の恐れは、バックアップ、休止状態、ssh接続タイムアウトを開始し、残念ながらzfs send POOL/vol@snap | ssh user@server "cat > /backup.zfs"ssh( - 見苦しく、改善することができます)タイムアウト時にzfsがまだゼロを返すことです。

転送される内容(md5、sha、crcは重要ではありません)のハッシュを取得して結果ファイルと比較する方法はありますか?それともmd5に1回、md5に1回転送する必要がありますか?もう一度サーバーに?

ベストアンサー1

修正する:

Bashシェルを使用すると、同様のことができます。

zfs send [snip] | tee >(md5sum > checksum.log) | ssh [snip]

Process Substitutionセクションを参照してくださいman bash。 (これらの簡略化を指摘したOle Tangeに感謝します。)

元の答え:

必要なことを行う方法はいくつかあります。

stdin(a)チェックサムを計算し、(b)データを子プロセス(たとえば)に転送しながらデータを読み取るスクリプト(またはPythonまたは選択した言語でプログラム)を作成できますssh

または、Bashで次のことを実行できます。

zfs send [snip] | tee /proc/self/fd/4 4>(md5sum > checksum.log) | ssh [snip]

上記をテストしていないため、動作することを保証できません。システムに存在しない場合は、課のセクション、特にそのサブセクションを参照し/proc/self/fd/Nてください。teeman teeREDIRECTIONman bashRedirecting Output

おすすめ記事