码迷,mamicode.com
首页 > 其他好文 > 详细

rsync+inotify实时同步

时间:2018-07-29 16:27:13      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:comment   star   时间   创建   linu   标记   本机   生效   学习   

  • rsync简介
  • rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。

    • Inotify简介

    Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。学习如何将 inotify 集成到您的应用程序中,并发现一组可用来进一步自动化系统治理的命令行工具。

    主机名称 IP 主要软件
    服务器A(rsync源) 192.168.100.21 rsync
    服务器B(rsync客户机发起端) 192.168.100.22 gcc gcc-c++ inotify rsync
    • 配置服务器A
      1. 修改配置文件
    # vim /etc/rsyncd.conf
        uid = nobody
        gid = nobody
        use chroot = yes                                  //禁锢在源目录
        address = 192.168.100.21                  //监听地址
        port 873                                                   //监听端口
        log file = /var/log/rsyncd.log                    //日志文件路径
        pid file = /var/run/rsyncd.pid                    //进程ID文件路径
        hosts allow = 192.168.100.0/24            //允许访问的客户机地址
    
        [wwwroot]                                              //共享模块名称    
        path = /var/www/html                           //源目录的实际地址
        comment = www.yun.cn                 
        read only = no                                 //是否为只读    
        dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2      //同步时 不再压缩的文件类型
        auth users = backuper                           //授权账户
        secrets file = /etc/rsyncd_users.db       //存放账户信息的数据文件
    
    1. 为备份账户创建数据文件
      # vim /etc/rsyncd_users.db
      backuper:abc123
      # chmod 600 /etc/rsyncd_users.db
      # mkdir -p /var/www/html  #创建同步文件站点
      # chmod 777 /var/www/html/
      chmod 600 /etc/rsyncd_users.db
    2. 启动服务器
      rsync --daemon   启动
      netstat -antp | grep rsync   查看873端口
      kill -9 (进程)
      cd /var/run/  
      rm -rf rsyncd.pid  #删除pid文件 在启动服务会自动生成 
      systemctl stop firewalld.service
      setenforce 0
      cd /var/www/html #写入文件进行测试
      echo "this is test" > test.txt
      • rsync命令的基本用法
        [-a] 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。
        [-z] 对备份的文件在传输时进行压缩处理。
        [-H] 保留硬链结。
        [-D] 保持设备文件信息。
        [-A] 保留ACL属性信息
        [-r]递归模式,包含目录及子目录中的所有文件。
        [-l]对于符号链接文件仍然复制为符号链接文件。
        [-V]显示同步过程的详细(verbose) 信息。
        [-p]保留文件的权限标记。
        [-t]保留文件的时间标记。
        [-g]保留文件的属组标记(仅超级用户使用)
        [-o]保留文件的属主标记(仅超级用户使用)
        [--delete] 删除那些目标位置有而原始位置没有的文件。
        [--checksum] 打开校验开关,强制对文件传输进行校验。

        客户机B配置

        systemctl stop firewalld.service
        setenforce 0
        格式一:
        rsync -avz backuper@192.168.100.21::wwwroot /opt/   //密码abc123
        cd /opt  可看到test.txt文件
        格式二:
        rsync -avz rsync://backuper@192.168.100.21/wwwroot /opt/
        #免交互
        vim /etc/server.pass #创建独立存放密码文件
        abc123
        chmod 600 /etc/server.pass
        rsync -az --delete --password-file=/etc/server.pass backuper@192.168.10.161::wwwroot /opt

        技术分享图片

        rsync+inotify

      • 服务器B调整inotify内核参数
    chmod 777 /var/www/html #给与可读可写可执行
    
    cat /proc/sys/fs/inotify/max_queued_events 
    16384 #监控事件列
    cat /proc/sys/fs/inotify/max_user_instances 
    128 #最多监控实列数
    cat /proc/sys/fs/inotify/max_user_watches 
    8192 #实例最多监控文件数
    vim /etc/sysctl.conf
    fs.inotify.max_queued_events = 16384
    fs.inotify.max_user_instances = 1024
    fs.inotify.max_user_watches = 1048576
    sysctl -p  立即生效

    服务器B需安装一些小插件

    更新yum源安装
    yum install -y epel-release && yum update
    yum install inotify-tools       (v3.14-8.el7.×86_64 as of 4-18-2018)
    --------------由于我是手工编译--------------------
    yum install gcc gcc-c++ -y
    tar zxvf inotify-tools-3.14.tar.gz -C /opt/
    cd /opt/inotify-tools-3.14
    ./configure
    make && make install
    vim /opt/inotify.sh # 编写出发式同步脚本
    #!/bin/bash
    INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
    RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.100.21::wwwroot/"
    $INOTIFY_CMD | while read DIRECTORY EVENT FILE
    do
        if [ $(pgrep rsync | wc -l) -le 0 ] ; then
            $RSYNC_CMD
        fi
    done
        # chmod +x /opt/inotify.sh
        # .//inotify.sh
        # echo ‘/opt/inotify.sh‘ >> /etc/rc.local     //加入开机自启动
    上述脚本用来检测本机/var/www/html目标变动情况,一旦有更新触发rsync 同步操作,上传备份指服务器A的目录下
    

    inotifywait 简单的使用介绍

     inotifywait -mrq -e modify,create,move,delete /var/www/html/
    详解:
    -m 表示持续监控
    -r 表示递归整个目录
    -q 简化输出信息
    inotifywait 可监控: modify 修改、 create 创建、move 移动、delete 删除

    技术分享图片

    rsync+inotify实时同步

    标签:comment   star   时间   创建   linu   标记   本机   生效   学习   

    原文地址:http://blog.51cto.com/13660858/2151791

    (0)
    (0)
       
    举报
    评论 一句话评论(0
    登录后才能评论!
    © 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
    迷上了代码!