在群晖 NAS 上,使用 `rsync` 进行远程同步时,可以通过两种主要模式来进行连接和同步:
- 通过 SSH 连接至 rsync shell 模式(Shell Mode)
- 通过 SSH 连接至 rsync module 模式(Module Mode)
- rsync module 模式(无需 SSH)
这几种模式在实现方式、配置和使用上有所不同,下面详细解释每种模式的区别。
1. 通过 SSH 连接至 rsync shell 模式(Shell Mode)
工作原理:
- 在这种模式下,
rsync会通过 SSH 连接到远程服务器并以 shell(命令行)模式运行。用户需要通过 SSH 提供用户名和密码(或者 SSH 密钥)进行认证。 - 使用
rsync时,你通过 SSH 协议连接到远程服务器,然后在目标服务器的 shell 环境下执行命令来进行文件同步。通常,rsync会把本地的文件同步到远程服务器的某个目录,或从远程服务器同步到本地。
特点:
- 需要 SSH 访问权限。
- 可以通过 SSH 连接到服务器并直接访问 shell 环境,适用于大多数情况。
- 在进行文件同步时,
rsync会使用 SSH 加密和认证来确保数据传输的安全性。 - 配置比较简单,适合没有设置 rsync 模块的环境。
示例命令:
rsync -avz -e ssh /local/path/ user@remote:/remote/path/在这种情况下,-e ssh 选项指示 rsync 使用 SSH 协议连接。
2. 通过 SSH 连接至 rsync module 模式(Module Mode)
工作原理:
- 在这种模式下,
rsync通过 SSH 连接到远程服务器的 rsync 模块,并访问预配置的 rsync 模块目录。与 shell 模式不同的是,rsync module 模式并不直接打开一个 shell,而是连接到一个特定的模块,这个模块代表远程服务器上一个预定义的目录或文件集合。 rsync module需要在远程服务器上进行配置,指定哪些目录或文件可以通过rsync模块访问。
特点:
- 可以通过 SSH 或非 SSH 连接到远程
rsync服务(如果服务器已启用相应的模块)。 - 需要在远程服务器上配置 rsync 模块(例如通过
rsyncd.conf配置文件)。 - 更加安全和灵活,因为 rsync 模块可以限制访问特定的目录,不需要完全的 shell 权限。
- 配置过程稍复杂,需要在服务器上定义模块。
示例命令:
rsync -avz -e ssh module_name::module_path /local/path/在这种情况下,module_name 是远程服务器配置的模块名,module_path 是模块下的目录路径。
3. rsync module 模式(无需 SSH)
工作原理:
- 这种模式下,
rsync直接通过 rsync 协议(而非 SSH)连接到远程服务器的 rsync 模块。 - 该模式不使用 SSH,而是通过开放的
rsync服务端口(通常是 873)与远程服务器进行通信。rsync服务器需要事先配置好模块,这些模块定义了哪些目录可以通过rsync访问。
特点:
- 不需要 SSH,直接通过
rsync协议进行通信,适合局域网内的快速同步。 - 配置和使用上相对简单,但 安全性较低,因为它不使用加密连接。
- 需要在远程服务器上开放
rsync服务,并配置rsyncd.conf文件。
示例命令:
rsync -avz module_name::module_path /local/path/与通过 SSH 连接的模块模式类似,只不过这里不使用 -e ssh 选项。
总结比较:
| 模式 | 连接方式 | 配置要求 | 安全性 | 优点 | 缺点 |
|---|---|---|---|---|---|
| 通过 SSH 连接至 rsync shell 模式 | SSH(命令行) | 无需额外配置 | 高(使用 SSH 加密) | 简单、灵活、易于配置 | 需要完整的 SSH 访问权限 |
| 通过 SSH 连接至 rsync module 模式 | SSH(模块协议) | 需要在服务器配置模块 | 高(使用 SSH 加密) | 更安全、灵活(限制访问特定目录) | 配置稍复杂,要求服务器启用模块 |
| rsync module 模式 | rsync 协议 | 需要在服务器配置模块 | 低(不使用加密) | 配置简单、速度快,适合局域网 | 安全性较低,数据不加密传输 |
使用场景建议:
- 通过 SSH 连接至 rsync shell 模式:适合常规的文件同步,尤其是需要 SSH 权限且没有配置 rsync 模块的场景。
- 通过 SSH 连接至 rsync module 模式:适合需要通过 SSH 进行加密传输并且已经在远程服务器上配置了 rsync 模块的场景。
- rsync module 模式:适合局域网内的快速同步,但需要考虑安全性问题,尤其是数据传输不加密的情况下。
选择哪种模式,取决于你的具体需求,如是否需要加密、是否需要服务器上配置 rsync 模块、是否在局域网内等因素。








