ssh 的 rsync -e 選項

ssh 的 rsync -e 選項

我一直在嘗試尋找 -e 選項是否有必要?我不是透過user@server在執行 rsync 時簡單地執行 ssh 操作嗎?

答案1

假設您不需要考慮rsync協議本身,這取決於您的rsync.

先前的情況是預設rsync使用該rsh協定(除非建置時預設值已更改),但建置時預設值變更為ssh2004 年。

如果您有疑問,請啟動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 進行通訊。

相關內容