| 
       
	实现功能:当用户在本地客户端某目录内建立、修改、删除目录或文件、修改目录或文件的属性,只要执行相同的shell脚本,rsync就会自动找出有改动或删除的数据,将其传送到服务器上,使服务器端某目录内的数据跟本地客户端某目录内的数据保持一致。 
	一、通过rsh或ssh命令 
	在没有建立rsync服务器的情况下,我们可以利用rsync命令直接进行快速的差异备份: 
	命令格式: 
	#rsync [option] 源路径 目标路径 
	其中: 
	[option]: 
	a:使用archive模式,等于-rlptgoD,即保持原有的文件权限 
	z:表示传输时压缩数据 
	v:显示到屏幕中 
	e:使用远程shell程序(可以使用rsh或ssh) 
	--delete:精确保存副本,源主机删除的文件,目标主机也会同步删除 
	--include=PATTERN:不排除符合PATTERN的文件或目录 
	--exclude=PATTERN:排除所有符合PATTERN的文件或目录 
	--password-file:指定用于rsync服务器的用户验证密码 
	源路径和目标路径可以使用如下格式: 
	rsync://[USER@]Host[:Port]/Path           <--rsync服务器路径 
	[USER@]Host::Path                         <--rsync服务器的另一种表示形式 
	[USER@]Host:Path                          <--远程路径 
	LocalPath                                 <--本地路径 
	1、同步客户端/home/test/abc目录中的文件到服务器端的/opt/htdocs目录: 
	/usr/bin/rsync -azv --delete /home/test/abc -e ssh www@192.168.1.200:/opt/htdocs/    //注意这里的区别/home/test/abc/  和/home/test/abc 
	2、同步rsync服务器/opt/htdocs/目录中的文件到本地的/home/test/abc/: 
	/usr/bin/rsync -azv --delete rsync://linuxing@192.168.1.200/opt/htdocs /home/test/abc/ 
	二、建立rsync服务器 
	当服务器没有开通ssh,或备份方没有ssh权限的时候,我们可以通过建立rsync服务器,进行匿名的数据同步。 
	1、服务端 
	主配置文件: 
	#vi /etc/rsyncd.conf 
	log file = /var/log/rsyncd.log 
	pid file = /var/run/rsyncd.pid 
	lock file = /var/run/rsync.lock 
	[test]                                    #rsync区段的设定名称 
	path = /var/www/html/test                 #需要同步的数据存放路径 
	comment = test folder                    #注释 
	uid = apache                              #采用什么身份进行文件读取 
	gid = apache                              #同上,必须是有读取path权限的用户、组 
	ignore errors                             #忽略错误 
	read only = yes                           #只读 
	list = no                                 #不能列表 
	auth users = linuxing                     #连接rsync服务的帐号 
	secrets file = /etc/rsyncd.secrets        #指定存放帐号密码的位置 
	帐号密码文件: 
	#vi /etc/rsyncd.secrets 
	#格式:帐号:密码 (每行一组,帐号和密码用:号分开) 
	linuxing:backup 
	保存后,需要保证用户是root,权限是600 
	#chown root:root /etc/rsyncd.secrets 
	#chmod 600 /etc/rsyncd.secrets 
	启动服务: 
	#rsync --daemon 
	保证开机自动启动: 
	修改/etc/xinetd.d/rsync文件,把其中的disable=yes改为disable=no 
	#sed -i -e "/disable/{ s/yes/no/ }" /etc/xinetd.d/rsync 
	#service xinetd.d restart 
	2、客户端 
	使用用法一中涉及到rsync://的方法即可。 
	如果rsync服务器需要密码验证,可以增加--password-file参数: 
	#rsync -azv --delete rsync://linuxing@192.168.1.100/test /var/www/html --password-file=/etc/test 
	#vi /etc/test 
	#指定访问密码 
	bakcup 
	#chmod 600 /etc/test 
	3、定时 
	另外,由于rsync客户端没有定时功能,我们可以通过在crontab中增加计划任务实现定时的同步,如:(不要使用-v参数,防止刷屏) 
	#crontab -e 
	0 22 * * 1-5 /usr/bin/rsync -az --delete rsync://linuxing@192.168.1.100/test /var/www/html --password-file=/etc/test 
	#指定星期一到五,每晚十点整进行同步 
	三、总结 
	使用rsync的优点:可通过ssh进行网络加密传输,也可以利用ssh客户端密钥建立信任关系。当在两台计算机之间保持大型、复杂目录结构的同步时候,比tar或wget等方式都要快。而且可以做到精确同步。 
      (责任编辑:IT) |