linux文件监控和同步,(转)Linux下经过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步...
Linux下经过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步
原文:http://www.summerspacestation.com/linux%E4%B8%8B%E9%80%9A%E8%BF%87rsync%E4%B8%8Einotify%E5%BC%82%E6%AD%A5%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E4%BA%8B%E4%BB%B6%E7%9B%91%E6%8E%A7%E6%9C%BA%E5%88%B6%E5%AE%9E%E7%8E%B0%E6%96%87%E4%BB%B6/
目录 [隐藏]mysql
inotify-tools工具安装
与rsync配合经过shell脚本实现同步
将inotify加入自动开机启动服务中
inotify参数优化
rsync+intity压力测试效果
rsync+inotify优缺点
高并发数据实时同步方案
inotify-tools工具安装
查看系统支持:linux
uname -r #系统内核至少达到2.6.13
ls -l /proc/sys/fs/inotify/
总用量 0
-rw-r--r-- 1 root root 0 6月 20 13:17 max_queued_events
-rw-r--r-- 1 root root 0 6月 20 13:17 max_user_instances
-rw-r--r-- 1 root root 0 6月 20 13:17 max_user_watches
#显示这三个文件则证实支持
uname -r #系统内核至少达到2.6.13
ls -l /proc/sys/fs/inotify/
总用量 0
-rw-r--r-- 1 root root 0 6月 20 13:17 max_queued_events
-rw-r--r-- 1 root root 0 6月 20 13:17 max_user_instances
-rw-r--r-- 1 root root 0 6月 20 13:17 max_user_watches
#显示这三个文件则证实支持
下载inotify源码包git
mkdir -p /home/kendall/tools/
cd /home/kendall/tools/
wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
ls inotify-tools-3.14.tar.gz
mkdir -p /home/kendall/tools/
cd /home/kendall/tools/
wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
ls inotify-tools-3.14.tar.gz
编译安装github
cd /home/kendall/tools/
tar zxf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14/
./configure --prefix=/usr/local/inotify-tools-3.14
make && make install
echo $?
cd ../
ln -s /usr/local/inotify-tools-3.14/ /usr/local/inotify-tools
cd /home/kendall/tools/
tar zxf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14/
./configure --prefix=/usr/local/inotify-tools-3.14
make && make install
echo $?
cd ../
ln -s /usr/local/inotify-tools-3.14/ /usr/local/inotify-tools
命令位置web
/usr/bin/inotifywait
inotifywait 能够直接使用
/usr/bin/inotifywait
inotifywait 能够直接使用
inotify安装在rsync客户端,监控到数据变化后经过rsync推给rsync服务端.sql
与rsync配合经过shell脚本实现同步mongodb
#!/bin/bash
inotify=/usr/bin/inotifywait
Path=/data
IP=172.16.1.41
$inotify -mrq --format '%w%f' -e create,close_write,delete $Path \
|while read file
do
if [ -f $file ];then
rsync -az $file --delete rsync_backup@$IP::nfsbackup --password-file=/etc/rsync.password
else
cd $Path
rsync -az ./ --delete rsync_backup@$IP::nfsbackup --password-file=/etc/rsync.password
fi
done
#!/bin/bash
inotify=/usr/bin/inotifywait
Path=/data
IP=172.16.1.41
$inotify -mrq --format '%w%f' -e create,close_write,delete $Path \
|while read file
do
if [ -f $file ];then
rsync -az $file --delete rsync_backup@$IP::nfsbackup --password-file=/etc/rsync.password
else
cd $Path
rsync -az ./ --delete rsync_backup@$IP::nfsbackup --password-file=/etc/rsync.password
fi
done
简易版shell
#!/bin/bash
inotify=/usr/bin/inotifywait
$inotify -mrq --format '%w%f' -e create,close_write,delete /data \
|while read file
do
cd /data &&\
rsync -az ./ --delete rsync_backup@172.16.1.41::nfsbackup --password-file=/etc/rsync.password & #能够增长效率
done
#!/bin/bash
inotify=/usr/bin/inotifywait
$inotify -mrq --format '%w%f' -e create,close_write,delete /data \
|while read file
do
cd /data &&\
rsync -az ./ --delete rsync_backup@172.16.1.41::nfsbackup --password-file=/etc/rsync.password & #能够增长效率
done
后台运行,开机启动
/bin/sh 脚本 &vim
将inotify加入自动开机启动服务中bash
vim /etc/init.d/syncd
1
vim /etc/init.d/syncd
#!bin/bash
#chkconfig: 2345 38 46
#######################
#
#######################
. /etc/init.d/functions
if [ $# -ne 1 ];then
usage: $0 {start|stop}
exit 1
fi
case "$1" in
start)
/bin/bash /server/scripts/inotify.sh &
echo $$ >/var/run/inotify.pid
if [ `ps -ef|grep inotify|wc -l` -gt 2 ];then
action "inotify service is started" /bin/true
else
action "inotify service is started" /bin/false
fi
;;
stop)
kill -9 cat /var/ run/inotify.pid >/dev/null 2>&1
pkill inotifywait
sleep 2
if [ `ps -ef|grep inotify|grep -v grep|wc -l` -eq 0 ];then
action "inotify service is stopped" /bin/true
else
action "inotify service is stopped" /bin/false
fi
;;
*)
usage: $0 {start|stop}
exit 1
esac
#!bin/bash
#chkconfig: 2345 38 46
#######################
#
#######################
. /etc/init.d/functions
if [ $# -ne 1 ];then
usage: $0 {start|stop}
exit 1
fi
case "$1" in
start)
/bin/bash /server/scripts/inotify.sh &
echo $$ >/var/run/inotify.pid
if [ `ps -ef|grep inotify|wc -l` -gt 2 ];then
action "inotify service is started" /bin/true
else
action "inotify service is started" /bin/false
fi
;;
stop)
kill -9 cat /var/ run/inotify.pid >/dev/null 2>&1
pkill inotifywait
sleep 2
if [ `ps -ef|grep inotify|grep -v grep|wc -l` -eq 0 ];then
action "inotify service is stopped" /bin/true
else
action "inotify service is stopped" /bin/false
fi
;;
*)
usage: $0 {start|stop}
exit 1
esac
chmod +x /etc/init.d/syncd
chkconfig --add syncd
chkconfig syncd on
1
2
3
chmod +x /etc/init.d/syncd
chkconfig --add syncd
chkconfig syncd on
inotify参数优化
下面两条命令须要加入开机启动/etc/rc.local中
echo "50000000" > /proc/sys/fs/inotify/max_user_watches
echo "50000000" > /proc/sys/fs/inotify/max_queued_events
max_queued_events #队列容纳事件数量
max_user_instances #每一个用户能够运行wait watch的数量
max_user_watches #最大监控文件数量
1
2
3
4
5
echo "50000000" > /proc/sys/fs/inotify/max_user_watches
echo "50000000" > /proc/sys/fs/inotify/max_queued_events
max_queued_events #队列容纳事件数量
max_user_instances #每一个用户能够运行wait watch的数量
max_user_watches #最大监控文件数量
rsync+intity压力测试效果
每秒200文件如下并发,基本没有差别.
rsync+inotify优缺点
优势:
监控文件系统事件变化,经过同步工具实现实时数据同步
缺点:
并发若是大于200个文件(10-100k),同步会有延迟。
咱们前面写的脚本,每次都是所有推送一次,但确实是增量的,也能够只同步变化的文件,不变化的不理。
监控到事件后,调用rsync同步是单进程的(加&并发),sersync多进程同步。
高并发数据实时同步方案
inotify(sersync)+rsync 文件级别
drbd 文件系统级别,基于block块同步 缺点:备份节点数据不可用
第三方软件同步功能:mysql同步,oracle mongodb
程序双写,直接写两台服务器
业务逻辑解决(【写主nfs,读备backup】读写分离,备读不到,读主 )防止延迟,弃用NFS方案,用web作nfs的备节点。效率提升不少
NFS集群(145方案整合)(双写主存储,备存储用inotify(sersync)+rsync,备没有找主解决延迟问题)
linux文件监控和同步,(转)Linux下经过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步...相关推荐
- inotify之文件系统事件监控使用入门
inotify是linux文件系统事件监控机制,功能强大,控制简单,可以实现很多有用的功能.如:当一个文件被访问.打开.关闭.移动.删除等等时做一些处理.此功能需要内核支持,从kernel 2.6.1 ...
- linux 高效的文件系统事件监控 内核级解析方案 inotify
转载 http://www.lvtao.net/config/inotify.html linux 高效的文件系统事件监控 内核级解析方案 inotify 安装inotify-tools (http: ...
- linux流行开源监控框架,Inotify: 高效、实时的Linux文件系统事件监控框架
概要 - 为什么需要监控文件系统? 在日常工作中,人们往往需要知道在某些文件(夹)上都有那些变化,比如: 通知配置文件的改变 跟踪某些关键的系统文件的变化 监控某个分区磁盘的整体使用情况 系统崩溃时进 ...
- inotify 实时的Linux文件系统事件监控
标签:inotifywait 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://cqfish.blog.51cto.com/6222 ...
- mac备忘录同步android,IOS技巧心得 篇五:iOS备忘录,可实现全平台实时同步,iPhone ipad PC...
IOS技巧心得 篇五:iOS备忘录,可实现全平台实时同步,iPhone ipad PC 2020-01-20 17:47:28 11点赞 54收藏 16评论 前言: 由于生活中越来越多的手机.平板电脑 ...
- mpp文件转换excel_原来只要按下这个键,Word、PDF、PPT、Excel文件随你互相转换
哎呀,好不容易熬到6点,终于可以下班了!没想到前脚刚踏出公司门,就收到隔壁同事王二发过来的微信:小P啊,快回来救救急,老板扔了一大堆文档要我们转换格式呢! 唉,真的是能力越大责任越大,谁叫我是公司的办 ...
- Inotify+Rsync实现linux文件实时同步
公司一套系统的同步使用的donotify,不能实现子目录的实时同步,通过查资料,发现inotify可以实现子目录的实时同步,以下为笔记. 一.介绍 Inotify 是文件系统事件监控机制,作为 dno ...
- linux 关闭rsync服务器,linux下配置rsync服务器和实时同步
安装:rpm –ivh rsync-XXXXXX.RPM也可以用YUM 启动rsync必须要装xinetd,它是靠它启动的,端口是873 设定: /etc/xinetd.d/rsync:即#vi /e ...
- 搭建rsync+inotify实时同步
一.准备rsync 在backup备份服务器上准备好rsync.即完成nfs客户端到backup服务端的rsync部署------rsync备份搭建 二.inotify inotify是一种异步文件系 ...
- linux下rsync+inotify实现服务器之间文件实时同步
先介绍一下rsync与inotify. 1.rsync 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例 ...
最新文章
- Oracle 10g与安装Perl环境时的冲突以及解决方法
- TCP滑动窗口 - 动画演示
- JAVA SE学习day_13 :Map 查找表
- mysql经典面试题
- 【JeeSite】用户管理
- C++未定义行为-数组越界
- 迭代器模式(Iterator)
- eclipse使用小技巧
- 中标麒麟共享win7打印机_win10与win7系统电脑通过局域网共享打印机的方法
- 设置ROS机器人避免行走到地图未知区域
- 如何用孩子兄弟表示法存储树c语言,C语言,数据结构,树的孩子兄弟表示法,程序一切正常,但是有个问题不太懂了,园豆不多,帮帮忙,求助一下....
- mysql按域排序_如何在MySQL中对域名进行排序?
- 要读顶级会议上的论文
- 怎么用C语言求解线性规划,线性规划习题详细解析,包括线性规划方程求解步骤...
- MATLAB--数字图像处理 图像直方图规定化
- Linux快速查看OpenCV版本
- Spring学习(五):动态代理的两种实现方式(全网最容易懂)
- CVPR2021:单目实时全身动作捕捉(清华大学)
- 考研复试——数据库(一)
- 超级简单基于spring boot高速公路收费系统的设计与实现.rar(含源码及数据库文件)
热门文章
- SLAM_轨迹算法精度评价指标(ATE、RPE)
- ORB-SLAM3 一张图梳理mono_kitti.cc主流程
- 三维重建笔记_多视几何_求基本矩阵F_六/七/八点法_误差评估
- Inkscape软件的使用与处理svg格式图片
- python训练Faster RCNNC++调用训练好的模型进行物体检测-基于opencv3.4.3(超详细)
- SpringBoot学习(第一天)
- 【VR】Leap Motion 官网文档 FingerModel (手指模型)
- TModalResult 和 MessageBox 返回值
- 吸毒女5次搬家躲粉友:想给女儿干净环境
- [javascript] 完全开源,开心分享 HTML5 Canvas 在线图片处理《imageMagic》(single page app)开发详解[1]...