古いサーバーからデータを移動する必要がある状況があります。ホスト1新しいサーバーへ:ホスト2。 問題は、ホスト1がホスト2を表示できないことです。ただし、他のサーバーを使用できます(ローカルホスト)SSH経由でHost1とHost2に接続します。
次のように動作すると想像してください。ホスト1->ローカルホスト->ホスト2
rsyncを使用してホスト1とホスト2の間でファイルをコピーする方法は? localhostサーバーでこのコマンドを試しましたが、次のように表示されます。ソースとターゲットは同時にリモートにすることはできません。
rsync -avz host1:/workspace host2:/rasv1/old_code-de
答え1
答え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
。