ファイアウォールの背後にあるときにリモートサーバーからSSHにtarパイプを使用して2つのリモートホスト間でコピーする方法は?

ファイアウォールの背後にあるときにリモートサーバーからSSHにtarパイプを使用して2つのリモートホスト間でコピーする方法は?

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

おすすめ記事