linux_inotify
什么是inotify?
拥有强大、粒细粒度、异步文件系统事件监控机制,监控文件系统中添加、删除、修改、移动等各种事件
版本支持: 内核 2.6.13以上版本,inotify-tools 是实施监控的软件
同类软件: 国人 周洋 在金山公司开发sersync
inotify环境搭建
1. rsync服务器 rsync --daemon 已经搭建
2. 检查客户端是否支持
uname -r # 检查内核版本是否大于2.6.13 ls -l /proc/sys/fs/inotify # 检查是否有这个目录,没有支持不了 rpm -aq inotify-tools # 检查软件是否安装 # 没安装通过 yum install -y inotify-tools 安装 # 如果这个安装不了,安装阿里的epel源 # rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-6.noarch.rpm
3. 这个软件安装了两个命令 inotifywait 和 inotifywatch
这两个命令有什么区别?
inotifywait
在被监控的文件或目录上等待文件系统事件,执行后处于堵塞状态,适合在shell脚本中
重要的参数: man inotifywait
-m # 始终保持事件监听状态
-e # 指定文件系统事件, close_write 关闭写
# 写文件过程: 打开文件,写文件,关闭文件
-r # 递归查询目录
-q # 打印很少信息,只打印监控事件的信息
--timefmt # 格式化时间显示 %y/%m%d %H:%M
--format # %T %w%f 显示更改文件名格式
inotifywatch:
统计文件系统时间发生次数,做统计
inotify简单使用
1. 监控
/data目录
inotifywait -mrq --timefmt '%Y/%m/%d %H:%M' --format '%T %w%f' -e create /data/ # 这个只监控 create
# delete 删除,删除并不需要打开文件; close_write 追加、修改文件、新增文件
2. 往 /data 目录下写文件,将会看到输出
如何做实时备份?
当 inotify 监控到目录触发事件,然后触发 rsync备份
写一个脚本
mkdir /server/scripts -p # 创建脚本目录
cd /server/scripts vim realtime_rsync_nfs.sh # 创建实时备份脚本
#!/bin/bash
# realtime rsync /data to backup
# master beimenchuixue monitor_dir=/data/
backup_ip=172.16.1.15
login_user=backup_rsync
moudel_name=backup
rsync_passwd_file=/etc/rsync.password /usr/bin/inotifywait -mrq --format '%w%f' -e create,close_write,delete $monitor_dir \
|while read file
do
/usr/bin/rsync -avz $monitor_dir --delete $login_user@$backup_ip::$moudel_name --password-file=$rsync_passwd_file
done
sh -x realtime_rsync_nfs.sh # 测试
NFS备份可以考虑 --delete 方式,要求无差异备份
还有个命令也可以检测目录变化 watch
linux_inotify的更多相关文章
随机推荐
- Python打印:九九乘法表
代码: i = 1 while i <= 9: n = 1 while n <=i: print("%d*%d=%d\t"%(n,i,i*n),end="&q ...
- TCP协议详解(一)
Tcp协议作为传输层的重要协议之一,想必每个稍有网络编程知识的人都不会感觉到陌生,三次握手/四次挥手这些基本概念也都是耳熟能详.但是当你们进行具体的网络编程的时候发现有很多事情并没有想象中的那么简单, ...
- 用grant命令为用户赋权限以后,登录时,出现:ERROR 1045 (28000)
ERROR 1045(28000)信息是因为权限的问题.这个ERROR分为两种情况: 第一种: ERROR 1045 (28000): Access denied for user 'root'@'l ...
- 申请的服务器安装tomcat后不能访问的问题
新申请的阿里云服务器,操作系统是CentOS6.5,安装jdk1.8版本,用java -version命令可以查看jdk版本,安装正确会有版本显示.然后安装tomcat,tomcat安装后默认端口是8 ...
- mvc接口、webapi、webservice 对比
最近做了很多项目,也同时使用了mvc的接口,webapi的接口,以及webservice 的接口.先两两对比如下: mvc和webapi区别: 1.MVC是建站的一种框架,倾向于返回用户的页面请求:a ...
- 简单的基于hash和hashchange的前端路由
hash定义 hash这个玩意是地址栏上#及后面部分,代表网页中的一个位置,#后面部分为位置标识符.页面打开后,会自动滚动到指定位置处. 位置标识符 ,一是使用锚点,比如<a name=&quo ...
- pm am 12小时格式化
<div id="m_tiem">PM 14:26</div> tiem('m_tiem'); //pm am 12小时格式化function tiem(i ...
- Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2)(A.思维题,B.思维题)
A. Vicious Keyboard time limit per test:2 seconds memory limit per test:256 megabytes input:standard ...
- And Then There Was One(约瑟夫问题变形)
题目链接:http://poj.org/problem?id=3517 And Then There Was One Time Limit: 5000MS Memory Limit: 65536K ...
- BZOJ2282: [Sdoi2011]消防
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2282 答案一定是在直径上的一段,然后答案一定不会小于不在直径上的点到直径的距离(要是可以的话那 ...