rsync 服务简介
上一节讲述了使用 rsync 客户命令进行同步和备份的内容。rsync 还可以以守护进程(daemon)方式运行,若一台主机以 daemon 模式运行 rsync,一般称其为 rsync 服务器。rsync 的 C/S 方式运行方式概述如下:
rsync 客户端连接远程 rsync 守护进程进行数据同步。
rsync 服务器端要开启 rsyncd 服务,默认监听 873 端口,等待客户端去连接。
rsync 服务器可以 独立运行,也可由 Xinetd 运行。CentOS 默认以 Xinetd 运行。
rsync 服务器启动时会读取配置文件,默认为 /etc/rsyncd.conf,其格式类似于 samba 的主配置文件。
用户验证由服务器负责,用户口令文件在 /etc/rsyncd.conf 中指明。
常用的服务选项有:
–daemon 表示以守护进程方式运行
–address=ADDRESS 将此服务绑定到指定的 IP 地址运行
–port=PORT 指定特殊的监听端口,默认为 873 端口
–bwlimit=KBPS 限制 I/O 带宽(单位为 KBytes/秒)
–config=FILE 指定配置文件,默认为 /etc/rsyncd.conf
–sockopts=OPTIONS 指定自定义 TCP 选项
-4, –ipv4 使用 IPv4
-6, –ipv6 使用 IPv6
配置 rsync 服务
配置 rsync 服务器的步骤
首先要选择服务器启动方式
对于负荷较重的 rsync 服务器应该使用独立运行方式
对于负荷较轻的 rsync 服务器可以使用 xinetd 运行方式
创建配置文件 rsyncd.conf
对于非匿名访问的 rsync 服务器还要创建认证口令文件
以 xinetd 运行 rsync 服务
CentOS 默认以 xinetd 方式运行 rsync 服务。rsync 的 xinetd 配置文件
在 /etc/xinetd.d/rsync。要配置以 xinetd 运行的 rsync 服务需要执行如下的命令:
# chkconfig rsync on
# service xinetd restart
管理员可以修改 /etc/xinetd.d/rsync 配置文件以适合您的需要。例如,您可以修改配置行
server_args = --daemon
在后面添加 rsync 的服务选项。
独立运行 rsync 服务
最简单的独立运行 rsync 服务的方法是执行如下的命令:
/usr/bin/rsync --daemon
您可以将上面的命令写入 /etc/rc.local 文件以便在每次启动服务器时运行 rsync 服务。当然,您也可以写一个脚本在开机时自动启动 rysnc 服务。
配置文件 rsyncd.conf
配置文件 rsyncd.conf 由全局配置和若干模块配置组成。配置文件的语法为:
模块以 [模块名] 开始
参数配置行的格式是 name = value ,其中 value 可以有两种数据类型:
字符串(可以不用引号定界字符串)
布尔值(1/0 或 yes/no 或 true/false)
以 # 或 ; 开始的行为注释
\ 为续行符
全局参数
在文件中 [module] 之外的所有配置行都是全局参数。当然也可以在全局参数部分定义模块参数,这时该参数的值就是所有模块的默认值。
模块参数
模块参数主要用于定义 rsync 服务器哪个目录要被同步。模块声明的格式必须为 [module] 形式,这个名字就是在 rsync 客户端看到的名字,类似于 Samba 服务器提供的共享名。而服务器真正同步的数据是通过path 来指定的。可以根据自己的需要,来指定多个模块,模块中可以定义以下参数:
1、基本模块参数
2、模块控制参数
![](https://i-blog.csdnimg.cn/blog_migrate/ffd2cdf3f8e15bba23c7e02756c7fd11.png)
3、模块文件筛选参数
一个模块只能指定一个 exclude 参数、一个 include 参数。
结合 include 和 exclude 可以定义复杂的 exclude/include 规则 。
这几个参数分别与相应的 rsync 客户命令选项等价,唯一不同的是它们作用在服务器端。
关于如何书写规则文件的内容请参见上节。
4、模块用户认证参数
rsync 认证口令文件的权限一定是 600,否则客户端将不能连接服务器。
rsync 认证口令文件中每一行指定一个 用户名:口令 对,格式为:
# 以 "#" 开始的行为注释行
username:passwd
# 一般来说口令最好不要超过8个字符。
若您只配置匿名访问的 rsync 服务器,则无需设置上述参数。
5、模块访问控制参数
客户主机列表定义可以是以下形式:
单个IP地址。例如:192.168.0.1
整个网段。例如:192.168.0.0/24,192.168.0.0/255.255.255.0
可解析的单个主机名。例如:centos,centos.smartraining.cn
域内的所有主机。例如:*.smartraining.cn
“*”则表示所有。
多个列表项要用空格间隔。
6、模块日志参数
* 设置了”log file”参数时,在日志每行的开始会添加”%t [%p]“。
可以使用的日志格式定义符如下所示:
%a - 远程IP地址
%h - 远程主机名
%l - 文件长度字符数
%p - 该次 rsync 会话的 PID
%o - 操作类型:”send” 或 “recv”
%f - 文件名
%P - 模块路径
%m - 模块名
%t - 当前时间
%u - 认证的用户名(匿名时是 null)
%b - 实际传输的字节数
%c - 当发送文件时,记录该文件的校验码