一、概述

   rsync是Linux下一个远程数据同步工具

   它可通过LAN/WAN快速同步堕胎主机间的文件和目录,并适当利用rsync算法减少数据的传输

   会对比两个文件的不同部分,传输差异部分,因此传输速度相当快

   rsync可拷贝、显示目录属性,以及拷贝文件,并选择性的压缩及传递拷贝

二、特性

   快速:第一次传输全部,下一次传输差异

            Rsync在传输过程中可以实行压缩和解压缩,使用更少的带宽

   安全:可以使用scp、ssh等方式传输

             直接通过socket连接

             支持匿名传输、方便进行网站镜像

三、应用场景

     增量同步

     备份迁移

四、数据的同步方式

      数据备份:拉去(下载)

      数据恢复:推送(上传)

五、rsync传输模式

   本地传输:本地同步数据,类似于cp

   远程传输:远程同步数据,类似与scp

   守护进程:通过模块化的方式实现批量传输(实时同步传输)

六、rsync应用

   [root@localhost ~]# yum -y install rsync

   监听端口号:tcp/873

七、rsync配置

   

主配置文件:vim /etc/rsyncd.conf
       配置:uid=rsync    定义运行用户
                  gid=rsync    定义运行组
         fake super=yes  用于允许非root用户,在备份目录创建文件
                     list=false    默认true,允许查看本机有哪些模块
         auth users=rsync_backup    用于指定认证用户
         secreys file=/etc/rsync.passwd   指定认证用户密码
         max connections=4     允许最大连接数
         read only=false    默认yes,模块目录只读权限
         lgnore errors     屏蔽错误报错
         timeout=900    指定rsync传输超时时间
         [backup]       指定模块目录
                path=/backup     指定模块目录路径

   创建用户:

[root@localhost ~]# useradd rsync -s /sbin/nologin -M

   创建认证用户的密码:

 

[root@localhost ~]# echo “rsync_backup:123456” > /etc/rsync.passwd
     [root@localhost ~]# chmod 600 /etc/rsync.passwd

   准备模块目录:

[root@localhost ~]# mkdir /backup
     [root@localhost ~]# chown rsync:rsync /backup

   重启服务:

[root@localhost ~]# systemctl restart rsyncd

   客户端远程传输:

[root@localhost ~]# rsync -avz /etc/hosts rsync_backup@192.168.20.10::backup

   通过密码文件实现免密传输

[root@localhost ~]# vim /etc/rsync.passwd
   [root@localhost ~]# chmod 600 /etc/rsync.passwd
 [root@localhost ~]# rsync -avz /etc/hosts rsync_backup@192.168.20.10::backup --password-file /etc/rsync.passwd

八、rsync+inotfy实时同步

   服务端

     安装网站服务,启动,但是不写首页文件

     修改主配置文件:

uid=root
         gid=root
        [wwwroot]
             path=/var/www/html
             comment=backup export area
             read only=false
             hosts allow=192.168.20.0/24

   开发客户端

          安装inotify工具

[root@localhost ~]# tar xf inotify-tools-3.14.tar.gz
    [root@localhost ~]# ./configure && make && make install

     配置内核参数

[root@localhost ~]# vim /etc/sysctl.conf
                     fs.inotify.max_user_instances=1024
                     fs.inotify.max_queued_events = 16384
                     fs.inotify.max_user_watches=1048576
   [root@localhost ~]# sysctl -p  查看是否写入
   [root@localhost ~]# inotifywait -mrq -e modify,create,move,delete /var/www/heml
         (实时监控本机/var/www/heml目录的变化,可打开另一个终端进行实验)
编写脚本:
[root@localhost ~]# vim /opt/inotify_rsync.sh
  (#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html"
RSYNC_CMD="rsync-azH--delete  /var/www/html 192.168.115.130::wwwroot"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
$RSYNC_CMD
Done)

赋予执行权限

[root@localhost ~]# chmod +x inotify_rsync.sh

写入文件

[root@localhost ~]# vim /etc/rc.local
         /root/inotify_rsync.sh