Rsync

如何將 rsync 與遠端遠端主機一起使用

  • July 15, 2012

我是一個快樂的使用者,rsync -e ssh並使用它在我的機器和遠端主機之間同步數據

rsync -avz -e ssh me@hostA:~/folder ~/folder

直到現在,這才完成了我所需要的。

我現在正在使用訪問更複雜的配置。假設現在~/folder是 on hostB,但hostB不能從我的機器直接訪問,而只能通過hostA.

因此,如果我只想查看hostB. 我首先需要 ssh 到hostA,然後才能在遠端主機上hostB看到我的文件。~/folder

我現在的問題是,rsync在我的機器和之間直接使用的(最佳)方法是什麼hostB

不幸的是,這是我需要使用的配置。假設不可能將數據臨時儲存在hostA自身上。

看看如何使用 ssh 通過另一台電腦連接到一台電腦

您創建一個~/.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' "$@"

我沒有嘗試過,所以會另外詳細說明一些細節。

引用自:https://unix.stackexchange.com/questions/43094