各主机IP
172.16.1.5 lb01
172.16.1.6 lb02
172.16.1.7 web02
172.16.1.8 web01
172.16.1.51 db01
172.16.1.31 nfs01
172.16.1.41 backup
172.16.1.61 m01
在backup主机上rsync.conf中增加一个[nfsbkup] path = /nfsbackup
本篇主要在nfs01主机上操作
inotify是一种强大的、细粒度的、异步的文件系统事件监控机制。
rpm -qa inotify-tools
# 查看是否安装
yum -y install inotify-tools
# 在nfs01主机上(需要epel源)
inotify-tools软件环境如下
/usr/bin/inotifywait
/usr/bin/inotifywatch
/usr/lib64/libinotifytools.so.0
/usr/lib64/libinotifytools.so.0.4.1
/usr/share/doc/inotify-tools-3.14
/usr/share/doc/inotify-tools-3.14/AUTHORS
/usr/share/doc/inotify-tools-3.14/COPYING
/usr/share/doc/inotify-tools-3.14/ChangeLog
/usr/share/doc/inotify-tools-3.14/NEWS
/usr/share/doc/inotify-tools-3.14/README
/usr/share/man/man1/inotifywait.1.gz
/usr/share/man/man1/inotifywatch.1.gz
inotify优化配置(可选):
/proc/sys/fs/inotify/max_queued_events
inotify实例事件队列可容纳的事件数量
/proc/sys/fs/inotify/max_user_watches
可监视的文件数量
/proc/sys/fs/inotify/max_user_instances
每个用户可运行的inotifywait或inotifywatch命令的进程数
inotifywait 基本用法如下
Usage: inotifywait [ options ] file1 [ file2 ] [ file3 ] [ ... ]
options:
-m|--monitor: 一直保持监听事件,没有此选项的话inotify监听到一个事件后即退出
-d|--daemon : 以后台运行模式监听
-t|--timeout <seconds>: 指定监听等待多少秒后停止,0表示不停止监听
-e|--event <event1> [ -e|--event <event2> ... ]:
监听明确的事件,没有此项默认会监听所有事件
-q|--quiet : 只打印(输出)事件
-r|--recursive: 递归目录
events: 事件类型如下
access 文件或目录内容被读即被访问
modify 文件或目录内容被修改
attrib 文件或目录属性被修改
close_write 文件或目录以写模式打开之后关闭
close_nowrite 文件或目录以只读模式打开后关闭
close 文件或目录关闭(不管之前是以什么模式打开)
open 文件或目录被打开
moved_to 文件或目录移动到'监视'的目录中
moved_from 文件或目录从'监视'的目录中移出
move 等于上述两条并集
create 文件或目录在指定'监视'的目录中被创建
delete 文件或目录在指定'监视'的目录中被删除
delete_self 文件或目录被删除
unmount 文件系统包含未挂载的文件或目录
Exit status:
0 - 接收到指定监听的一个事件
1 - 接收到一个未指定监听的事件
(usually delete_self or unmount), or some error occurred.
2 - The --timeout option was given and no events occurred
in the specified interval of time.
使用示例:
inotifywait -mqr --timefmt '%Y-%m-%d %H:%M' --format '%T %w%f' -e create,delete /backup # 新建文件时会有如下输出
2017-02-05 17:30 /backup/a
2017-02-05 17:30 /backup/b
..
脚本实现:"/server/scripts/inotify_rsync.sh"
#!/bin/bash
# Program: backup local dir "/backup" to BACKUP Server in real time
# author: Huangjian
# date: 2017-2-5
DIR="/data"
/usr/bin/inotifywait -mqr --format '%w%f' -e create,delete,close_write $DIR | \
while read file; do
if [ -f $file ];then
rsync -az $file --delete rsync_backup@172.16.1.41::nfsbkup/ --password-file=/etc/rsync.pa
ssword
else
cd $DIR &&
rsync -az ./ --delete rsync_backup@172.16.1.41::nfsbkup/ --password-file=/etc/rsync.passw
ord
fi
done
执行此脚本,往NFS Server的/data目录中添加 删除或修改文件时会将此目录的内容与backup主机中的/nfsbackup目录保持一致
inotify优缺点
- 优点
1.监控文件系统事件变化,通过同步工具实现实时数据同步.
- 缺点
- 并发如果大于200个文件(10-100K),同步就会有延迟.
- 监控到事件后调用rsync同步是单进程的.