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/目录下创建、删除、修改文件时,热备服务器会不会跟随变化
Linux学习系列之Inotify+Rsync实现实时数据同步的更多相关文章
- Inotify+rsync实现实时数据同步
使用rsync可以实现数据同步,但是即使使用crontab定时任务最小执行间隔为1分钟,在数据实时性要求比较高场合需使用inotify+rsync实现实时同步 下载inotify wget https ...
- centos7部署inotify与rsync实现实时数据同步
实验环境:CentOS Linux release 7.6.1810 node1:192.168.216.130 客户端(向服务端发起数据同步) node2:192.168.216.132 服务端(接 ...
- Linux系统实时数据同步inotify+rsync
一.inotify简介 inotify是Linux内核的一个功能,它能监控文件系统的变化,比如删除.读.写和卸载等操作.它监控到这些事件的发生后会默认往标准输出打印事件信息.要使用inotify,Li ...
- inotify+rsync实现实时同步
第1章 数据实时同步介绍 1.1 什么是实时同步:如何实现实时同步 A. 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化 B. 发现目录中数据产生变化,就利用rsync服务推送到 ...
- 【转】inotify+rsync实现实时同步
[转]inotify+rsync实现实时同步 1.1 什么是实时同步:如何实现实时同步 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化 发现目录中数据产生变化,就利用rsync服 ...
- 【linux运维】rsync+inotify与sersync+rsync实时数据同步笔记
Rsync(remote sync)远程同步工具,通过rsync可以实现对远程服务器数据的增量备份通过,但rsync自身也有缺陷,同步数据时,rsync采用核心算法对远程服务器的目标文件进行对比,只进 ...
- rsync+inotify实时数据同步多目录实战
rsync+inotify实时数据同步多目录实战 inotify配置是建立在rsync服务基础上的配置过程 操作系统 主机名 网卡eth0 默认网关 用途 root@58server1 1 ...
- rsync+inotify实时数据同步单目录实战
rsync+inotify实时数据同步单目录实战 rsync+inotify实时数据同步单目录实战 inotify是一个强大的.细粒度的.异步的文件系统事件监控机制,linux内核从2.6.13起 ...
- inotify+rsync实现实时同步(附解决crontab中无法执行python脚本的问题)
1.准备环境 # 系统支持的话,下面的目录就会存在 ls /proc/sys/fs/inotify/ rpm -qa inotify-tools yum -y install inotify-tool ...
随机推荐
- 临时笔记 Protection
如果操作系统不使用处理器的多任务机制,它仍然需要为栈创建至少一个TSS 当程序通过调用门改变特权级的时候,处理器执行下面的步骤切换栈,并且执行被调用的程序在新的特权级 1. 使用目标代码段的DPL从T ...
- AIX 10201 ASM RAC安装+升级到10204
1:查看系统版本 [rac1:root:/hacmp/hacmp5.4/ha5.4/installp/ppc] oslevel -s 6100-06-06-1140 lslpp -al bos.adt ...
- OJB
OJB 编辑 本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 对象关系桥(OJB)是一种对象关系映射工具,它能够完成从Java对象到关系数据库的透明存储. 英文名 OJB ...
- Zend Studio 离线汉化包下载方法
进入eclipse官网 语言包位置 http://www.eclipse.org/babel/downloads.php
- 梦想CAD控件,用于浏览和编辑DWG文件,在脱离AUTOCAD的情况下独立运行,相当于简易CAD
(百度百科连接) 梦想绘图控件5.2 是国内最强,最专业的CAD开发组件(控件),不需要AutoCAD就能独立运行.控件使用VC 2010开发,最早从2007年第一个版本完成,经过多年的累积已经非常 ...
- VirtualBox中的Linux读取Windows共享目录
1.安装VirtualBox的增强功能.菜单 -> 设备 -> 安装增强功能此时在Linux中会载入安装包,用管理员权限运行安装即可. 2.在VirtualBox设置共享目录.设置 -&g ...
- XP禁用了U盘和移动硬盘方法
会不会是你XP禁用了U盘和移动硬盘下面这些是任何禁用U盘的!你自己反着试下嘛!方法一,BIOS设置法(快刀斩乱麻法) 进入BIOS设置,选择“Integrated Peripherals”选项,展开后 ...
- vue开发 - 根据vue-router的meta动态设置html里标签的内容
路由文件 :router/index.js import Vue from 'vue'import Router from 'vue-router'import index '@/view/index ...
- Linux从入门到适应(三):Ubuntu16.04将python从3.5升级到3.6
1 将python从默认的python2.7更换为python3.5 : sudo update-alternatives --install /usr/bin/python python /usr/ ...
- MySQL和Oracle的比较
可以从以下几个方面来进行比较: (1) 对事务的提交 MySQL默认是自动提交,而Oracle默认不自动提交,需要用户手动提交,需要在写commit;指令或者点击commit按钮(2) 分页查询 ...