ローカルシェルを使用して2つのリモートホスト間でファイルを転送したいのですが、次のように2つのリモートホストを指定すると、rsyncは同期をサポートしていないようです。
$ rsync -vuar host1:/var/www host2:/var/www
The source and destination cannot both be remote.
同様の結果を得るために使用できる他の回避策/コマンドは何ですか?
ベストアンサー1
ご存知のように、リモートソースとリモートターゲットにはrsyncを使用できません。 2つのサーバーが互いに直接通信できないと仮定すると、SSHを使用してローカルシステムを介してトンネルを確立できます。
変える
rsync -vuar host1:/var/www host2:/var/www
あなたはこれを使うことができます
ssh -R localhost:50000:host2:22 host1 'rsync -e "ssh -p 50000" -vuar /var/www localhost:/var/www'
の最初のインスタンスは、のターゲットに対応するのソース/var/www
に適用されます。host1
localhost:/var/www
host2
気になる場合は、この-R
オプションはホスト1のポート50000でバックチャネルを設定します。このバックチャネルは(ローカルシステムを介して)ホスト2のポート22にマップされます。ホスト1からホスト2への直接接続はありません。