我需要在遠程主機之間執行rsync(原因稍後),rsync不支持(請參見手冊頁)。不過,我認爲應該可以使用ssh隧道。我目前無法實現它,我認爲我做錯了什麼。看看下面的代碼片段:兩個遠程之間的Rsync
ssh -R localhost:50000:remotesource:22 [email protected] -f -N
sleep 5 #To wait for the tunnel to establish
ssh [email protected] rsync -e "ssh -p 50000" --progress --append-verify [email protected]:~/sourcefiles ~/destdir'
這基本上在rsync內部ssh的驗證過程中掛起。只是爲了測試它,我連接到遠程目標,並試圖SSH通過隧道remotesource和工作!有沒有什麼rsync做不同的事情,我忘了這裏?
爲什麼我要這樣做?儘管一般的好奇心在於remotesource是一臺計算機,我只能從中拉出數據,而遠程目標只有一個共享帳戶。由於存在頻繁的連接問題,我想寫一個腳本來在發生錯誤時重新啓動rsync。爲此,我需要通過密鑰文件進行身份驗證(沒有安裝sshpass或類似軟件)。但我絕對不會將我的私鑰存儲在共享帳戶的主目錄中。因此,我想通過本地PC進行身份驗證。
我希望有人能指出我的錯誤,我沒有看到它:-)謝謝!
我明白了,那很不幸。我會考慮這一點。關於數據量,我們正在談論幾個TB,這就是爲什麼我需要rsync能夠在連接丟失後恢復。 – Alex
我個人對這個問題的解決方案是編寫一個小小的expect腳本來輸入密碼,就像我輸入密碼一樣。 – ams
沒有安裝sshpass,那麼你會怎麼做? – Alex