• 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

  • 相关阅读:
    【FICO系列】SAP FICO 基本概念
    【MM系列】SAP 的库存管理
    【ABAP系列】SAP ABAP WRITE字段隐藏的方法
    【BASIS系列】SAP 批量锁住用户和TCODE的方法
    【HANA系列】SAP HANA 1.0 SPS 11 新特性
    【HANA系列】SAP HANA启动出现ERROR
    瓣呀,一个开源项目
    javascript入门笔记6-内置对象
    javascript入门笔记5-事件
    javascript入门笔记4-数组
  • 原文地址:https://www.cnblogs.com/L-H-R-X-hehe/p/3960754.html
Copyright © 2020-2023  润新知