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

配置rsync+inotify 实时同步

时间:2018-07-26 10:47:40      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:directory   保留   参数   实时同步   cab   允许   执行   pgrep   nobody   

  • rsync简介
    rsync是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持连接和权限,且采用优化的同步算法,在传输前执行压缩,因此非常适用于异地备份,镜像服务器等。

  • inotify简介
    Inotify 是一个 Linux 内核特性,它监控文件系统,并且及时向专门的应用程序发出相关的事件警告,比如删除、读、写和卸载操作等。您还可以跟踪活动的源头和目标等细节。
  • ?

    主机名称 IP 主要软件
    服务器A 192.168.200.129 rsync、inotify
    服务器A 192.168.200.130 rsync、inotify
    • 配置rsync
    • 1:建立/etc/rsyncd.conf 配置文件

      # vim /etc/rsyncd.conf
          uid = nobody
          gid = nobody
          use chroot = yes                                  //禁锢在源目录
          address = 192.168.200.129                  //监听地址
          port 873                                                   //监听端口
          log file = /var/log/rsyncd.log                    //日志文件路径
          pid file = /var/run/rsyncd.pid                    //进程ID文件路径
          hosts allow = 192.168.200.0/24            //允许访问的客户机地址
      
          [wwwroot]                                              //共享模块名称    
          path = /var/www/html                           //源目录的实际地址
          comment = www.kgc.cn                 
          read only = no                                 //是否为只读    
          dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2      //同步时 不再压缩的文件类型
          auth users = backuper                           //授权账户
          secrets file = /etc/rsyncd_users.db       //存放账户信息的数据文件
    • 2:为备份账户创建数据文件、创建源目录

      # vim /etc/rsyncd_users.db
          backuper:abc123
      # chmod 600 /etc/rsyncd_users.db
      # mkdir -p /var/www/html
      # chmod 777 /var/www/html/
    • 3:启动rsync服务,运行参数为 --daemon

      # rsync --daemon           //启动rsync服务
      # netstat -natp | grep rsync     
    • rsync命令的基本用法
    • -a 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。
    • -z 对备份的文件在传输时进行压缩处理。
    • -H 保留硬链结。
    • -D 保持设备文件信息。
    • -A 保留ACL属性信息
    • --delete 删除那些目标位置有而原始位置没有的文件。
    • --checksum 打开校验开关,强制对文件传输进行校验。
    • 配置源的表示方法 三种
    • 将对方源目录的文件同步到我/opt目录下

      格式一:
      # rsync -avz backuper@192.168.200.129::wwwroot /opt/  
      password:abc123
      格式二:
      # rsync -avz rsync://backuper@192.168.200.129/wwwroot /opt/
      password:abc123
      格式三:免密码交互
      # vim /etc/server.pass
      abc123
      # chmod 600 /etc/server.pass
      # rsync -az --delete --password-file=/etc/server.pass backuper@192.168.200.129::wwwroot /opt
    • 安装配置inotify
    • 1:调整inotify内核参数

      # vim /etc/sysctl.conf
          fs.inotify.max_queued_events = 16384    监控事件队列(16384)
          fs.inotify.max_user_instances = 1024    最多监控实例数(1024)
          fs.inotify.max_user_watches = 1048576   每个实例最多监控文件数(1048576)

    技术分享图片

    • 2:安装

      # yum install gcc gcc-c++ make -y
      # tar zxvf inotify-tools-3.14.tar.gz -C /opt/
      # cd /opt/inotify-tools-3.14
      # ./configure
      # make && make install
    • 开启监控
    • 需要在开一个终端
    • 去 /var/www/html/目录 创建 删除 移动 都会监控

      # inotifywait -mrq -e modify,create,move,delete /var/www/html/

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

    • 编写触发式同步脚本
    • 监控本地源目录,并且自动备份上传到目标服务器目录
    • 脚本中指定的IP 是目标的IP(不是本地IP)

          # cd /opt 
          # 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.200.130::wwwroot/"
              $INOTIFY_CMD | while read DIRECTORY EVENT FILE
              do
                      if [ $(pgrep rsync | wc -l) -ge 0 ] ; then
                              $RSYNC_CMD
                      fi
              done
      
          # chmod +x /opt/inotify.sh
          # .//inotify.sh
          # echo ‘/opt/inotify.sh‘ >> /etc/rc.local     //加入开机自启动

      技术分享图片


    ?

    • 验证
    • 在服务器A上的/var/www/html/ 创建文件
    • 去服务器B上查看是否同步

    技术分享图片技术分享图片


    技术分享图片技术分享图片

    配置rsync+inotify 实时同步

    标签:directory   保留   参数   实时同步   cab   允许   执行   pgrep   nobody   

    原文地址:http://blog.51cto.com/13630803/2150288

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