rsync 是否需要源主机和目标主机都以客户端、服务器或守护进程的方式运行 rsync?

rsync 是否需要源主机和目标主机都以客户端、服务器或守护进程的方式运行 rsync?

来自 rsync 的联机帮助页

概要

Local:  rsync [OPTION...] SRC... [DEST]
Access via remote shell:
  Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
  Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
Access via rsync daemon:
  Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
        rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
  Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
        rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

仅使用一个 SRC 参数且没有 DEST 参数的用法将列出源文件而不是复制

一般的

...

rsync指本地端为“客户”,远程端为“服务器“。别混淆了”服务器“ 使用 rsync守护进程-- 守护进程始终是服务器,但服务器可以是守护进程,也可以是远程 shell 生成的进程。

设置

有关安装说明,请参阅自述文件。

安装后,您可以使用 rsync 连接到任何可以通过远程 shell 访问的机器(以及一些可以使用 rsync 守护进程模式协议访问的机器)。对于远程传输,现代 rsync 使用 ssh 进行通信,但它可能已默认配置为使用不同的远程 shell,例如 rsh 或 remsh。

您还可以通过使用 -e 命令行选项或设置 RSYNC_RSH 环境变量来指定您喜欢的任何远程 shell。

请注意,源计算机和目标计算机上都必须安装 rsync。

从概要来看,rsync 可用于

  1. 本地与远程、本地与本地之间的文件传输。

    在本地和远程之间传输文件时,

    • 通过远程 shell 访问

    • 通过 rsync 守护进程访问

  2. 列出源文件

我的问题是

  1. 通过rsync守护进程访问本地和远程之间传输文件时,远程主机是否需要将rsync作为守护进程运行?

  2. 通过远程shell访问在本地和远程之间传输文件时,远程主机是否需要运行rsync?如果是,远程主机是否将 rsync 作为服务器运行,但不作为守护进程运行,或者就像本地主机将 rsync 作为客户端运行一样?

  3. 在本地主机内传输文件时,本地主机是否需要运行rsync客户端和rsync服务器?

  4. 当列出源文件而不是复制时,如果源位于远程主机中,远程主机是否需要将 rsync 作为服务器或守护程序运行?

  5. “请注意,rsync 必须安装在源计算机和目标计算机上”分别适用于和不适用于哪些用例?

  6. 在一般部分中,“服务器可以是守护进程,也可以是远程 shell 生成的进程”。作为“远程 shell 生成进程”运行 rsync 作为服务器的远程主机是否意味着远程主机以与本地主机运行 rsync 相同的方式运行 rsync?

请注意,源主机和目标主机可以是本地主机或远程主机。

答案1

当谈到 rsync 时,将clientserver视为相同的 rsync 二进制文件可以实现的角色。当它作为守护进程运行时,您构建一个 rsyncd.conf 文件,并使用参数运行 rsync --daemon

一个 rsync 二进制文件可以直接连接到另一个(远程)rsync 二进制文件 - 如果 rsync 作为守护进程运行,侦听远程主机上自己的连接,或者通过远程 shell 执行 - 其中 rsync 使用 ssh 连接到远程主机并执行该主机上的 rsync 二进制文件,两个 rsync 进程相互来回传递数据。

希望能回答您的问题:

  1. When transferring files between local and remote by accessing via rsync daemon, is the remote host required to run rsync as a daemon?

    • 是的。如果您要访问 rsync 守护进程,则该守护进程必须正在运行。
  2. When transferring files between local and remote by accessing via a remote shell, does the remote host need to run rsync? If yes, does the remote host run rsync as a server but not as a daemon, or just as the local host runs rsync as a client?

    • 是的。当 rsync 必须在两台主机上可用时,无论是在默认 $PATH 中,还是使用命令选项中指定的二进制文件的完整路径。
  3. When transferring files within the local host, does the local host need to run a rsync client and a rsync server?

    • 不会。如果 SRC 和 DEST 路径在本地可用,则 rsync 客户端二进制文件可以同时充当两个角色。
  4. When listing the source files instead of copying, if the source is in a remote host, does the remote host need to run rsync as a server or daemon?

    • 不,不需要运行 rsync 守护进程,如果您用于rsync -e ssh访问rsync远程主机上的(客户端),则可以触发远程客户端。 (第 6 个问题中的远程 shell 生成的 rsync。)
  5. Which use cases does "Note that rsync must be installed on both the source and destination machines" apply to, and not apply to, respectively?

    • 二进制rsync文件必须安装在两台机器上。在 SRC 和 DEST 是同一台机器的情况下,单独的 rsync 二进制文件本质上将执行这两个角色。
  6. In the GENERAL part, "a server can be either a daemon or a remote-shell spawned process". Does a remote host running rsync as a server as "a remote-shell spawned process" mean that the remote host runs rsync in the same way as the local host runs rsync?

    • 是的。实际上是这样。唯一值得注意的是远程生成的rsync会话正在履行服务器角色。

相关内容