「rsync」- 服务搭建(在GNU/Linux中)

处理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。

有关配置的几点注意事项

  1. 配置文件是基于行的。也就是说,以换行符终止的行可能代表着注释、模块名称、参数之一。
  2. 只有参数中第一个等号是有意义的,因为第一个等号将参数和值分开。第一个等号之前或之后的空白字符被丢弃。模块及参数名中的前导、尾随、内部空白是无关紧要的。参数值中的前导空白字符和尾随空白字符都会被丢弃。参数值内部的空白字符会逐字保留。
  3. 以井号(#)开头的行都将被忽略,只包含空格的行也是如此。(如果井号出现在除前导空白字符以外的任何地方,则将它视为该行内容的一部分。)
  4. 以反斜线(\)结尾的任何行表示下一行是当前行的继续。典型的UNIX方式。
  5. 等号后面的值可以是一个字符串(不需要引号),也可以是布尔值。对于布尔值,可以是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选项。命令如下:

# /usr/bin/rsync –daemon –config /etc/rsyncd.conf &

使用如下ps命令来查看rsync是否正确启动:

# ps -ef | grep 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手册页面