rsync+inotify 實現服務器之間目錄文件實時同步

web主:192.168.1.139

web備:192.168.1.138

一、安裝web主:

1.安裝rsync

wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz

tar zxvf rsync-3.0.9.tar.gz
cd rsync-3.0.9

./configure --prefix=/usr/local/rsync
make 
make install

2.安裝完畢後建立認證密碼文件:

echo "123456">/usr/local/rsync/rsync.passwd
其中“123456”是我們設置的密碼

爲了安全起見我們把密碼文件的權限設置成 600:
chmod 600 /usr/local/rsync/rsync.passwd

3.安裝 inotify
wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar zxvf inotify-tools-3.14.tar.gz 
cd inotify-tools-3.14
./configure --prefix=/usr/local/inotify

make && make install

4.創建 rsync 複製腳本
腳本的主要作用是是將 server 端的目錄/tmp 裏的內容,如果修改了(無論是添加、修改、刪除文件)能
夠通過 inotify 監控到,並通過 rsync 實時的同步給 client 的/tmp 裏,下面是通過 shell 腳本實現的

#!/bin/bash
host=192.168.1.138
src=/web/wwwroot/
des=apabi
user=apabiuser
/usr/local/inotify/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/local/rsync/bin/rsync  -vzrtopg  --delete  --progress  --password-file=/usr/local/rsync/rsync.passwd  $src $user@$host::$des
echo "${files} was rsynced" >>/var/log/rsync.log 2>&1
done

並給予 764 權限
chmod 764 rsync.sh 
切記等客戶端安裝完畢後再運行這個腳本,否側會報錯
sh /web/wwwroot/rsync.sh & 

5.我們還可以把 rsync.sh 腳本加入到開機啓動項裏
[root@nginx tmp]# echo "/web/wwwroot/rsync.sh" >> /etc/rc.local 

 

6.安裝客戶端配置:
安裝 rsync
tar zxvf rsync-3.0.9.tar.gz 
cd rsync-3.0.9
./configure --prefix=/usr/local/rsync
make 
make install
7.創建密碼文件,注意裏面的信息要和主服務器一致 

cd /usr/local/rsync
echo "apabiuser:123456" >rsync.passwd

8.給密碼文件設置 600 權限,否則啓動服務會報錯
chmod 600 rsync.passwd 
9.創建 rsync 配置文件

vim rsync.conf

uid = nobody
gid = nobody
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
[apabi]
path = /web/wwwroot/
comment = apabi file
ignore errors
read only = no
write only = no
hosts allow = 192.168.1.139
hosts deny = *
list = false
uid = root
gid = root
auth users = apabiuser
secrets file = /usr/local/rsync/rsync.passwd

其中 apabi 是 server 服務端裏的認證模塊名稱,需要與主服務器裏的一致 
把配置文件命名爲 rsync.conf,放到/usr/local/rsync/目錄裏
10.啓動 rsync 服務

/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsync.conf 
11.把 rsync 服務加入開機啓動項
echo "/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsync.conf" >> /etc/rc.local

12.在服務端 /web/wwwroot/ 下的文件:

#pwd

#ls

13.在客戶端 /web/wwwroot 下的文件:

#pwd

#ls

我們在服務端創建一個測試文件 apabi20130803 看能不能自動同步到客戶端

#echo "apabi test" > apabi20130803

我們在客戶端查看可以看到apabi20130803文件,就說明成功了

 

本文出自 “飛鴻沓膤” 博客,請務必保留此出處http://jxzhfei.blog.51cto.com/1382161/1263811

發佈了42 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章