rsync
一、rsync远程同步
1、rsync的作用和特点
    1)、作用
        支持本地或远程数据备份
    2)、特点
        远程备份
        结合触发器进行数据备份
        支持增量备份
        支持大文件或者小文件同步
        支持异地数据灾备
    3)、备份目的
        防止发生灾难将损失降到最低
        保证数据恢复可靠运行
    2)、备份的方式
         cp:复制数据
         tar:压缩归档
         rsync:支持远程或者异地数据灾备,可靠性强
2、常见的备份工具
    1)、系统工具
        cp scp sftp tar 
    2)、第三方工具
        rsync
3、配置rsync源
备份rsync主配置文件
cp /etc/rsync.conf /etc/rsync_conf.bak
    1)、rsync源主配置文件位置
    /etc/rsyncd.conf
    2)、主配置文件常见的选项

uid = nobody                        //管理的用户
 gid = nobody                        //管理的组
 use chroot = yes                    //禁锢在根目录
 address = 192.168.100.10            //监听的IP地址
 port = 873                            //监听的端口
 log file = /var/log/rsyncd.log        //日志文件
 pid file = /var/run/rsyncd.pid        //服务启动后保存服务id
 hosts allow = 192.168.100.20        //允许访问的客户端地址    [share]                                //共享模块
         path = /share                //源目录实际路径
         comment = ftp export area    //说明
         read only = yes                //只读
         dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2    //同步时不再压缩的数据文件
         auth users = bob                    //授权账户
         secrets file = /etc/rsyncd_users.db    //存放账户信息的数据文件


    3)、创建验证账户密码
        vim /etc/rsyncd_users.db
        bob:pwd@123
        chmod 600 /etc/rsyncd_users.db
    4)、创建同步源根目录和测试文件
    mkdir /share
    echo "share.gx.com" /share/tb.txt
4、管理rsync服务
    1)、守护进程方式运行rsync
    rsync --daemon
    2)、查看rsync服务
    netstart -anptu | grep rsync    
    3)设置rsynce开机自启
        vim /etc/rc.d/rc.local
         rsync --daemon
    4)、停止rsync服务
      killall -9 rsync
二、rsync客户端的基本使用
1、rsync命令常见的选项
    -r 递归模式:包含目录及目录中的所有文件
    -l 对于符合链接文件仍然复制为符合链接文件
    -v 显示同步过程的详细信息
    -a 归档模式,保留文件的权限,属性等信息,等同于组合选项“-rlptgoD”
    -z 在传输文件时进行压缩
    -p 保留文件的权限标记
    -t 保留文件的时间标记
    -g 保留文件的属组标记(仅超级用户使用)
    -o 保留文件的属主标记(仅超级用户使用)
    -H 保留硬链接文件
    -A 保留ACL属性信息
    --delete 删除目标位置有而原始位置没有的文件 
    --checksum 根据校验和来决定是否跳过文件
2、配置rsync同步本地数据
    1)、本地同步数据
        rsync -avz /bdqn/ /benet/
    2)、同步数据删除目标目录中的数据
        rsync -avz --delete /bdqn/ /benet/
3、同步经过身份验证的rsync
    1)、第一种身份验证方式访问
(格式:rsync -avz rsync://用户名@主机地址/共享模块名 指定同步目录)
    rsync -avz rsync://bob@192.168.100.10/share /benet/
    2)、第二种身份验证方式访问
(格式:rsync -avz 用户名@来源地址::共享模块名 指定同步目录)
    rsync -avz bob@192.168.100.10::share /accp/
    3)、第三种加载密码配置文件同步数据
     echo "pwd@123" > ./password.txt
     chmod 600 ./password.txt
     rsync -azv --delete --password-file=./password.txt bob@192.168.100.10::share /accp
4、配置客户端自动同步数据
    1)、客户端配置存储密码文件
    vim rsync_passwd.txt
    pwd@123
    chmod 600 rsync_passwd.txt
    2)、设置计划任务自动同步
crontab -e
*/2 * * * *  /usr/bin/rsync -az --delete --password-file=/root/rsync_passwd.txt bob@192.168.100.10::share /share
    3)、启动计划任务
    systemctl restart crond
    systemctl enable crond
三、rsync+inotify-tools
1、inotify的作用和计划任务同步的缺点
    1)inotify实时同步数据的作用
        支持实时同步
        减小延迟等待
        占用带宽资源小
        源数据发生改变自动触发同步数据
    2)、计划任务的缺点
        延迟时间长
        同步速度慢
        集中化备份占用带宽资源
        影响用户访问
        数据量大
2、安装inotify
    1)、配置编译安装
    tar zxf inotify-tools-3.14.tar.gz  -C /usr/src/
    cd /usr/src/inotify-tools-3.14/
    ./configure && make && make install    
    3、inotify监控工具的类型
    1)、inotifywait
        持续性监控文件变化
        应用广泛
    2)、inotifywatch
        一次性监控
        不支持持续性监控
        配置临时同步使用
    3)、inotifywait的常见选项
        -e    指定监控事件
        -m  配置持续监控
        -r  表示递归整个目录
        -q  简化输出信息
    4)、inotifywait常见的监控事件类型
        create    创建文件或目录触发事件
        move    移动或重命名触发事件
        delete    删除数据触发事件
        modify    修改数据触发事件
        attrib    修改文件或者目录属性触发事件
    5)、实时监控数据
       inotifwait -mrq -e move,delete,modify,attrib /share/
4、配置inotify自动实时同步
    1)、修改内核参数
    vim /etc/sysctl.conf
fs.inotify.max_queued_events = 32768    //监控事件列队
fs.inotify.max_user_instances = 2048    //最多监控实例数
fs.inotify.max_user_watches = 1048576    //每个实例最多监控文件数
    2)、更新内核参数
          sysctl -p
    2)、配置rsync服务器端无需身份验证访问客户端
        ssh-keygen -t RSA                    生成密钥
        ssh-copy-id -i root@192.168.100.20    上传公钥
    4)、创建自动化脚本
vim inotify.sh
#!/bin/bash
INT="inotifywait -mrq -e modify,create,move,delete /share"          监控rsvn源/var/www/html/目录
RSY="rsync -avz --delete /share root@192.168.100.20:/"      数据同步到192.168.100.20的/share目录
$INT | while read DIRECTORY FILE EVENT           比较INW状态,状态成立执行RSY开始同步,同步完成退出
do
    $RSY &> /inot.log
done

    3)、设置开机自启
    vim /etc/rc.d/rc.local
    rsync --daemon 
    /root/rsync.sh
    5)、添加执行权限
    chmod +x /etc/rc.d/rc.local
    6)、rsync所在的发起端要上传数据时,rsync同步源上的源目录必须设置为read only = on,并且目录本身也需要具备写权限
    vim /etc/rsyncd.conf 
    read only = no