2013-07-04 98 views
0

好吧,所以我有一個shell腳本,用於通過而不是ssh將一些文件傳輸到遠程主機。減少SSH連接

然而,除了傳遞我需要事先和事後做一些家務管理,它涉及到一個額外的ssh與命令,並scp呼叫轉移不包括在rsync傳遞一些額外的數據(我產生這些數據在傳輸過程中發生)。

正如您可以想象的那樣,目前會導致很多ssh會話開始和停止,尤其是因爲管理操作實際上非常快(通常)。我已經在主機上進行了驗證,證明這是由於許多SSH連接和斷開連接而顯示的,雖然與實際傳輸相比很小,但看起來很浪費。

所以我想知道的是,有沒有辦法,我可以打開一個ssh連接,然後將其連接,直到我完成它?即 - 我最初的ssh家務操作將使其連接處於打開狀態,以便當rsync(和之後的scp)運行時,它可以使用之前打開的連接來完成它的工作。

在shell腳本中甚至可以這樣做嗎?如果是這樣,任何關於如何處理錯誤的指針(即 - 確保連接在不需要時關閉)也將受到讚賞!

回答

0

這是可能的。最簡單的方法甚至不需要任何編程。請參閱https://unix.stackexchange.com/questions/48632/cant-share-an-ssh-connection-with-rsync - 總體思路是使用SSH連接重用來讓您的多個SSH共享一個會話,然後讓rsync加入。

困難的方法是使用libssh2並自行編程一切。這將會有更多的工作,而且你的情況似乎沒有什麼可推薦的。對於更復雜的場景,這很有用。