rsync是一款开源,快速,多功能的可实现增量的本地或远程的数据镜像同步备份的优秀工具。适用于多个平台。从软件名称可以看出来是远程同步的意思(remote sync)。可使本地主机不同分区或目录之间及本地和远程两台主机之间的数据快速同步镜像,远程备份等功能。在同步备份时,默认情况下,rsync通过其独特的“quick check”算法,仅同步大小或者最后修改时间发生变化的文件或目录(也可根据权限,属主等变化同步,需要制定参数)。甚至是只同步一个文件里变化的内容部分,所以可以实现快速的同步数据的功能。
    提示:传统的cp,scp工具拷贝每次均为完整拷贝,而rsync除了完整拷贝,还具备增量拷贝的功能,因此从此性能及效率上更胜一筹

    结合下面的拓扑图
    CentOS6下远程数据同步工具Rsync的使用 - 图1
    1) 源服务器A
    源服务器A为CentOS6.7 64位Linux操作系统
    位于路由器NAT后
    内网IP:192.168.50.253
    外网出口IP:101.71.254.162
    2)目标服务器B
    目标服务器B为CentOS6.7 64位Linux操作系统
    公网IP:101.132.116.99
    3)功能实现:
    将源服务器A上/temp/source_files目录下的所有文件同步到目标服务器B的/home/backup目录下

    主要操作步骤
    1、先在目标服务器B上安装rsync xinetd 服务端
    [root@YuanFan-Aliyun ~]# yum -y install rsync xinetdCentOS6下远程数据同步工具Rsync的使用 - 图2
    2、目标服务器B上编辑配置文件,设置开机启动rsync
    [root@YuanFan-Aliyun ~]# vi /etc/xinetd.d/rsync
    # default: off
    # description: The rsync server is a good addition to an ftp server, as it \
    # allows crc checksumming etc.
    service rsync
    {
    disable = yes #默认是yes 修改成no
    flags = IPv6
    socket_type = stream
    wait = no
    user = root
    server = /usr/bin/rsync
    server_args = —daemon
    log_on_failure += USERID
    }
    然后wq保存退出
    CentOS6下远程数据同步工具Rsync的使用 - 图3
    4、目标服务器B上设置开机启动xinetd服务
    [root@YuanFan-Aliyun ~]# chkconfig xinetd on
    [root@YuanFan-Aliyun ~]# chkconfig xinetd —list
    xinetd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
    CentOS中是以xinetd来管理Rsync服务的,手动启动xinetd服务,当然也可以用service xinetd start服务的方式进行启动
    [root@YuanFan-Aliyun ~]# /etc/rc.d/init.d/xinetd start
    Starting xinetd: [ OK ]
    [root@YuanFan-Aliyun ~]#
    CentOS6下远程数据同步工具Rsync的使用 - 图4
    5、目标服务器B上创建rsyncd.conf配置文件,默认是没有该配置文件,手动vi编辑一份
    [root@YuanFan-Aliyun ~]# vi /etc/rsyncd.conf
    #any name you like
    [backup]
    # destination directory
    path = /home/backup
    # Hosts you allow to copy (specify source Host)
    hosts allow = 101.71.254.162 #允许进行数据同步的客户端IP地址,根据上面的拓扑图,应为路由器NAT出口IP地址101.71.254.162
    hosts deny = *
    list = true
    uid = root
    gid = root
    read only = false
    CentOS6下远程数据同步工具Rsync的使用 - 图5

    6、源服务器A端上只需要安装rsync客户端软件就可以
    [root@localhost ~]# yum install -y rsync

    7、测试源服务器A到目标服务器B之间的数据同步 rsync命令的使用
    [root@localhost ~]# rsync -avz /temp/source_files/ 101.132.116.99::backup
    CentOS6下远程数据同步工具Rsync的使用 - 图6
    rsync的参数说明
    -v :详细输出
    -z :传输时进行压缩以提高传输效率。
    -a :归档模式,表示以递归的方式传输文件,并保持文件的属性
    [root@localhost ~]#rsync -avz —progress —partial /temp/source_files/ 101.132.116.99::backup
    —progress 显示备份过程,进度条功能
    —partial 意思是keep partially transferred files 断点续传,这个比较实用
    如下图所示
    CentOS6下远程数据同步工具Rsync的使用 - 图7
    8、将rsync加到crontab定时任务
    # Add in cron if you’d like to run reguraly
    [root@localhost ~]#

    crontab -e
    # run at 2:00 AM in a day
    00 02 * rsync -avz —progress —partial /temp/source_files/ 101.132.116.99::backup

    下面是rsync命令常用的参数
    CentOS6下远程数据同步工具Rsync的使用 - 图8

    rsync的功能强大,现只做基础的介绍,有兴趣的的可以访问
    http://man.linuxde.net/rsync查看rsync命令参数说明

    附录:带密码授权的rsyncd.conf配置文件模板如下
    目标服务器B
    [root@YuanFan-Aliyun ~]# vi /etc/rsyncd.conf
    #any name you like
    [backup]
    # destination directory
    path = /home/backup
    auth users = rsyncbackup
    secrets file = /etc/rsyncd_user.db
    # Hosts you allow to copy (specify source Host)
    hosts allow =
    hosts deny =

    list = true
    uid = root
    gid = root
    read only = false
    log file = /var/log/rsyncd.log

    [root@YuanFan-Aliyun ~]# cat /etc/rsyncd_user.db
    rsyncbackup:abc123
    [root@YuanFan-Aliyun ~]#

    源服务器A
    rsync -avz —progress —partial /bak/db_backup/*.sql rsyncbackup@101.132.116.99::backup
    这时会提示输入密码,输入正确密码后开始同步