我一直在尝试查找 -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 进行通信。