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 进行通信。

相关内容