我有一個情況,當我需要從舊伺服器移動資料時:主機1到新伺服器:主機2。 問題是host1看不到host2,但我可以使用另一台伺服器(本機)透過 SSH 連接到主機 1 和主機 2。
想像一下它應該像這樣工作:主機1->本機->主機2
如何使用 rsync 在 host1 和 host2 之間複製檔案?我在本地主機伺服器上嘗試了這個命令,但它說源和目標不能同時位於遠端。
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
保持該終端打開,然後在 host1 的另一個終端上鍵入:
rsync -avzh -e "ssh -p 8080" <source_file> <host2_user>@127.0.0.1:/<target_folder>
當然你可以使用任何其他端口來代替8080。
答案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
。