文章来源:王琦的个人博客-使用OpenResty和Lua实现git pull ,互联网打杂,喜欢多语言编程,记录一些知识碎片,分享一些心得。
inotify+rsync进行实时同步流程
安装inotify
1、更新epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
2、yum安装
yum install -y inotify-tools
3、rpm -ql inotify-tools
下两个命令
/usr/bin/inotifywait # 实现对数据目录信息变化的监控
/usr/bin/inotifywatch # 监控数据信息变化,对变化的数据进行统计
inotify命令和事件信息
inotifywait
- -m 保持事件监听状态
- -r 递归监控
- -q 无用的输出信息不进行显示
- –timefmt 设定日期格式
- –format 命令执行过程中输出格式信息
- -e 指定监控事件的信息
主要用到的事件信息有:create创建,delete删除,moved_to移入,close_wait修改
比较完整的命令:
inotifywait -mrq --timefmt "%F" --format "%T %w%f 事件信息:%e"
touch test.txt
# 输出信息
2016-03-25 ./test.txt 事件信息:CREATE
2016-03-25 ./test.txt 事件信息:OPEN
2016-03-25 ./test.txt 事件信息:ATTRIB
2016-03-25 ./test.txt 事件信息:CLOSE_WRITE,CLOSE
比较常用的命令:
inotifywait -mrq --format "%w%f" -e create,delete,moved_to,close_write ./
touch test2.txt
# 输出信息
./test2.txt
用shell脚本实现inotify+rsync实时同步
#! /bin/bash
inotifywait -mrq --format "%w%f" -e create,delete,moved_to,close_write /backup |\
while read line
do
rsync -az --delete /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
done