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中指明。
rsync 命令既是客户端程序,同时也是服务程序。在运行 rsync 服务时使用特殊的命令选项,常用的服务选项有:
选项 | 说明 |
---|---|
--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服务器的步骤: 1.首先要选择服务器启动方式
- 对于负荷较重的 rsync 服务器应该使用独立运行方式
- 对于负荷较轻的 rsync 服务器可以使用 xinetd 运行方式
2. 创建配置文件 rsyncd.conf
3. 对于非匿名访问的 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
两种rsync服务运行方式都需要配置rsyncd.conf,其格式类似于samba的主配置文件。
配置文件 rsyncd.conf 默认在/etc目录下。为了将所有与 rsync 服务相关的文件放在单独的目录下,可以执行如下命令:
# mkdir /etc/rsyncd # touch /etc/rsyncd/rsyncd.conf # ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf
配置文件rsyncd.conf由全局配置和若干模块配置组成。配置文件的语法为:
- 模块以 [模块名] 开始
- 参数配置行的格式是 name = value ,其中 value 可以有两种数据类型:
- 字符串(可以不用引号定界字符串)
- 布尔值(1/0 或 yes/no 或 true/false)
- 以 "#" 或";" 开始的行为注释
- \ 为续行符
全局参数
在文件中 [module ] 之外的所有配置行都是全局参数。当然也可以在全局参数部分定义模块参数,这时该参数的值就是所有模块的默认值。
参数 | 说明 | 默认值 |
---|---|---|
address | 在独立运行时,用于指定的服务器运行的IP地址。由 xinetd 运行时将忽略此参数,使用命令行上的--address 选项替代。 | 本地所有 IP |
port | 指定rsync守护进程监听的端口号。由 xinetd 运行时将忽略此参数,使用命令行上的--port选项替代。 | 873 |
motd file | 指定一个消息文件,当客户连接服务器时该文件的内容显示给客户。 | ”” |
pid file | rsync的守护进程将其PID写入指定的文件。 | ”” |
log file | 指定rsync守护进程的日志文件,而不将日志发送给syslog。 | ”” |
syslog facility | 指定 rsync 发送日志消息给 syslog 时的消息级别。 | daemon |
socket options | 指定自定义TCP选项。 | ”” |
模块参数
模块参数主要用于定义rsync服务器哪个目录要被同步。模块声明的格式必须为[module]形式,这个名字就是在rsync客户端看到的名字,类似于Samba服务器提供的共享名。而服务器真正同步的数据是通过path来指定的。可以根据自己的需要,来指定多个模块,模块中可以定义以下参数:
1、基本模块参数
参数 | 说明 | 默认值 |
---|---|---|
path | 指定当前模块在 rsync 服务器上的同步路径,该参数是必须指定的。 | ”” |
comment | 给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户。 | ”” |
2、模块控制参数
参数 | 说明 | 默认值 |
---|---|---|
use chroot | 若为 true,则 rsync 在传输文件之前首先 chroot 到 path 参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要 root 权限,并且不能备份指向 path 外部的符号连接所指向的目录文件。 | true |
uid | 指定该模块以指定的UID传输文件。 | nobody |
gid | 指定该模块以指定的 GID 传输文件。 | nobody |
max connections | 指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。 | 0(没有限制) |
lock file | 指定支持max connections 参数的锁文件. | /var/run/rsyncd.lock |
list | 指定当客户请求列出可以使用的模块列表时,该模块是否应该被列出。如果设置该选项为 false,可以创建隐藏的模块。 | true |
read only | 指定是否允许客户上传文件。若为 true 则不允许上传;若为 false 并且服务器目录也具有读写权限则允许上传。 | true |
write only | 指定是否允许客户下载文件。若为 true 则不允许下载;若为 false 并且服务器目录也具有读权限则允许下载。 | false |
ignore errors | 指定在rsync服务器上运行delete操作时是否忽略I/O错误。一般来说rsync在出现I/O错误时将将跳过--delete操作,以防止因为暂时的资源不足或其它I/O错误导致的严重问题。 | true |
ignore nonreadable | 指定rysnc服务器完全忽略那些用户没有访问权限的文件。这对于在需要备份的目录中有些不应该被备份者获得的文件时是有意义的。 | false |
timeout | 该选项可以覆盖客户指定的IP超时时间。从而确保rsync服务器不会永远等待一个崩溃的客户端。对于匿名rsync服务器来说,理想的数字是600(单位为秒)。 | 0(未限制) |
dont compress | 用来指定那些在传输之前不进行压缩处理的文件。 | *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz |
refuse options | 该选项可以定义一些不允许客户对该模块使用的命令选项列表。必须使用选项全名,而不能是简称。当发生拒绝某个选项的情况时,服务器将报告错误信息然后退出。例如,要防止使用压缩,应该是:”dont compress = *”。 |
3、模块文件筛选参数
参数 | 说明 | 默认值 |
---|---|---|
exclude | 指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到exclude列表中。这等同于在客户端命令中使用--exclude 来指定模式。 | ”” |
exclude from | 指定一个包含exclude规则定义的文件名,服务器从该文件中读取 exclude 列表定义。 | ”” |
include | 指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到 include列表中。这等同于在客户端命令中使用--include来指定模式 。 | ”” |
include from | 指定一个包含 include 规则定义的文件名,服务器从该文件中读取 include 列表定义。 | ”” |
- 一个模块只能指定一个exclude 参数、一个 include 参数。
- 结合 include 和 exclude 可以定义复杂的 exclude /include 规则 。
- 这几个参数分别与相应的 rsync 客户命令选项等价,唯一不同的是它们作用在服务器端。
4、模块用户认证参数
参数 | 说明 | 默认值 |
---|---|---|
auth users | 指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。用户名和口令以明文方式存放在secrets file参数指定的文件中。 | ””(匿名方式) |
secrets file | 指定一个rsync认证口令文件。只有在auth users被定义时,该文件才起作用。 | ”” |
strict modes | 指定是否监测口令文件的权限。若为 true 则口令文件只能被 rsync 服务器运行身份的用户访问,其他任何用户不可以访问该文件。 | true |
- rsync 认证口令文件的权限一定是 600,否则客户端将不能连接服务器。
- rsync 认证口令文件中每一行指定一个 用户名: 口令对,格式为:
# 以 “#” 开始的行为注释行 username:passwd # 一般来说口令最好不要超过8个字符。
5、模块访问控制参数
参数 | 说明 | 默认值 |
---|---|---|
hosts allow | 用一个主机列表指定哪些主机客户允许连接该模块。不匹配主机列表的主机将被拒绝. | * |
hosts deny | 用一个主机列表指定哪些主机客户不允许连接该模块。 | ”” |
客户主机列表定义可以是以下形式:
- 单个IP地址。例如:192.168.0.1
- 整个网段。例如:192.168.0.0/24,192.168.0.0/255.255.255.0
- 可解析的单个主机名。例如:ce ntos,ce ntos.sm artraining.cn
- 域内的所有主机。
- “*”则表示所有。
- 多个列表项要用空格间隔。
6、模块日志参数
参数 | 说明 | 默认值 |
---|---|---|
transfer logging | 使rsync服务器将传输操作记录到传输日志文件。 | false |
log format | 指定传输日志文件的字段。 | ”%o %h [%a] %m (%u) %f %l” |
- 设置了 “log file ” 参数时,在日志每行的开始会添加”%t [%p] “。
- 可以使用的日志格式定义符如下所示:
- %a — 远程IP地址
- %h — 远程主机名
- %l — 文件长度字符数
- %p — 该次 rsync 会话的 PID
- %o — 操作类型:”send” 或 “recv”
- %f — 文件名
- %P — 模块路径
- %m — 模块名
- %t — 当前时间
- %u — 认证的用户名(匿名时是 null)
- %b — 实际传输的字节数
- %c — 当发送文件时,记录该文件的校验码