设为首页 收藏本站
查看: 1855|回复: 0

[经验分享] Rsync+Inotify实时监听备份

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-12-12 11:28:01 | 显示全部楼层 |阅读模式
说明,下面的inotify是建立在rsync的配置过程
大前提是rsync daemon 配置成功,rsync配置看上一遍博文,在客户端可以推拉数据,然后才能配置inotify服务----inotify是在客户端安装,监听需要备份的目录,然后推送到服务端
查看当前系统是否支持inotify
[iyunv@NFSServer bier]# uname -r
2.6.32-431.el6.i686
[iyunv@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 源码包
[iyunv@NFSServer src]# cd /usr/local/src
提示: download inotify-tools
inotify-tools-3.14.tar.gz

2)编译安装inotify
[iyunv@NFSServer src]# tar -xvf inotify-tools-3.14.tar.gz
[iyunv@NFSServer src]# cd inotify-tools-3.14
[iyunv@NFSServer inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify-tools-3.14
make&make install

[iyunv@NFSClient local]# ls
bin  games     lib      python  share
etc  include  inotify-tools-3.14  libexec  sbin    src
[iyunv@NFSClient local]# cd inotify-tools-3.14/

[iyunv@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常用参数命令详解
[iyunv@NFSClient inotify-tools-3.14]# ./bin/inotifywait –help


二、测试inotify
测试create文件
[iyunv@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
[iyunv@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

加大关键参数
[iyunv@NFSClient scripts]# cat /proc/sys/fs/inotify/max_user_watches
8192
[iyunv@NFSClient scripts]# cat /proc/sys/fs/inotify/max_queued_events
16384



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-313262-1-1.html 上篇帖子: Rsync+Sersync实时数据同步 下篇帖子: Redhalt配置Centos的yum源 详细步骤
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表