-e オプションが必要かどうか調べようとしています。rsync を実行するときにこのオプションなしで ssh を実行できないのでしょうかuser@server
?
答え1
プロトコル自体を考慮する必要がないと仮定するとrsync
、これは のバージョンで使用されるコンパイル オプションによって異なりますrsync
。
以前は、デフォルトでプロトコルrsync
が使用されていましたrsh
(ビルド時のデフォルトが変更されていない限り) が、ビルド時のデフォルトはssh
2004 年に変更されました。
疑問がある場合は、rsync
比較的大きなファイル (またはファイルのコレクション) を転送するプロセスを開始し、別のターミナルで を実行しますps -ef | grep '[r]sync'
。これにより、トランスポートを使用しているかどうかが表示されますssh
。以下は、トランスポートが明確に示されている、私のサーバーの 1 つからの例です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
リモートシェルが必要な場合以外デフォルトでssh
はトランスポートとしてrsync
使用されますssh
が、任意のリモートシェルを使用できます(いくつかの制限*あり)、気にしませんどうやってリモートサーバーに接続します。
* 使用するリモートシェルはシェルのように動作する必要があります。シェルは0番目の引数を宛先として解釈し、それに続く引数は実行するコマンドとして解釈する必要があります。rsyncがリモートシェルに渡すコマンドはrsync --server …
、リモート側でrsyncサーバーを起動するコマンドです。また、標準入力コマンドの標準入力、そしてコマンドの標準出力に標準出力これにより、rsync と rsync サーバーはリモート シェルを介して通信できるようになります。