打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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=/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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Inotify+Rsync实现linux文件实时同步
通过rsync inotify
rsync与inotify实现数据同步
Linux下同步工具inotify+rsync使用详解
编程语言两台服务器文件实时同步如何在linux下实现的方案
Linux三阶段之四:实时同步(inotify+rsync,sersync+rsync)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服