Ssh
如何使用 rsync 基於 localhost 伺服器在 2 個遠端伺服器之間複製文件?
我有一個案例需要將數據從舊伺服器:host1移動到新伺服器:host2。 問題是 host1 看不到 host2,但我可以使用另一台伺服器(localhost)通過 SSH 連接到 host1 和 host2。
想像一下它應該像這樣工作:host1 -> localhost -> host2
如何使用 rsync 在 host1 和 host2 之間複製文件?我在本地主機伺服器上嘗試了這個命令,但它說源和目標不能都是遠端的。
rsync -avz host1:/workspace host2:/rasv1/old_code-de
我最終得到了來自https://unix.stackexchange.com/users/312074/eblock的解決方案
和
scp -3 host1 host2
您可以使用隧道通過 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。至於使用其他不涉及ssh的方法,我認為可以但我沒有測試。