5. rsync+inotify实时数据同步

1.inotify简介
  • 异步文件系统事件监控机制,Linux内核从2.6.13加入Inotify支持,通过Inotify可以监控文件系统中添加,删除,修改,移动等各种事件
  • 实际是一种事件驱动机制,为应用程序监控文件系统事件提供了实时响应事件的机制,而无须通过诸如cron等的轮询机制来获取事件
2.安装环境准备
3.开始安装
  • 看当前系统是否支持inotitfy

uname -r
在这里插入图片描述
ls -l /proc/sys/fs/inotify/
在这里插入图片描述

  • 查看是否安装inotify-tools

rpm -qa inotify-tools

  • 安装inotify-tools

方式一:yum安装
  wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
  yum install inotify-tools -y
在这里插入图片描述
方式二:编译安装
  wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
  tar -zvxf inotify-tools-3.14.tar.gz
  cd inotify-tools-3.14
  ./configure --prefix=/usr/local/inotify
  make
  make install

3.工具集介绍

共安装2个工具:inotifywait、inotifywatch

  • inotifywait
      在被监控的文件或目录上等待特定文件系统事件(open,close,delete等)发生,执行后处于阻塞状态,适合在shell脚本中使用
  • inotifywatch
      收集被监视的文件系统使用度统计数据,指文件系统事件发送的次数统计
4.inotifywait常用命令

查看命令帮助:
  /usr/bin/inotifywait --help

常用参数:

参数说明
-m持续监听
-r使用递归形式监视目录
-q减少冗余信息,只打印出需要的信息
-e指定要监视的事件,多个时间使用逗号隔开
–timefmt时间格式
ymd分别表示年月日,H表示小时,M表示分钟
–format监听到的文件变化的信息
%w 表示发生事件的目录
%f 表示发生事件的文件
%e 表示发生的事件
%Xe 事件以“X”分隔
%T 使用由–timefmt定义的时间格式

Events事件:

事件描述
access文件或目录被读取
modify文件或目录被修改
attrib文件或目录属性被改变
close_write文件或目录被写入后关闭
close_nowrite文件或目录没有写入关闭
close文件或目录关闭,无论读/写模式
open文件或目录被打开
moved_to文件或目录被移动至另外一个目录
moved_from文件或目录被从另一个目录移动至当前目录
move文件或目录被移动另一个目录或从另一个目录移动至当前目录
create文件或目录被创建在当前目录
delete文件或目录被删除
delete_self文件或目录被安全删除
unmount文件系统被挂载
5.命令使用

监控创建,删除:
  inotifywait -mrq --timefmt ‘%d%m%y %H:%M’ --format ‘%T %w%f’ -e create,delete /backup/


另外开终端创建文件:touch {1…3}.txt rm -f 1.txt
执行效果如下:
在这里插入图片描述

6.编写inotify实时监控脚本

mkdir /server/scripts/ -p
vim /server/scripts/inotify.sh


#监控目录
Path=/backup
#rsync服务IP
Ip=192.168.47.51
#监控backup目录
/usr/bin/inotifywait -mrq --timefmt ‘%d%m%y %H:%M’ --format ‘%T %w%f’ -e create,close_write,delete $Path
|while read file
  do
   if [ -f $file ];then
    #只同步更改过的文件
    rsync -az $file --delete rsync_backup@$Ip::backup --password-file=/etc/rsync.password
   else
    #同步整个目录
    cd $Path
    rsync -az ./ --delete rsync_backup@$Ip::backup --password-file=/etc/rsync.password
   fi
  done


脚本下载路径:
https://download.csdn.net/download/cen50958/11126567

7.关键参数
参数说明默认值
max_queued_events设置inotifywait或inotifywatch命令可以监控的文件数量(单进程)16384
max_user_instances设置每个用户可以运行的inotifywait或inotifywatch命令的进程数128
max_user_watches设置inotify实例事件(event)队列可容纳的事件数量8192
8.inotify优缺点
  • 优点:
      监控文件系统事件变化,通过同步工具实现数据同步
  • 缺点:
      并发如果大于200个文件(10-100K),同步会有延迟
      监控到事件后,调用rsync同步是单进程(加&并发)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值