rsync を使用して、ローカルホスト サーバーをベースとした 2 つのリモート サーバー間でファイルをコピーする方法は?

rsync を使用して、ローカルホスト サーバーをベースとした 2 つのリモート サーバー間でファイルをコピーする方法は?

古いサーバーからデータを移動する必要がある場合があります。ホスト1新しいサーバーへ:ホスト2問題はホスト1がホスト2を見ることができないことです、別のサーバーを使用することもできます(ローカルホスト) を使用して、host1 と host2 の両方に SSH で接続します。

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

rsyncを使用してhost1とhost2の間でファイルをコピーするにはどうすればよいですか?このコマンドを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" (混乱を避けるために "your_host" と呼びます) 経由で host2 へのトンネルを作成します。

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

そのターミナルを開いたまま、host1 の別のターミナルで次のように入力します。

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

もちろん、8080 以外のポートを使用することもできます。ssh を使用しない他の方法を使用することは可能だと思いますが、テストしていません。

答え3

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

単純なファイルコピーだけが必要な場合は、@eblockが指摘したようにオプションscpを使用するだけで済みます。-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

関連情報