rsyncd 服务
rsyncd
是 rsync
的守护进程模式,可以在服务器上运行,允许客户端通过网络连接到服务器进行文件同步。它支持基于模块的配置,提供了丰富的访问控制和日志功能。
联动rsyncd
以及其他的服务或命令,可以实现如定时同步
、自动备份
等功能。
常用目录文件与功能
1. 配置文件
rsyncd
的配置文件通常位于 /etc/rsyncd.conf
,该文件定义了守护进程的全局配置和各个模块的具体设置。
2. 日志文件
默认情况下,rsyncd
会将日志记录在 /var/log/rsyncd.log
文件中,日志文件的位置和详细程度可以在配置文件中进行设置。
3. pid 文件
rsyncd
运行时会生成一个 pid 文件,通常位于 /var/run/rsyncd.pid
,用于跟踪 rsyncd
进程的运行状态。
4. systemctl文件
usr/lib/systemd/system/rsyncd.service
是systemctl xxx rsyncd
时使用的文件
配置文件的每条语句的功能与参数
下面是一个典型的 rsyncd.conf
配置文件示例,详细说明每个配置项的功能和参数。
conf
# 全局配置
fake super = yes
uid = nobody
gid = nogroup
use chroot = yes
max connections = 4
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
ignor errors #忽略输出的报错
hosts allow =x.x.x.x #允许访问的网段或主机
[backup] #客户端访问的名字
path = /data/backup #服务端的存储路径
comment = Backup Directory
read only = no
list = yes
auth users = backupuser。#不需要真实在服务端上的用户,仅存于密码文件以`k:v`键值对的形式存放
secrets file = /etc/rsyncd.secrets
全局配置
fake super
:指伪装成root
执行。uid
:指定守护进程运行的用户ID。默认是nobody
。gid
:指定守护进程运行的组ID。默认是nogroup
。use chroot
:是否使用chroot
将守护进程限制在某个目录内。默认值是yes
,提高安全性。max connections
:允许的最大并发连接数。log file
:日志文件的位置。pid file
:存放rsyncd
进程ID的文件位置。lock file
:锁文件的位置,用于限制并发运行。
模块配置
模块配置用于定义不同的同步目录和相关的访问控制。
path
:指定模块对应的目录路径。comment
:对模块的简要说明,通常用于描述模块的用途。read only
:是否以只读模式运行该模块。yes
表示只读,no
表示可读写。list
:是否列出该模块,yes
表示列出,no
表示隐藏。auth users
:指定允许访问该模块的用户列表,多个用户用逗号分隔。secrets file
:指定存放用户认证信息的文件位置。
用户认证文件
用户认证文件通常位于 /etc/rsyncd.secrets
,文件内容格式如下:
backupuser:password
该文件应设置为只有 rsyncd
服务用户可读,确保安全性:
sh
chmod 600 /etc/rsyncd.secrets
如何使用 rsyncd
1. 配置 rsyncd
创建或编辑配置文件 /etc/rsyncd.conf
,并按照上述示例进行配置。
2. 启动 rsyncd
可以通过以下命令启动 rsyncd
:
sh
sudo rsync --daemon
3. 连接到 rsyncd
客户端可以使用以下命令连接到 rsyncd
服务器进行文件同步:
sh
rsync -avz /local/path/ backupuser@remotehost::backup
如果 rsyncd
配置了用户认证,可以在命令行中输入密码:
sh
rsync -avz /local/path/ backupuser@remotehost::backup --password-file=/path/to/passwordfile
#/path/to/passwordfile文件存储在客户端本机上,内只存储backupuser的密码即可:
#cat passwordfile
# password
4. 停止 rsyncd
通过以下命令停止 rsyncd
服务:
sh
sudo kill $(cat /var/run/rsyncd.pid)