2つのサーバー間でディレクトリを転送したいが、転送する前にリモートホストのディレクトリを圧縮してから、別のホストに解凍してください。私はすべてをパイプで接続して1つのライナーで行うことができると確信しています。
ホスト間で直接転送できることは確かに良いことを知っていますが、これにはキー転送などが含まれ、私はUnixシングルワイヤー電動工具が好きです。私は人々がこれを行うためのいくつかの異なる方法を思い出すことができると確信しています。私は最も短い構文と最も保守的な帯域幅を探しています。
まず、
ssh -n REMOTEHOST 'tar zcvf - DIRTOCOPY' | localZip.tar.gz
ベストアンサー1
何に似ているjw013別々の圧縮/圧縮解除ステップを使用することが注釈で提案されました。つまり、2 つの ssh コマンドをパイプと結合します。
compress=gzip
decompress=gunzip
ssh remote1 "cd srcdir; tar cf - dir | $compress" |
ssh remote2 "cd destdir; $decompress | tar xvf -"
圧縮/圧縮解除は設定可能ですtar
。
修正する
パイプラインにチェックサム検証を追加することもできます。
compress=gzip
decompress=gunzip
ckprg=md5sum
cksum=/tmp/cksum
ssh remote1 "cd srcdir; tar cf - dir | $compress | tee <($ckprg > $cksum)" |
ssh remote2 "cd destdir; tee <($ckprg > $cksum) | $decompress | tar xvf -"
ssh remote1 cat $cksum
ssh remote2 cat $cksum