注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

红烧鱼

linux & windows management

 
 
 

日志

 
 
关于我
mac

专注IT基础架构设计与运维。 欢迎给我留言,或邮件沟通zjwsk@163.com

网易考拉推荐

rsync + inotify 自动同步  

2009-01-04 22:43:31|  分类: Linux |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
进入正题,开始设定 rsync server:
--rsync 使用系统自带版本 rsync-3.0.6-9.el6
--inotify 使用官方最新版本 inotify-tools-3.13


1.1  /etc/rsyncd.conf 配置如下

uid = nobody
gid = nobody
use chroot = no
max connections = 10
strict modes = yes
secrets file = /etc/rsyncd.secrets
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log

[web3]
path = /web3/wwwroot/
comment = web3 file
ignore errors
read only = no
write only = no
hosts allow = 192.168.12.134
hosts deny = *
list = false
uid = root
gid = root
auth users = web3user


1.2 设定密码文件:

/etc/rsyncd.secrets 的內容很簡單, 格式為 帳號:密碼,如以下例子:
web3user:mypass

接下來, 要將 rsyncd.secrets 這個密碼檔的檔案屬性設為 root 擁有, 且權限要設為 600, 否則無法備份成功
chown root.root /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets


2. 设定主服务器上的inotify .

2.1 inotify install
wget http://sourceforge.net/projects/inotify-tools/files/inotify-tools/3.13/inotify-tools-3.13.tar.gz/download

tar -zxvf inotify-tools-3.13.tar.gz
cd inotify-tools-3.13
./configure && make && make install


2.2 inotify script.
/usr/local/sbin/inotifyrsync.sh

#!/bin/sh
src=/web/wwwroot/
host1=10.245.254.242
host2=192.168.12.132
dst3=web3
user3=web3user

/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 --password-file=/etc/server.pass $src $user3@$host1::$dst3
  /usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/server.pass $src $user2@$host2::$dst2
  echo "${files} was rsynced" >>/tmp/rsync.log 2>&1
done
       
脚本相关解释如下:
--timefmt:指定时间的输出格式。
--format:指定变化文件的详细信息。
这两个参数一般配合使用,通过指定输出格式,输出类似与:
15/04/10 00:29 /web/wwwroot/ixdba.shDELETE,ISDIR was rsynced
15/04/10 00:30 /web/wwwroot/index.htmlMODIFY was rsynced
15/04/10 00:31 /web/wwwroot/pcre-8.02.tar.gzCREATE was rsynced

这个脚本的作用就是通过inotify监控文件目录的变化,进而触发rsync进行同步操作,由于这个过程是一种主动触发操作,通过系统内核完成的,所以,比起那些遍历整个目录的扫描方式,效率要高很多。
有时会遇到这样的情况:向inotify监控的目录(这里是/web/wwwroot/)写入一个很大文件时,由于写入这个大文件需要一段时间,此时inotify就会持续不停的输出该文件被更新的信息, 这样就会持续不停的触发rsync去执行同步操作,占用了大量系统资源,那么针对这种情况,最理想的做法是等待文件写完后再去触发rsync同步。 在这种情况下,可以修改inotify的监控事件,即:“-e close_write,delete,create,attrib”。

inotify脚本文件配置完成后,启动inotify, 并将其加入到自启动文件中:
echo  “/usr/local/sbin/inotifyrsync.sh &” >> /etc/rc.local

2.3  创建rsync 认证密码文件
echo "mypass" > /etc/server.pass
chmod 640 /etc/server.pass
  评论这张
 
阅读(703)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017