首页 > 代码库 > Rsync+Inotify实时监听备份
Rsync+Inotify实时监听备份
说明,下面的inotify是建立在rsync的配置过程
大前提是rsync daemon 配置成功,rsync配置看上一遍博文,在客户端可以推拉数据,然后才能配置inotify服务----inotify是在客户端安装,监听需要备份的目录,然后推送到服务端
查看当前系统是否支持inotify
[root@NFSServer bier]# uname -r
2.6.32-431.el6.i686
[root@NFSServer bier]# ls -l /proc/sys/fs/inotify/
×üóá 0
-rw-r--r-- 1 root root 0 11 11 22:30 max_queued_events
-rw-r--r-- 1 root root 0 11 11 22:30 max_user_instances
-rw-r--r-- 1 root root 0 11 11 22:30 max_user_watches
#显示着三个文件证明支持
一、安装inotify服务
1)下载inotify 源码包
[root@NFSServer src]# cd /usr/local/src
提示: download inotify-tools
inotify-tools-3.14.tar.gz
2)编译安装inotify
[root@NFSServer src]# tar -xvf inotify-tools-3.14.tar.gz
[root@NFSServer src]# cd inotify-tools-3.14
[root@NFSServer inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify-tools-3.14
make&make install
[root@NFSClient local]# ls
bin games lib python share
etc include inotify-tools-3.14 libexec sbin src
[root@NFSClient local]# cd inotify-tools-3.14/
[root@NFSClient inotify-tools-3.14]# ll
total 16
drwxr-xr-x. 2 root root 4096 Nov 10 03:21 bin ==》inotify执行命令
drwxr-xr-x. 3 root root 4096 Nov 10 03:21 include ==》头文件
drwxr-xr-x. 2 root root 4096 Nov 10 03:21 lib ==》动态链接库文件
drwxr-xr-x. 4 root root 4096 Nov 10 03:21 share ==》帮助文档
inotify常用参数命令详解
[root@NFSClient inotify-tools-3.14]# ./bin/inotifywait –help
二、测试inotify
测试create文件
[root@NFSClient local]# /usr/local/inotify-tools-3.14/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f‘ -e create /data
10/11/15 03:35 /data/backup.bat
提示:此命令是inotify监控的命令,m是持续监听,r是递归,q是只打印事件,后面是时间格式
-e是指定要监听的时间,data是监控的目录
另外新开一个窗口在data目录下创建文件touch backup.bat 发现上面监听的备份目录发生变化
以下操作都需要再另外开个窗口创建,删除,修改文件测试
测试delete
[root@NFSClient local]# /usr/local/inotify-tools-3.14/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f‘ -e delete /data
测试close_write(写文件监听,就是写完就提示)
[csbmoon@NFSClient ~]$ /usr/local/inotify-tools-3.14/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f‘ -e close_write /data
10/11/15 04:04 /data/aa.log
去掉时间格式显示,简化一下
[csbmoon@NFSClient ~]$ /usr/local/inotify-tools-3.14/bin/inotifywait –mrq --format ‘%w%f‘ -e cteate /data
三、简单监听备份脚本
vim backup.sh
cmd="/usr/local/inotify-tools-3.14/bin/inotifywait"
$cmd -mrq --format ‘%w%f‘ -e create,close_write,delete /data|\
while read line
do
rsync -az $line rsync_backup@192.168.3.188::bier --password-file=/etc/rsync.password
done
把管道后面的一行一行交给line处理,因为backup如果有变化是一个带路径的,上面实验过
提示:实时监听备份脚本,针对的是备份目录里面的文件,这个脚本删除就不行出错,因为他不是针对目录备份的
改进backup.sh
vim backup1.sh
cmd="/usr/local/inotify-tools-3.14/bin/inotifywait"
$cmd -mrq --format ‘%w%f‘ -e create,close_write,delete /data|\
while read line
do
[ ! -e "$line" ] && continue
rsync -az --delete $line rsync_backup@192.168.3.188::bier --password-file=/etc/rsync.password
done
当文件不存在的时候就continue,避免了出错,因此这个脚本可以用来简单的创建文件备份使用
四、按照目录实时监听备份
host=192.168.3.188
src=http://www.mamicode.com/data
dst=bier
user=rsync_backup
rsync_passfile=/etc/rsync.password
inotify_home=/usr/local/inotify-tools-3.14/
if [ ! -e "$src" ] \
|| [ ! -e "${rsync_passfile}" ] \
|| [ ! -e "${inotify_home}/bin/inotifywait" ] \
|| [ ! -e "/usr/bin/rsync" ];
then
echo "Check File and Folder"
exit 9
fi
${inotify_home}/bin/inotifywait -mrq --format ‘%w%f‘ -e create,close_write,delete,attrib /$src|\
while read line
do
cd $src && rsync -aruz -R --delete ./ --timeout=100 $user@$host::$dst --password-file=${rsync_passfile} >/dev/null 2>&1
done
exit 0
加大关键参数
[root@NFSClient scripts]# cat /proc/sys/fs/inotify/max_user_watches
8192
[root@NFSClient scripts]# cat /proc/sys/fs/inotify/max_queued_events
16384
本文出自 “比尔linux运维笔记” 博客,请务必保留此出处http://chenshoubiao.blog.51cto.com/6159058/1881341
Rsync+Inotify实时监听备份