INOTIFY监控服务与RSYNC服务实现CLIENT与SERVER之间的实时同步

准备两台主机服务器

    服务端:host1  192.168.1.109      
    客户端:host2  192.168.1.107    

一.服务端配置

1.修改host1的rsync配置文件:

 ~]# vim /etc/rsyncd.conf     
    uid=root    
    gid=root    
    use chroot=no  
    max connections=0   #不限制最大连接数   
    exclude = lost+found
    pid file = /var/run/rsyncd.pid
    log file = /var/log/rsyncd.log
    lock file =/var/run/rsyncd.lock
    reverse lookup = no
    hosts allow = 192.168.1.107/24   #允许连接的主机     
    ignore errors
    [backup]
    path = /backup/     #备份的到路径
    comment = backup
    read only= no
    auth users = kobe   #客户端同步数据到服务端时的授权账户    
    secrets file=/etc/rsync.pass   #将授权账户与密码存放到此文件中       
    ...  
    ...   
    ...   

2.创建配置文件中的备份文件夹、授权账户、账户密码文件

创建用于备份的文件目录    
 ~]# mkdir /backup/     
创建授权用户    
 ~]# useradd  -r  -s  /sbin/nologin   kobe    
将授权的用户名及密码存入文件,为了安全将此文件设置600权限    
 ~]# echo   'kobe:123456'    > /etc/rsyncd.pass   
 ~]# chmod  600 /etc/rsyncd.pass   

3.服务端配置完成重新启动rsyncd服务加载配置文件

~]# systemctl restart rsyncd.service   

二.客户端配置

1.yum安装监控包客户端工具inotifyd-tools、导入授权用户密码

       ~]# yum install inotify-tools -y   
导入授权用户密码    
        ~]# echo 123456 > /etc/rsyncd.pass    
        ~]# chmod 600 /etc/rsynd.pass    

2.编写脚本实现客户端与服务端实时同步

    ~]# vim /data/shell.sh/rsync_inotify.sh 
        #!/bin/bash 
        SRC='/data/shell.sh/'
        DEST='kobe@192.168.1.109::backup'
        inotifywait  -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w%f' -e create,delete,moved_to,close_write,attrib ${SRC} |while read DATE TIME DIR FILE;do
        FILEPATH=${DIR}${FILE}
        rsync -az --delete  --password-file=/etc/rsync.pass $SRC $DEST && echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >> /var/log/changelist.log
        done     

        :wq  #保存退出 

        运行脚本文件实时同步开始 .....   
        ~]# rsync_inotify.sh      

三.客户端更改数据测试实时同步

1.服务端host1

              监控backup文件夹,每秒钟刷新一次:
              ~]#  watch -n 1 ls -l /backup   

INOTIFY监控服务与RSYNC服务实现CLIENT与SERVER之间的实时同步

2.客户端host2

             ~]# ls -l /data/shell.sh  

INOTIFY监控服务与RSYNC服务实现CLIENT与SERVER之间的实时同步

可以看出实现数据实时同步,在客户端修改数据时会自动将修改数据同步到服务端

3.客户端查看日志文件

      显示客户端已备份到服务端的文件及备份的时间
        ~]#  cat  /var/log/changelist.log    

INOTIFY监控服务与RSYNC服务实现CLIENT与SERVER之间的实时同步

上一篇:python – flask“hello world”无法在调试模型中运行


下一篇:inotify和rsync实现实时同步