1. rysnc简介
rsync是Unix下的一款应用软件,它能同步更新两处计算机的文件与目录,并适当利用差分编码以减少数据传输。rsync中一项与其他大部分类似程序或协定中所未见的重要特性是镜像对每个目标只需要一次传送。rsync可拷贝/显示目录属性,以及拷贝文件,并可选择性的压缩以及递归拷贝。
在常驻模式(daemon mode)下,rsync默认监听TCP端口873,以原生rsync传输协定或者通过远程shell如RSH或者SSH伺服文件。SSH情况下,rsync客户端运行程序必须同时在本地和远程机器上安装。
rsync是自由软件,以GNU通用公共许可证发布。

2.rsync特性
 >可以镜像保存整个目录树和文件系统。
 >可以很容易做到保持原来文件的权限、时间、软硬链接等等。
 >无须特殊权限即可安装。
 >优化的流程,文件传输效率高。
 >可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
 >支持匿名传输。
 
3.配置实例
Server:192.168.1.10
Client:192.168.1.20
OS:CentOS 5.4 32bits

3.1 Server端配置:
创建目录及文件:

mkdir –p /etc/rsyncd (默认情况下没有该目录)
 cd /etc/rsyncd
 touch rsyncd.conf
 touch rsyncd.motd
 touch rsyncd.secrets


分别向着三个文件中添加内容能。
vim rsyncd.conf
添加内容:

# This line is required by the /etc/init.d/rsyncd script
 pid file = /var/run/rsyncd.pid
 #service port
 port = 873
 #server ip
 address=192.168.1.10
 uid = root
 gid = root
 use chroot = yes
 read only = yes
 #limit access to private LANs
 hosts allow=192.168.1.0/24
 hosts deny=*
 max connections = 5
 motd file = /etc/rsyncd/rsyncd.motd
 #This will give you a separate log file
 log file = /var/log/ccic/rsyncd.log
 #transfer logging = yes
 log format = %t %a %m %f %b
 syslog facility = local3
 timeout = 300[doc]
 path = /usr/local/doc
 list = yes
 auth users = hacker
 secrets file = /etc/rsyncd/rsyncd.secrets[pdf]
 path = /usr/local/pdf
 list = yes
 auth users = hacker
 secrets file = /etc/rsyncd/rsyncd.secrets[upload]
 path = /usr/local/upload
 list = yes
 auth users = hacker
 read only = no
 secrets file = /etc/rsyncd/rsyncd.secrets
 #########################################################


说明:
address一行,填写的是服务器的真实IP地址;
hosts allow表示的是允许访问本服务器的IP地址或IP地址段;
doc和pdf两个label是将远端NFS上的文件同步到本地是使用,而upload是将本地的文件同步到远端NFS服务器上时使用。在record中多了一行read only = no,表明允许auth users对其path指定的目录进行写操作。
三个label均对用户hacker开放,因此,客户端也只能使用hacker进行和服务器端的同步。
创建一个软连接,方便编辑:
ln –s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf

创建用户密码对:
vim /etc/rsyncd/rsyncd.secrets
添加内容:
hacker:imhacker
内容的格式是:“用户名:密码”
修改文件属性:
chmod 600 /etc/rsyncd/rsyncd.secrets

设置欢迎辞:
vim /etc/rsyncd/rsyncd.motd
+++++++++++++++++++++++
++++    Welcome    ++++
+++++++++++++++++++++++
该文件里的内容是当client连接上server上后,客户端显示的内容。
另外,服务器端需开启防火墙,允许对TCP端口873的访问。

3.2 客户端配置
创建密码文件:

touch /etc/rsync.passwd
 vim /etc/rsync.passwd


添加密码:
hacker-imhacker

修改密码文件属性:
chmod 600 /etc/rsync.passwd

4.上传和下载
在客户端执行命令:

# 将Server上/usr/local/doc内的文件同步到本地/home/backup/doc内,并且保持一致。
 rsync -avz --delete --password-file=/etc/rsync.passwd  hacker@192.168.1.10::doc /home/backup/doc
 # 功能类似上一条
 rsync -avz --delete --password-file=/etc/rsync.passwd  hacker@192.168.1.10::pdf /home/backup/pdf
 # 将本地/home/test目录里的文件同步上传到Server端的/usr/local/upload目录里,同时上传成功后会将本地的文件删除.
 rsync -avz --remove-source-files --password-file=/etc/rsync.passwd /home/test/*  hacker@192.168.1.10::upload


-------------------------------------------------------------------------------------
参考资料
1.man rsync &  man rsyncd.conf
2.维基百科之rsync:http://zh.wikipedia.org/zh-cn/Rsync 3.