rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了--remote sync。它的特性如下:
可以镜像保存整个目录树和文件系统。
可以很容易做到保持原来文件的权限、时间、软硬链接等等。
无须特殊权限即可安装。
优化的流程,文件传输效率高。
可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
支持匿名传输,以方便进行网站镜象。
 
1)Centos默认会自带Rsync,为了方便使用,建议先卸载掉
rpm -qa |grep "rsync" 查看是否带有rpm安装的rsync
rpm -e rsync-x.x.x  如果有就卸载掉
2)下载安装Rsync最新稳定版
wget  http://rsync.samba.org/ftp/rsync/rsync-3.0.7.tar.gz
tar zxvf rsync-3.0.7.tar.gz
     cd rsync-3.0.7
     ./configure --prefix=/usr/local/rsync
     make
     make install
说明一点,客户机和服务器都要安装rsync。客户机以客户端方式运行rsync,服务器端以服务器方式运行rsync,它监听873端口。
3) 设定 /etc/xinetd.d/rsync, 如下:
# default: off
# description: The rsync server is a good addition to am ftp server, as it \
#       allows crc checksumming etc.
service rsync
{
        disable = no
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}

然后执行chkconfig rsync on  使上述设定生效.
主要是要打开 rsync 這个 daemon, 一旦有 rsync client 要连接时, xinetd 会把它转介給 rsyncd (跑 port 873).
4)服务器端手动设置配置文件/etc/rsyncd.conf
vi /etc/rsyncd.conf
插入以下内容,如果之后调试遇到错误,建议把注释都去掉,以免造成不必要的错误
 view plaincopy to clipboardprint?
uid = root                                    
gid = root                               
use chroot = no                   
max connections = 4             
strict modes =yes                
port = 873                     
pid file = /var/run/rsyncd.pid       
lock file = /var/run/rsync.lock      
log file = /var/log/rsyncd.log       
 
            
[www]       # 这里是认证的模块名,在client端需要指定         
path = /data0/htdocs/www/      # 需要做镜像的目录    
comment = This is a test        
ignore errors                  
read only = yes              
list = no   
# 认证的用户名,如果没有这行,则表明是匿名                 
auth users = tony             
secrets file = /etc/rsync.pas            
hosts allow = 192.168.10.225,10.10.10.10       
hosts deny = 0.0.0.0/0                  
#transfer logging = yes 
uid = root                                 
gid = root                            
use chroot = no                
max connections = 4          
strict modes =yes             
port = 873                  
pid file = /var/run/rsyncd.pid    
lock file = /var/run/rsync.lock   
log file = /var/log/rsyncd.log    

         
[www]       # 这里是认证的模块名,在client端需要指定      
path = /data0/htdocs/www/      # 需要做镜像的目录 
comment = This is a test     
ignore errors               
read only = yes           
list = no
# 认证的用户名,如果没有这行,则表明是匿名              
auth users = tony          
secrets file = /etc/rsync.pas         
hosts allow = 192.168.10.225,10.10.10.10    
hosts deny = 0.0.0.0/0               
#transfer logging = yes
5)设置密码文件
在服务器端:
echo "tony:111111" >> /etc/rsync.pas 注意格式,以及用户名要与配置文件一致
安全起见,设置密码文件的拥有者为root,权限为只读
chown root:root rsync.pas
     chmod 600 /etc/rsync.pas
在客户端:
echo "111111" >> /etc/rsync.pas 注意格式,以及密码要与服务器端一致
安全起见,设置密码文件的拥有者为root,权限为只读
chown root:root rsync.pas
     chmod 600 /etc/rsync.pas
service xinetd restart,使配置生效,如果没有xinetd,需求再安装一下 yum install xinetd

6)客户端服务器都启动rsync
/usr/local/bin/rsync --daemon
或者xinetd进程启动 /etc/rc.d/init.d/xinetd reload
可以把该启动命令加入/etc/rc.local
在服务器端验证启动是否成功:
netstat -na|grep 873
7)打开iptables防火墙:
vi /etc/sysconfig/iptables
加入-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT
service iptables restart
8)从客户端进行测试:
从服务器端取文件
/usr/local/rsync/bin/rsync  -vzrtopg --progress --delete tony@192.168.10.220::www /data0/htdocs/www --password-file=/etc/rsync.pas
 向SERVER端上传文件
  /usr/local/rsync/bin/rsync -vzrtopg --progress --password-file=/root/rsync.pas  /data0/htdocs/www tony@192.168.10.220::www
9)如果有比较复杂的工作,利用一些常见的脚本语言可以有帮助。比如:
vi /usr/local/bin/rsync.sh
#!/bin/sh
DATE=`date +%w`
/usr/local/rsync/bin/rsync  -vzrtopg --progress --delete tony@192.168.10.220::www /data0/htdocs/www --password-file=/etc/rsync.pas >
/var/log/rsync.$DATE
修改/etc/crontab做好定时
比如:
 echo “15      4       *       *       6       root    rsync.sh”>>/etc/crontab
10)测试过程可能遇到的问题:
安装好rsync后,执行/usr/local/rsync/bin/rsync --daemon启动rsync时报错:
rsync: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory
解决办法:在/etc/ld.so.conf中加一行/usr/local/lib,运行ldconfig。再运行/usr/local/rsync/bin/rsync --daemon,就可以了。报错的原因可能之前更新过iconv库.

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ydt619/archive/2010/11/09/5997606.aspx