• Linux学习系列之Inotify+Rsync实现实时数据同步


    Inotify简介

    inotify介绍

    • inotify是一种强大的、异步的文件系统监控机制,linux内核从2.6.13起,加入了inotify的支持,通过inotify可以监控文件系统中添加、删除、修改、移动等各种事件
    • inotify实际是一种事件驱动机制,它为应用程序监控文件系统事件提供了实时相应事件的机制,而无需通过cron等轮询的机制来获取事件.cron不紧无法做到实时性,而且消耗大量系统资源

    工具集介绍
    inotifywait:

    • 在被监控的文件或目录上等待特定的事件(打开、关闭、删除等)发生,执行后处于阻塞状态,适合在shell脚本中使用
    • 监控目录变化 -->比较简洁的一句话描述这个工具的作用,哈哈

    inotifywatch:

    • 收集被监视的文件系统使用度统计数据,指文件系统事件发生的次数同级

    inotify优点:
      实时数据同步
    inotify缺点:
      并发如果大于200个文件(10-100K),同步就会有延迟
    sersync:

    • 通过配置文件定义,使用起来舒服
    • 真正的守护进程
    • 可以对失败文件定时重传
    • 第三方的HTTP接口
    • 默认多线程同步

    inotifwait常用参数详解

        -r, --recursive      递归查询目录
        -q, --quiet          紧打印监控事件的信息
        -m, --monitor        始终保持事件监听状态
        --exclude <pattern>  排除文件或目录时,不区分大小写
        --timefmt            指定事件输出的格式
        -e, --event          通过此参数指定需要监控的事件
            Events:
                access:      文件和目录被读取时
                modify:      文件和目录被修改时
                attrib:         文件或目录属性被修改时
                close:         文件或目录关闭(无论读/写)时
                open:         文件或目录被打开时
                moved to:    文件或目录被移动至另外一个目录时
                create:         文件或目录被创建在当前目录时
                delete:         文件或目录被删除时
                umount:          文件系统被修改时

    Inotify+Rsync实时同步

    环境介绍

    192.168.0.91      NFS-Server共享存储                  客户端    
    192.168.0.94      备份服务器(rsync daemon服务器)              服务端
    #客户端如果发生文件操作之后,立即出发rsync命令向服务端同步(推送)数据

    Rsync daemon服务器(服务端)

    配置rsync daemon省略,详情请看上一篇博客配置

    NFS-Server(客户端)

    安装inotify
    tar -zxvf inotify-tools-3.14.tar.gz
    cd  inotify-tools-3.14 
    ./configre  --prefix=/usr/local/inotify-tools-3.14
    make && make install
    ln -s /usr/local/inotify-tools-3.14 /usr/local/inotify
    创建密码文件
    vim /etc/web.password
    123.com
    编写实时同步脚本 vim
    /usr/local/inotify/inotify+rsync.sh #!/bin/bash inotify=/usr/local/inotify-tools/bin/inotifywait $inotify -mrq --format '%w%f' -e create,close_write,delete /data |while read file do cd /root && rsync -az /data/ --delete apache@192.168.0.94::web --password-file=/etc/web.password done
    sh -x /usr/local/inotify-tools/inotify+rsync.sh & 测试 在
    /data/目录下创建、删除、修改文件时,热备服务器会不会跟随变化
  • 相关阅读:
    Gradle
    ES6总结
    VSCode 开发Vue + ElementUI
    WEUIHalfscreen Dialog和mescroll冲突
    Raspberry Pi安装AdGuard Home
    浏览器跨域请求 原理和个人理解
    如何保证缓存与数据库双写时的数据一致性?
    关于软件系统中的高可用问题的碎碎念
    Android项目实战(六十三):as3.6+的一些警告解决方法
    引入官方uni.css样式
  • 原文地址:https://www.cnblogs.com/chadiandianwenrou/p/5958229.html
Copyright © 2020-2023  润新知