我一直在嘗試尋找 -e 選項是否有必要?我不是透過user@server
在執行 rsync 時簡單地執行 ssh 操作嗎?
答案1
假設您不需要考慮rsync
協議本身,這取決於您的rsync
.
先前的情況是預設rsync
使用該rsh
協定(除非建置時預設值已更改),但建置時預設值變更為ssh
2004 年。
如果您有疑問,請啟動rsync
傳輸相對較大的文件(或文件集合)的過程,然後在另一個終端中運行ps -ef | grep '[r]sync'
.這將顯示您是否正在使用ssh
交通工具。這是我的一台伺服器的範例,它清楚地顯示了ssh
傳輸:
root 28057 27173 1 09:48 pts/4 00:00:00 rsync -avHP --dry-run /home roaima@otherserver:
root 28058 28057 0 09:48 pts/4 00:00:00 ssh -l roaima otherserver rsync --server -vnlHogDtpre.iLsfx --partial . .
最後,請注意,編譯預設值可以用RSYNC_RSH
環境變數覆寫。 (有關更多詳細信息,請參閱手冊頁。)
答案2
-e
適用於當您需要遠端 shell 時以外預設ssh
.預設rsync
用作ssh
傳輸,但可以使用任何遠端 shell(有一些限制*),它不在乎如何它連接到遠端伺服器。
* 您使用的遠端 shell 的行為必須類似於 shell。它必須將其第 0 個參數解釋為目標,並將後面的每個參數解釋為要執行的命令; rsync 透過遠端 shell 傳遞的指令是一個rsync --server …
在遠端啟動 rsync 伺服器的指令。它還必須附加其標準輸入到命令的標準輸入,以及命令的標準輸出到標準輸出,以便 rsync 和 rsync 伺服器可以透過遠端 shell 進行通訊。