rsync
本身通常使用 SSH(Secure Shell)协议来进行数据传输,因此它默认使用 SSH 的端口 22。如果使用 rsync
进行通过 SSH 的数据同步,它会通过端口 22 来建立连接。
然而,如果你使用 rsync
作为一个守护进程进行文件同步(即不通过 SSH),则可以配置它使用 TCP 端口 873 作为默认端口。
总结:
默认端口 22:当 rsync
使用 SSH 进行数据传输时。
默认端口 873:当 rsync
作为守护进程运行时。
要使用 rsync
的 873 端口,你可以将 rsync
配置为通过其守护进程进行通信,而不是通过 SSH。rsync
守护进程默认监听 873 端口,并允许客户端通过该端口进行连接。下面是如何配置和使用 873 端口的步骤:
1. 启动 rsync
守护进程
首先,需要在服务器端启动 rsync
守护进程。这通常通过配置文件来实现。
配置守护进程(在服务器上)
创建或编辑 rsync
的配置文件 /etc/rsyncd.conf
,内容示例如下:
[module_name]
path = /path/to/directory
comment = My rsync module
read only = no
list = yes
auth users = username
secrets file = /etc/rsyncd.secrets
[module_name]
是该模块的名称,通常可以自定义,但需要确保它是唯一的。这一行定义了一个 模块。每个模块代表一个 rsync 服务端提供的共享目录,用户可以通过模块名来访问该共享。
path
这个目录将会被 rsync daemon 共享给客户端访问。
comment
为该模块添加一个描述性注释,便于其他人理解该模块的用途。这个字段不是必需的,主要用于标明模块的用途或其他信息,客户端在访问时会看到这个注释。
read only
指定模块是否是只读的。no 表示该模块是可读写的,客户端可以上传和下载文件。yes 表示该模块是只读的,客户端只能下载文件,不能上传。
list
决定该模块是否会出现在 rsync 服务的模块列表中。yes 表示该模块会显示在模块列表中,客户端可以看到并选择访问该模块。no 表示该模块不会出现在模块列表中,但仍然可以通过明确指定模块名来访问。
auth users
指定允许访问的用户名(你可以定义多个用户)。可以指定多个用户名,使用逗号分隔(例如:auth users = user1, user2
)
secrets file
指定一个文件路径,文件中保存了 rsync 用户的认证信息(用户名和密码),格式是 username:password
。
配置好 /etc/rsyncd.conf
文件后,你可以通过以下命令启动 rsync
守护进程:
sudo rsync --daemon
这会在 873 端口 上启动 rsync
服务。
创建密码文件
确保你在 /etc/rsyncd.secrets
文件中包含了正确的用户名和密码,格式如下:
username:password
设置合适的权限,确保文件的安全:
chmod 600 /etc/rsyncd.secrets
2. 使用 rsync
连接到 873 端口
客户端使用 rsync
命令连接到服务器上的守护进程时,指定使用端口 873。你可以使用如下命令:
sync -avz rsync://user@remote_host/module_name/ /local/directory
在这个命令中:
rsync://user@remote_host/module_name/
是目标服务器上 rsync
守护进程的地址。
module_name
是在 rsyncd.conf
中定义的模块名。
/local/directory
是你希望同步到的本地目录路径。
如果需要验证用户身份,可以指定用户名和密码文件:
rsync -avz --password-file=/path/to/password/file rsync://user@remote_host/module_name/ /local/directory
-a
(--archive
):
归档模式,表示递归复制目录,并保持符号链接、权限、时间戳等元数据。相当于 -rlptgoD
,确保文件和目录结构完整保留,适用于备份和复制文件。
-v
(--verbose
):
详细模式,表示输出更多的运行信息。使用 -v
后,rsync
会在传输过程中显示每个文件的传输状态,帮助用户了解正在进行的操作。
-z
(--compress
):
压缩模式,表示在传输过程中对数据进行压缩。这通常用于通过网络传输时,减少带宽消耗,尤其是在带宽较低的情况下非常有用。
3. 防火墙设置
确保防火墙允许 873 端口的流量。如果你的服务器使用防火墙(例如 firewalld
或 iptables
),需要打开 873 端口:
使用 firewalld
:
sudo firewall-cmd --zone=public --add-port=873/tcp --permanent
sudo firewall-cmd --reload
使用 iptables
:
sudo iptables -A INPUT -p tcp --dport 873 -j ACCEPT
暂无评论内容