rsyncを使用してローカルホストサーバーに基づく2つのリモートサーバー間でファイルをコピーする方法は? [コピー]

rsyncを使用してローカルホストサーバーに基づく2つのリモートサーバー間でファイルをコピーする方法は? [コピー]

古いサーバーからデータを移動する必要がある状況があります。ホスト1新しいサーバーへ:ホスト2問題は、ホスト1がホスト2を表示できないことです。ただし、他のサーバーを使用できます(ローカルホスト)SSH経由でHost1とHost2に接続します。

次のように動作すると想像してください。ホスト1->ローカルホスト->ホスト2

rsyncを使用してホスト1とホスト2の間でファイルをコピーする方法は? localhostサーバーでこのコマンドを試しましたが、次のように表示されます。ソースとターゲットは同時にリモートにすることはできません。

 rsync -avz host1:/workspace host2:/rasv1/old_code-de

答え1

ついに解決策を得ましたhttps://unix.stackexchange.com/users/312074/eblock

そして

scp -3 host1 host2

答え2

トンネリングを使用して、SSHを介してrsyncをリダイレクトできます。

user@host1でログインを開始し、「localhost」を介してhost2のトンネルを作成します(混乱を避けるために「your_host」と呼びます)。

ssh <your_host_user>@<your_host> -L 8080:<host2_ip>:22

その端末を開いたままにして、ホスト1の他の端末に次のように入力します。

rsync -avzh -e "ssh -p 8080" <source_file> <host2_user>@127.0.0.1:/<target_folder>

もちろん、8080の代わりに別のポートを使用することもできます。 SSHを含まない他の方法を使用している場合は可能だと思いますが、テストしませんでした。

答え3

私が知っている限り、rsyncはリモートサーバーからリモートサーバーへのコピーをサポートしていません。

単純なファイルコピーのみが必要な場合は、scp@eblock-3が指定したオプションを使用できます。

 

rsync が必要な場合は、次を使用して両方のサーバーをローカルフォルダにインストールできます。sshfs

sshfs user@server1:/path/on/server1 /local/path1
sshfs user@server2:/path/on/server2 /local/path2

次に、ローカルフォルダ間でファイルをコピーします。

rsync -av /local/path1 /local/path2

削除:

fusermount -u /local/path1
fusermount -u /local/path2

速度/性能についてはよくわかりませんsshfs

関連情報