附件1:配置文件参数

下面是常见的全局配置参数

Port:指定后台程序使用的端口号,默认为873

Uid该选项指定当该模块传输文件时守护进程应该具有的uid,配合gid选项使用可以确定哪些可以访问怎么样的文件权限,默认值是" nobody"

Gid:该选项指定当该模块传输文件时守护进程应该具有的gid。默认值为" nobody"

max connections指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。默认值是0,也就是没有限制。  

lock file:指定支持max connections参数的锁文件,默认值是/var/run/rsyncd.lock

motd file" motd file" 参数用来指定一个消息文件,当客户连接服务器时该文件的内容显示给客户,默认是没有motd文件的。  

log file" log file" 指定rsync的日志文件,而不将日志发送给syslog 

pid file:指定rsyncpid文件,通常指定为/var/run/rsyncd.pid”  

下面是常见的模块配置参数

主要是定义服务器哪个目录要被同步输出。其格式必须为[module]”形式,这个名字就是在rsync 客户端看到的名字,其实有点象Samba服务器提供的共享名。而服务器真正同步的数据是通过 path 来指定的。

Comment给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户。默认没有描述定义。  

Path:指定该模块的供备份的目录树路径,该参数是必须指定的。  

read only yes为只允许下载,no为可以下载和上传文件到服务器

exclude:用来指定多个由空格隔开的多个文件或目录(相对路径),将其添加到exclude列表中。这等同于在客户端命令中使用—exclude----filter来指定某些文件或目录不下载或上传(既不可访问)

exclude from指定一个包含exclude模式的定义的文件名,服务器从该文件中读取exclude列表定义,每个文件或目录需要占用一行 

include 用来指定不排除符合要求的文件或目录。这等同于在客户端命令中使用--include来指定模式,结合includeexclude可以定义复杂的exclude/include规则。  

include from指定一个包含include模式的定义的文件名,服务器从该文件中读取include列表定义。  

auth users :该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。如果" auth users" 被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的challenge/response认证协议。用户的名和密码以明文方式存放在" secrets file" 选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)  

secrets file:该选项指定一个包含定义用户名:密码对的文件。只有在" auth users" 被定义时,该文件才有作用。文件每行包含一个username:passwd对。一般来说密码最好不要超过8个字符。没有默认的secures file名,注意:该文件的权限一定要是600,否则客户端将不能连接服务器。  

strict modes该选项指定是否监测密码文件的权限,如果该选项值为true那么密码文件只能被rsync服务器运行身份的用户访问,其他任何用户不可以访问该文件。默认值为true  

hosts allow指定哪些IP的客户允许连接该模块。定义可以是以下形式:

单个IP地址,例如:192.167.0.1,多个IP或网段需要用空格隔开, 

整个网段,例如:192.168.0.0/24,也可以是192.168.0.0/255.255.255.0

 *”则表示所有,默认是允许所有主机连接。

hosts deny指定不允许连接rsync服务器的机器,可以使用hosts allow的定义方式来进行定义。默认是没有hosts deny定义。  

ignore errors:指定rsyncd在判断是否运行传输时的删除操作时忽略server上的IO错误,一般来说rsync在出现IO错误时将将跳过--delete操作,以防止因为暂时的资源不足或其它IO错误导致的严重问题。 

ignore nonreadable :指定rysnc服务器完全忽略那些用户没有访问权限的文件。这对于在需要备份的目录中有些文件是不应该被备份者得到的情况是有意义的。

use chroot如果" use chroot" 指定为true,那么rsync在传输文件以前首先chrootpath参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要以roots权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true   

List:该选项设定当客户请求可以使用的模块列表时,该模块是否应该被列出。如果设置该选项为false,可以创建隐藏的模块。默认值是true  

Timeout通过该选项可以覆盖客户指定的IP超时时间。通过该选项可以确保rsync服务器不会永远等待一个崩溃的客户端。超时单位为秒钟,0表示没有超时定义,这也是默认值。对于匿名rsync服务器来说,一个理想的数字是600  

refuse options:通过该选项可以定义一些不允许客户对该模块使用的命令参数列表。这里必须使用命令全名,而不能是简称。但发生拒绝某个命令的情况时服务器将报告错误信息然后退出。如果要防止使用压缩,应该是:" dont compress = *"

dont compress: 用来指定那些不进行压缩处理再传输的文件,默认值是*.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

附件2Rsync同步算法

Rsync只所以同步文件的速度相当快,是因为Rsync同步算法能在很短的时间内计算出需要备份的数据,关于Rsync的同步算法描述如下:

假定在1号和2号两台计算机之间同步相似的文件AB,其中1号对文件A拥有访问权,2号对文件B拥有访问权。并且假定主机1号与2号之间的网络带宽很小。那么rsync算法将通过下面的五个步骤来完成:

1>.2号将文件B分割成一组不重叠的固定大小为S字节的数据块,最后一块可能会比S 小。  

2>.2号对每一个分割好的数据块执行两种校验:一种是32位的滚动弱校验,另一种是128位的MD4强校验。  

3>.2号将这些校验结果发给1号。  

4>.1号通过搜索文件A的所有大小为S的数据块(偏移量可以任选,不一定非要是S的倍数),来寻找与文件B的某一块有着相同的弱校验码和强校验码的数据块。这项工作可以借助滚动校验的特性很快完成。  

5.>.1号发给2号一串指令来生成文件A2号上的备份。这里的每一条指令要么是对文件B经拥有某一个数据块而不须重传的证明,要么是一个数据块,这个数据块肯定是没有与文件B的任何一个数据块匹配上的。