处理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手册页面