rsync 每次为多个文件建立一个新的 ssh 连接还是使用相同的连接?

rsync 每次为多个文件建立一个新的 ssh 连接还是使用相同的连接?

假设我按以下方式使用 rsync:

rsync user@server:/path/to/file1 user@server:/path/to/file2 /local/directory

将 file1 和 file2 从远程服务器复制到本地目录。在这种情况下,rsync 是否建立两个单独的 ssh 连接(每个文件一个)来复制这两个文件,还是建立一个 ssh 连接并根据需要保持打开状态?

答案1

您可以自己简单地测试一下,这将为您提供适用于正在使用的 rsync 的特定版本的有效答案:

rsync -e $'sh -x -c \'exec ssh "$@"\' _' \
  user@server:/path/to/file1 user@server:/path/to/file2 /local/directory

(请注意,$''上面使用的语法是 ksh 或 bash 中可用的扩展,但不适用于/bin/sh)。

sh -x您将看到为正在运行的每个命令记录的一行ssh。如果只有一个ssh命令,那么您的特定版本的 rsync 能够重用该连接。 (在我自己的 3.1.2 版本测试中似乎就是这种情况)。

相关内容