您的位置:首页 > 其它

rsync与inotify实时同步备份数据

2013-11-24 10:31 495 查看
发布:thebaby 来源:net 【大 中 小】

偶尔有一天看到新浪微博里提到web服务器使用的是rsync+inotify触发更新,感觉挺不错。

Inotify-tools可以监控文件系统下文件的各种变化情况,需要安装这个第三方的工具。

案例背景:

随着公司应用不断的增加,代码更新的更加频繁,每次更新完后都要把主服务器上的代码手动同步到备份服务器上。曾经想过用计划任务去定时同步代码,但是随着数据量的加大,每次同步的时候rsync都要进行完整的扫描,耗时过长。

后来公司又上一套系统,用到了tomcat的集群,这就更需要集群间web内容的一致。

偶尔有一天看到新浪微博里提到web服务器使用的是rsync+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 # www.jbxue.com

/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

本文原始链接:http://www.jbxue.com/article/4116.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: