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