rsync+inotify同步备份数据

本文介绍如何利用rsync结合inotify-tools实现服务器文件的实时监控及同步。适用于需要保持多台服务器文件一致性的场景,如web服务器集群。文章详细记录了安装配置过程及脚本编写。

背景:

    随着公司应用不断的增加,代码更新的更加频繁,每次更新完后都要把主服务器上的代码手动同步到备份服务器上。曾经想过用计划任务去定时同步代码,但是随着数据量的加大,每次同步的时候rsync都要进行完整的扫描,耗时过长。后来公司又上一套系统,用到了tomcat的集群,这就更需要集群间web内容的一致。偶尔有一天看到刘宇的新浪微博里提到他们的web服务器使用的是rsync+inotify触发更新,感觉挺不错,于是上网搜了一下关于inotify的使用。Inotify-tools可以监控文件系统下文件的各种变化情况,所以需要安装这个第三方的工具。

1.说明

服务器端(应用代码更新):192.168.0.27 
备份服务器:192.168.0.39 
web目录:/opt/tomcat_xx/webapps/ROOT 
原理:由192.168.0.27上inotify服务监测文件是否有更新,如果有更新(修改,删除,新建)inotify就会触发通过rsync命令将更新的文件推向备份服务器

2.安装安装inotify-tools 
   #cd /usr/local/src/ 
   #wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz 
    或到此下载http://inotify.aiken.cz/?section=inotify&page=download&lang=en 
   #tar zxf  inotify-tools-3.14.tar.gz 
   #cd inotify-tools-3.14 
   #./configure && make && make install

3.编译同步脚本

vim /usr/local/bin/rsync.sh 
#!/bin/bash 
dhost=192.168.0.39 
src=/opt/tomcat_xx/webapps/ROOT/ 
dst=opt/tomcat_xx/webapps/ROOT 
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib  $src \ 
| while read files 
        do 
  /usr/bin/rsync -vzrtopg --delete --progress  $src root@$dhost:$dst 
  echo "${files} was rsynced" >>/tmp/rsync.log 2>&1 
    done

//src为源端被同步的目录,dst为目标端备份服务器的目录,dhost为备份服务器地址。

4.ssh单向无密码访问 
为了使用rsync进行同步拷贝的时候不用输入目标服务器的登录密码,所以我使用公钥的方式,当然也有人喜欢使用rsync的密码文件方式(更安全)。

源和目标端都操作 : 
ssh-keygen -t rsa 
源端:

cd .ssh/ 
scp id_rsa.pub 192.168.0.39:/root/ 
备份机操作--192.168.0.39: 
cat id_rsa.pub >>~/.ssh/authorized_keys

5.执行脚本 
让脚本在后台运行吧: 
nohup /usr/local/bin/rsync.sh &

6.加入开机启动

echo "nohup /usr/local/bin/rsync.sh &" >> /etc/rc.local





本文转自 baiying 51CTO博客,原文链接:http://blog.51cto.com/baiying/731017,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值