天天看點

rsync+inotify實作檔案時實同步

1、說明

   實驗作業系統:CentOS release 5.6

   伺服器端(代碼更新伺服器):192.168.0.5

   用戶端(web伺服器):192.168.0.6   192.168.0.7  192.168.0.8

   web目錄:/data/httpd/wwwroot/

   原理:由192.168.0.5上inotify服務監測檔案是否有更新,如果有更新(修改,删除,建立)inotify就會通過rsync指令将更新的檔案推向三台web伺服器

   架構圖如下:

<a href="http://blog.51cto.com/attachment/201106/002546758.png" target="_blank"></a>

2、在三台web上配置rsync服務

   #mkdir -p /data/httpd/wwwroot       #建立web目錄

   #vim /etc/rsyncd.conf               #配置檔案

   uid = root

   gid = root

   use chroot = no

   max connections = 5

   pid file = /var/run/rsyncd.pid

   lock file = /var/run/rsync.lock

   log file = /var/log/rsyncd.log

   [www]

   path=/data/httpd/wwwroot/

   comment = update

   ignore errors

   read only = no

   list = no

   hosts allow = 192.168.0.0/255.255.255.0

   auth users = root

   secrets file = /etc/rsyncd.secrets

   #vim /etc/rsyncd.secrets                   #建立rsync證檔案

   123456

   root:123456

   #chmod 0600 /etc/rsyncd.secrets            #設定權限

   #rsync --daemon                            #啟動服務

   #echo "rsync --daemon"  &gt;&gt; /etc/rc.local   #開機自啟動

3、配置服務端(rsync+inotify)

   #mkdir -p /data/httpd/wwwroot   #建立目錄存放代碼

   (1)、安裝inotify

   #cd /usr/local/src/

   #wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

   #tar xzvf inotify-tools-3.14.tar.gz

   #cd inotify-tools-3.14

   #./configure

   #make

   #make install

   (2)、編寫同步更新腳本

   #mkdir /root/bin

   #cd /root/bin

   #vim rsync.sh

   #!/bin/bash

   src=/data/httpd/wwwroot/

   des=www

   host="192.168.0.6 192.168.0.7 192.168.0.8"

   /usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib $src | while read files

   do

     for hostip in $host

     do

        rsync -vzrtopg --delete --progress --password-file=/etc/rsyncd.secrets $src root@$hostip::$des

     done

     echo "${files} was rsynced" &gt;&gt;/tmp/rsync.log 2&gt;&amp;1

   done

   (3)、建立rsync認證檔案

   #vim /etc/rsyncd.secrets                 

   #chmod u+x /etc/rsyncd.secrets

   (4)、啟動

   #nohup /bin/bash /root/bin/rsync.sh &amp;

   (5)、開機自啟動

   #echo "nohup /bin/bash /root/bin/rsync.sh &amp;" &gt;&gt; /etc/rc.local

   (6)、測試

   在192.168.0.5上進入目錄/data/httpd/wwwroot/

   #touch a.txt

   在三台web機上/data/httpd/wwwroot/目錄可以立馬看a.txt。

<a href="http://www.055680.com/" target="_blank">城市物語</a>

    本文轉自yuangang_love 51CTO部落格,原文連結:http://blog.51cto.com/linux008/595922,如需轉載請自行聯系原作者

繼續閱讀