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的更多相关文章
随机推荐
- Nginx 反向代理获取真实IP问题
一.前言 前文 Nginx 解决WebApi跨域二次请求以及Vue单页面问题 当中虽然解决了跨域问题带来的二次请求,但也产生了一个新的问题,就是如果需要获取用户IP的时候,获取的IP地址总是本机地址. ...
- 腾讯云负载均衡CLB的那些“独门利器”
欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:李想 腾讯人做产品一直是很贴近用户的需求的,腾讯云也不例外.负载均衡器作为公有云上的最基础的网络服务,几乎每家云厂商都会提供,虽然负载均衡 ...
- JPG .vs. PNG
A summary of comparison between JPEG and PNG JPEG Pros Smaller file size than PNG Widely suppported ...
- Android数据库之判断表是否存在
Android开发的时候我们可能会用到它的本地数据库,在使用的时候有可能我们已经储存了数据了,但是,我们的表已经创建了,里面有数据,我们要怎么判断表是否已经创建可能就需要琢磨一下. 以下便是利用了,查 ...
- 微信小程序在开发中遇到的问题与解决方法
1. √ 这种错误多半是该js文件中没有Page这个方法,就算是空的js也必须要把Page({ })写上去 2. √ 这种错误多半是该json文件没有内容,所以必须要加上{ },就算是空内容也要加 ...
- MySQL索引 - 索引的类型
索引的类型 B-Tree索引 B-Tree 索引 通常意味着所有的值都是按顺序存储的,并且每一个叶子页到根的距离相同. B-Tree 索引 能够加快访问数据的速度,存储引擎不再需要进行全表扫描来获取需 ...
- 浴室沉思:聊聊DAL和Repository
这是一个由DDD群引发的随笔 在写了上一篇随笔<关于ORM的浴室沉思>后一些朋友私聊我,很多刚接触DDD的朋友会对Repository(仓储层)这东西有点疑惑,为什么要叫仓储层?是不是三层 ...
- BZOJ1758: [Wc2010]重建计划(01分数规划+点分治+单调队列)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1758 01分数规划,所以我们对每个重心进行二分.于是问题转化为Σw[e]-mid>=0, ...
- Java大数应用
1.大数加法 import java.math.BigInteger; import java.util.Scanner; public class Main { public static void ...
- c语言基础学习08_内存管理
=============================================================================涉及到的知识点有:一.内存管理.作用域.自动变 ...