Rsync私房菜————|Rsync远程同步 |Rsync下行同步|Rsync+Inotify实时同步 |详细图解|

一、Rsync

Rsync是一种快速且用途广泛的文件复制工具,常用于备份和镜像
官方网站:https://rsync.samba.org/
使用delta-transfer算法 监听端口 873 运行模式 C/S

1.1 Rsync特性

  1. 可以镜像保存整个目录树和文件系统
  2. 可以很容易做到保持原来文件的权限、时间、软硬链接等等
  3. 无须特殊权限即可安装
  4. 优化的流程,文件传输效率高
  5. 可以使用rcpssh等方式来传输文件,当然也可以通过直接的socket连接
  6. 支持匿名传输

1.2 部署Rsync下行同步

节点名IP地址
master192.168.0.10
slave192.168.0.20

1.2.1 Master节点

安装配置
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
yum -y install rsync
vim /etc/rsyncd.conf
uid = root
gid = root
use chroot = yes
address = 192.168.0.10
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.0.0/24
[wwwroot]        
path = /var/www/html
comment = Document Root of www.example.com
read only = yes
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z
auth users = fox
secrets file = /etc/rsyncd_users.db
#创建用户文件格式[用户名:密码]
echo "fox:123456" > /etc/rsyncd_users.db
#设置其权限600[官方推荐值]
chmod 600 /etc/rsyncd_users.db

 
 
    开启服务
    #开启服务
    rsync --daemon
    #检查端口服务是否开启
    netstat -natp | grep "rsync"
    mkdir -p /var/www/html
    cd /var/www/html
    touch dog.html cat.html
    ls
    
     
     

      1.2.2 Slave节点

      systemctl stop firewalld
      systemctl disable firewalld
      setenforce 0
      
      yum install -y rsync
      
      mkdir /slave
      chmod 777 /slave
      
      #配置绵密交互
      echo "123456" > /etc/server.pass
      
      #给密钥文件赋权600
      chmod 600 /etc/server.pass
      
      rsync -az --delete --password-file=/etc/server.pass fox@192.168.0.10::wwwroot /slave
      #rsync,使用密钥文件/etc/server/pass对应fox用户,IP地址为192.168.0.10的共享模块文件进行压缩,并归档同步至当前服务器的/slave目录下,同时删除差异内容,保持一致性
      
      ls /slave
      #查看下行同步是否成功
      
       
       

        1.3 报错排查

        @ERROR: auth failed on module wwwroot


        检查用户名密码是否与Master配置文件中的相符

        二、Intofy

        Inotify是Linux内核特性,用于监控文件系统,并且及时向专门的应用程序发出相关的事件警告,比如读写删等操作

        2.1 Intofy的使用方法

        inotifywait -mrq -e modify,create,move,delete /slave
        
         
         

          常用参数

          • -m:持续进行监控
          • -r:递归监控所有子对象
          • -q:简化输出信息
          • -e:指定要监控哪些事件类型
          • modify:修改
          • create:创建
          • move:移动
          • delete:删除

          内核优化
          /etc/sysctl.conf(内核参数配置文件)

          max_queue_events		#监控事件队列大小
          max_user_instances  	#最多监控实例数
          max_user_watches    	#每个实例最多监控文件数  
          
           
           

            2.2 部署 Rsync+Inotify 实时同步

            2.2.1 Master

            vim /etc/rsyncd.conf
            read only = no
            #关闭只读模式,否则将不可写入
            #通过杀死进程的方法重启rsync
            kill `cat /var/run/rsyncd.pid`
            netstat -natp | grep rsync
            rsync --daemon
            netstat -natp | grep rsync
            chmod 777 /var/www/html
            
             
             

              2.2.2 Slave

              优化Slave内核参数
              echo "fs.inotify.max_queued_events = 32768
              fs.inotify.max_user_instances = 1024
              fs.inotify.max_user_watches = 1048576" >> /etc/sysctl.conf
              
               
               
                安装Intofy-tools
                wget -P /opt https://nchc.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz
                cd /opt
                #将软件包传至该目录下
                tar -zxvf inotify-tools-3.13.tar.gz
                cd /opt/inotify-tools-3.13/
                ./configure
                make -j 4 && make install
                
                 
                 
                  编写自动监控同步脚本
                  vim /opt/inotify.sh
                  #!/bin/bash
                  INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /slave"
                  #INOTIFY_CMD变量:持续监控 /slave 目录中的创建,删除,移动,修改,改变时间的操作
                  RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /salve fox@192.168.0.10::wwwroot"
                  #RSYNC_CMD变量:使 fox 用户,/etc/server.pass 密钥文件,将 /slave 目录下的文件进行压缩,归档,保留硬链接文件同步至 192.168.0.10 的共享模块定义的目录 /var/www/html 下,并删除差异性内容,保持一致性
                  #检测目录是否有修改操作
                  $INOTIFY_CMD | while read DIRECTORY EVENT FILE
                  do
                  	#判断是否有正在进行的rsync任务,如果没有则执行
                      if [ $(pgrep rsync | wc -l) -le 0 ] ; then
                          $RSYNC_CMD
                  	fi
                  done
                  
                   
                   
                    赋予权限并后台运行
                    cd /opt/
                    chmod +x inotify.sh
                    ./inotify.sh
                    #给脚本赋权并在后台执行
                    
                     
                     
                      创建一个新的文件并删除一个已有的文件
                      cd /slave
                      touch fox.html
                      rm -rf dog.html
                      ls
                      
                       
                       


                        • 0
                          点赞
                        • 0
                          收藏
                          觉得还不错? 一键收藏
                        • 0
                          评论
                        评论
                        添加红包

                        请填写红包祝福语或标题

                        红包个数最小为10个

                        红包金额最低5元

                        当前余额3.43前往充值 >
                        需支付:10.00
                        成就一亿技术人!
                        领取后你会自动成为博主和红包主的粉丝 规则
                        hope_wisdom
                        发出的红包
                        实付
                        使用余额支付
                        点击重新获取
                        扫码支付
                        钱包余额 0

                        抵扣说明:

                        1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
                        2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

                        余额充值