处理 rsync 客户端请求的服务端有三种:Inetd、远程 Shell、Rsync 守护进程。这里先首先介绍 Rsync 守护进程这种方式。
准备工作
rsync 命令由一个–daemon 选项,可以使 rsync 以守护进程的方式运行,并监听默认的 873 端口,以等待客户端的连接。
要创建一个 Rsync 服务需要两样东西。一个是 rsync 命令,这个我们已经有了。另外一个东西是 Rsync 服务的配置文件 rsyncd.conf。
接下来就开始介绍如何编写一个 rsyncd.conf 配置文件。
创建配置文件
rsyncd.conf 是 rsync 在守护进程模式下的运行时配置文件。该文件控制了认证、访问、日志、可用模块等等。
配置文件结构及组成
下面是一个基本的 rsync.simple.conf 文件:
[ftp] path = /home/ftp comment = ftp export area
再下面是一个稍微复杂一点的 rsync.sophisticated.conf 文件:
uid = nobody gid = nobody use chroot = yes max connections = 4 syslog facility = local5 pid file = /var/run/rsyncd.pid [ftp] path = /var/ftp/./pub comment = whole ftp area (approx 6.1 GB) [cvs] path = /data/cvs comment = CVS repository (requires authentication) auth users = tridge, susan secrets file = /etc/rsyncd.secrets
稍微复杂一点的 rsyncd.conf 配置文件中 /etc/rsyncd.secrets 文件的内容如下:
tridge:mypass susan:herpass
配置文件由模块和参数组成:
- 模块:如上面的 [ftp]、[cvs]。 一个模块以由方括号包含着模块名称开始,并一直持续到下一个模块开始时结束。
- 参数:“name=value”形式的内容就是参数。比如:path = /data/cvs,use chroot = yes。
有关配置的几点注意事项
- 配置文件是基于行的。也就是说,以换行符终止的行可能代表着注释、模块名称、参数之一。
- 只有参数中第一个等号是有意义的,因为第一个等号将参数和值分开。第一个等号之前或之后的空白字符被丢弃。模块及参数名中的前导、尾随、内部空白是无关紧要的。参数值中的前导空白字符和尾随空白字符都会被丢弃。参数值内部的空白字符会逐字保留。
- 以井号(#)开头的行都将被忽略,只包含空格的行也是如此。(如果井号出现在除前导空白字符以外的任何地方,则将它视为该行内容的一部分。)
- 以反斜线(\)结尾的任何行表示下一行是当前行的继续。典型的 UNIX 方式。
- 等号后面的值可以是一个字符串(不需要引号),也可以是布尔值。对于布尔值,可以是 yes/no、0/1、true/false。并且布尔值大小写不敏感,但在字符串值是区分大小写的。
关于模块
向远程服务器推送文件时,要指定推送到哪个模块。所谓模块,可以理解成某个“目录”,但这个目录是通过配置文件指定的“虚拟的目录”。比如,远程地址rsync://rsync.d3rm.org/example中的 example 实际上是一个模块名,并不是一个实际的目录,该模块名 example 是通过配置文件进行命名的,配置文件的 path 属性,指定了该模块对应的实际目录,如下配置文件:
[example] path = /var/backup/tmp read only = yes
创建自己的配置文件
在 /etc 中创建 rsyncd.conf 配置文件,文件内容如下:
###################################################### # rsyncd.conf 示例配置文件 ###################################################### # 使 rsync 监听 8737 端口,而不是默认的 873 端口。 port = 8737 # 创建模块 foo [foo] # 模块所指向额路径为 /var/backup/foo path = /var/foo # 模块的注释 comment = 用于 RSYNC 演示模块的模块 # 允许上传。如果 read only = ture,则只能进行读取,无法上传 read only = false
配置文件已经写好了,接下来就是使用这个配置文件来启动 Rsync 服务了。
使用 rsyncd.conf 来启动 rsync 守护进程
如果要以守护进程的方式启动 rsync,则需要使用 rsync 的–daemon 选项。如果要使用我们上面的配置文件,则需要使用–config 选项。命令如下:
使用如下 ps 命令来查看 rsync 是否正确启动:
root 51473 1 0 Mar11 ? 00:00:00 /usr/bin/rsync –no-detach –daemon –config /etc/rsyncd.conf
root 55786 55772 0 15:50 pts/2 00:00:00 grep –color=auto rsync
如上输出,rsync 已经正常启动,进程 ID 为 51473。
注意事项
这里只是简单启动了 Rsync 服务,防火墙、高可用等需要根据需要进行配置。如上的配置文件仅用于演示
关于 rsync –daemon 有关的其他选项,可以参考在线 rsync 手册页面
关于 rsyncd.conf 配置文件中的其他选项,可以参考在线 rsyncd.conf 手册页面