zoukankan      html  css  js  c++  java
  • rsync+inotify实时数据同步单目录实战

    rsync+inotify实时数据同步单目录实战

     

    rsync+inotify实时数据同步单目录实战

    inotify是一个强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起加入了inotify支持,通过inotify可以监控文件系统中添加、删除、修改、移动等各种事件,利用这个内核接口,第三方软件可以监控文件系统下文件的各种变化情况,而inotify-tools正是实施监控的软件。

    inotify配置是建立在rsync服务基础上的配置过程

    操作系统

    主机名 网卡eth0 默认网关 用途
    root@58server1 192.168.1.111 192.168.1.1 Rsync服务端
    root@58client 192.168.1.121 192.168.1.1 Rsync 节点

    子网掩码均为255.255.255.0

    具体需求:

    要求在58server1上以rsync守护进程的方式部署rsync服务,使得root@58client的 rsync节点客户端主机,可以把本地数据通过rsync的方式备份到数据备份服务器58server1上,本例的客户端仅以58client为例

    一、在配置inotify前己经把root@58server1 Rsync服务端的rsync服务部置好

    现在在58client服务器中安装部置inotify监控服务

    配置rsync服务略

    二、开始安装inotify

    在安装inotify-tools前请先确认你的linux内核是否达到了2.6.13,并且在编译时开启CONFIG_INOTIFY选项,

    1)  查看当前系统是否支持inotify

    2)下载inotify源码包

    3)编译安装inotfiy

    参数:

    --prefix=PATH   指定编译安装的路径

    提示:更多的编译参数可以使用./configure –h 查看,编译成功后会生成4个目录,

    小软件一般规范安装到同一个目录,一般为/usr/local中

    建立一个软链接

    进入安装inotify的目录

    查看是否编译成功,

    使用echo $?  返回0表示成功

    只关注下面两个文件

    bin

    |-- inotifywait

    `-- inotifywatch

    ./bin/inotifywait –help

    4) 编写inotify实时监控脚本

    事件相关参数大小:

    默认:

    [root@58client inotify]# cat /proc/sys/fs/inotify/max_user_watches

    8192

    [root@58client inotify]# cat /proc/sys/fs/inotify/max_queued_events

    16384

    [root@58client inotify]# cat /proc/sys/fs/inotify/max_user_instances

    128

    并发大时可以修改增大这些参数

    开始编写inotify脚本

    host rsync服务器地址

    src本地目录  dst模块  要和/etc/rsyncd.conf中的模块名对应

    user 用户

    rsync_passfile密码文件

    inotify_home  inotify定义inotifywait的目录

    #jude下面的内容是检查上面参数是否存在

    判断$src目录的变化等参数

    while reade file死循环,通过|管道实时读取上面事件的变化,一讲取到就循环执行以下命令进行推送

    经过测试,每秒200个文件并发,数据同步几乎无延尽(小于1秒)

    5) 测试rsync是否成功推送

    [root@58server1 backup]# rsync -avz -P --delete /backup rsync_backup@192.168.1.111::backup/ --password-file=/etc/rsync.password

    一般添加了脚本后要格式化一次脚本

    6) 在客户端运行脚本

    sh -x inotify.sh

    使脚本在后台运行

    [root@58client scripts]# sh inotify.sh &

    [root@58client dingjian]# for n in `seq 10000`;do /bin/cp /bin/cat /dingjian/cat$n;done

    服务端

    [root@58server1 dingjian]# ls -l /dingjian|wc -l

    查看客户端58client后台运行的inotify脚本进程

    [root@58client scripts]# ps -ef|grep inotify

  • 相关阅读:
    Spring MVC 核心组件详解
    Spring MVC 入门就这一篇
    Spring 事务解决方案
    【UGUI源码分析】Unity遮罩之Mask详细解读
    游戏开发中不同时区下的时间问题
    ARTS第十三周(阅读Tomcat源码)
    Win10 电脑安装.NET低版本提示“这台计算机中已经安装了 .NET Framwork 4.6.2或版本更高的更新”问题
    Dynamics 365 Setup 提示SqlServer 存在
    Dynamics CRM "Verification of prerequisites for Domain Controller promotion failed. Certificate Server is installed."
    Dynamics CRM
  • 原文地址:https://www.cnblogs.com/L-H-R-X-hehe/p/3960754.html
Copyright © 2011-2022 走看看