![rsync 每次为多个文件建立一个新的 ssh 连接还是使用相同的连接?](https://linux22.com/image/116743/rsync%20%E6%AF%8F%E6%AC%A1%E4%B8%BA%E5%A4%9A%E4%B8%AA%E6%96%87%E4%BB%B6%E5%BB%BA%E7%AB%8B%E4%B8%80%E4%B8%AA%E6%96%B0%E7%9A%84%20ssh%20%E8%BF%9E%E6%8E%A5%E8%BF%98%E6%98%AF%E4%BD%BF%E7%94%A8%E7%9B%B8%E5%90%8C%E7%9A%84%E8%BF%9E%E6%8E%A5%EF%BC%9F.png)
假设我按以下方式使用 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 版本测试中似乎就是这种情况)。