Rsync
如何將 rsync 與遠端遠端主機一起使用
我是一個快樂的使用者,
rsync -e ssh
並使用它在我的機器和遠端主機之間同步數據rsync -avz -e ssh me@hostA:~/folder ~/folder
直到現在,這才完成了我所需要的。
我現在正在使用訪問更複雜的配置。假設現在
~/folder
是 onhostB
,但hostB
不能從我的機器直接訪問,而只能通過hostA
.因此,如果我只想查看
hostB
. 我首先需要 ssh 到hostA
,然後才能在遠端主機上hostB
看到我的文件。~/folder
我現在的問題是,
rsync
在我的機器和之間直接使用的(最佳)方法是什麼hostB
?不幸的是,這是我需要使用的配置。假設不可能將數據臨時儲存在
hostA
自身上。
您創建一個
~/.ssh/config
名為 tunnelb 的新條目:Host tunnelb HostName hostB User user ProxyCommand ssh user@hostA nc %h %p
如果您有最新版本的 ssh,則可以
Proxycommand ssh user@hostA -W %h:%p
改用。這是首選,因為它不依賴於nc
現在您可以使用
rsync -e ssh tunnelb:~/folder ~/folder
它,因為它將使用~/.ssh/config
.
變體 1:
首先,在 hostA 上永久啟動 ssh,並在另一個終端中進行本地埠轉發。例如:
ssh -N -v -L 22022:hostB:22 hostA
然後,使用 ssh 將 rsync 輸入到
localhost:22022
. 一種變體是寫入 ~/.ssh/config:Host hostB HostName localhost Port 22022
變體 2:
替換
-e ssh
為-e
一些包含以下內容的腳本:ssh hostA 'ssh hostB' "$@"
我沒有嘗試過,所以會另外詳細說明一些細節。