如何使用rsync在基於localhost伺服器的2個遠端伺服器之間複製檔案?

如何使用rsync在基於localhost伺服器的2個遠端伺服器之間複製檔案?

我有一個情況,當我需要從舊伺服器移動資料時:主機1到新伺服器:主機2問題是host1看不到host2,但我可以使用另一台伺服器(本機)透過 SSH 連接到主機 1 和主機 2。

想像一下它應該像這樣工作:主機1->本機->主機2

如何使用 rsync 在 host1 和 host2 之間複製檔案?我在本地主機伺服器上嘗試了這個命令,但它說源和目標不能同時位於遠端。

 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

保持該終端打開,然後在 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

相關內容