rsync+inotify實現服務器之間文件實時+雙向同步

 

實現兩臺服務器a和b之間文件雙向同步

大概步驟:... 2

詳細步驟:... 2

一. 主服務器(server端,我這裏是192)... 2

1.安裝rsync. 2

2建立密碼認證文件... 5

3安裝inotify. 7

4創建rsync複製腳本... 9

二、備份服務器(client,我這裏爲192.xxx.xx.209)... 10

1安裝rsync. 10

2密碼認證文件... 11

3立rsync配置文件... 11

雙向同步重點備註... 13

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

大概步驟:

1.先實現a->b文件同步,接着實現aß>b雙向同步

2.主服務器a(166)安裝rsync和inotify

3.備份服務器b(209)安裝rsync

4.啓動備份服務器b的rsync

5.啓動主服務器a的rsync

6.在實現a->b之後,把b服務器上當作主服務器在重新配置即可

 

實現雙向同步的關鍵

1、兩邊都不能設置用戶名,2、日誌文件不能在待同步的文件夾裏面

 

詳細步驟:

一. 主服務器(server端,我這裏是166)

其中主服務器需要安裝rsync與inotify,主服務器作爲server,向備份服務器client傳輸文件

1.安裝rsync

[root@jwxt ~]# cd /usr/src/

[root@jwxt src]# wget  http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz 

[root@jwxt src]# tar zxvf rsync-3.0.9.tar.gz 

[root@jwxt src]# cd rsync-3.0.9 

[root@jwxt rsync-3.0.9]# ./configure --prefix=/usr/local/rsync 

[root@jwxt rsync-3.0.9]# make 

[root@jwxt rsync-3.0.9]# make install

 

 

 

 

2建立密碼認證文件

[root@jwxt rsync-3.0.9]# cd /usr/local/rsync/  

[root@jwxt rsync]# echo "rsync-pwd" >/usr/local/rsync/rsync.passwd 

(其中rsync-pwd是自己設置的密碼,rsync.passwd是文件名稱)

然後給密碼文件授權:

[root@jwxt rsync]# chmod 600 rsync.passwd  

 

命令執行完之後會在/usr/local/rsync目錄下生成一個rsync.passwd文件,裏面存放的是密碼

 

3安裝inotify

 

[root@jwxt rsync]# cd /usr/src/  

[root@jwxt src]# wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz  

[root@jwxt src]# tar zxvf inotify-tools-3.14.tar.gz  

[root@jwxt src]# cd inotify-tools-3.14  

[root@jwxt inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify  

[root@jwxt inotify-tools-3.14]# make  

[root@jwxt inotify-tools-3.14]# make install  

 

 

4創建rsync複製腳本

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

 

#!/bin/bash 

host=1xx.xx.xx.209

src=/tmp/        

des=web

user=webuser

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

do 

/usr/bin/rsync -vzrtopg --delete --progress --password-file=/usr/local/rsync/rsync.passwd $src $user@$host::$des 

echo "${files} was rsynced" >>/home/rsync.log 2>&1 

done

 

其中hostclientipsrcserver端要實時監控的目錄,des是認證的模塊名,需要與client一致,user是建立密碼文件裏的認證用戶,日誌文件rsync.log不要放在需要同步的文件夾裏面,要不然會出現一直複製的問題,也沒法做雙向同步

把這個腳本命名爲rsync.sh,放到監控的目錄裏,比如我的就放到/tmp下面,並給予764權限

[root@jwxt tmp]# chmod 764 rsync.sh 

然後運行這個腳本(一定要在在備份服務器client端的rsync安裝並啓動rsync之後,在啓動rsync.sh腳本)

[root@jwxt tmp]# sh /tmp/rsync.sh & 

我們還可以把rsync.sh腳本加入到開機啓動項裏

[root@jwxt tmp]#  echo "/tmp/rsync.sh" >> /etc/rc.local 

 

二、備份服務器(client,我這裏爲192.xxx.xx.209)

1安裝rsync(備份服務器只安裝rsync

[root@jwhsyj ~]# cd /usr/src/  

     t@jwhsyj src]# wget  http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz  

[root@jwhsyj src]# tar zxvf rsync-3.0.9.tar.gz  

[root@jwhsyj src]# cd rsync-3.0.9  

[root@jwhsyj rsync-3.0.9]# ./configure --prefix=/usr/local/rsync  

[root@jwhsyj rsync-3.0.9]# make  

[root@jwhsyj rsync-3.0.9]# make install 

 

2密碼認證文件

[root@jwhsyj rsync-3.0.9]# echo "rsync-pwd" > /usr/local/rsync/rsync.passwd 

echo "rsync-pwd" > /usr/local/rsync/rsync.passwd 

需要給密碼文件600權限

[root@jwhsyj rsync]# chmod 600 rsync.passwd 

 3rsync配置文件

uid = root

gid = root

use chroot = no

max connections = 10

strict modes = yes

pid file = /var/run/rsyncd.pid 

lock file = /var/run/rsync.lock 

log file = /var/log/rsyncd.log 

[web] 

path = /tmp/ 

comment = web file 

ignore errors 

read only = no

write only = no

hosts allow = 1xx.xx.xx.166

hosts deny = * 

list = false

uid = root

gid = root

secrets file = /usr/local/rsync/rsync.passwd

 

其中webserver服務端裏的認證模塊名稱,需要與主服務器裏的一致,以上的配置我的自己服務器裏的配置,以供參考。

把配置文件命名爲rsync.conf,放到/usr/local/rsync/目錄裏

啓動rsync

[root@jwhsyj rsync]# /usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsync.conf

我們可以把rsync腳本加入到開機啓動項裏

[root@jwhsyj rsync]# echo "/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsync.conf" >> /etc/rc.local

 

 

 

 

 

 

 

雙向同步重點備註

如果只做單項a->b的備份,到上面結束了,如果需要做a<->b雙向的備份,就需要把b也按照a那樣裝一遍,而且需要同步的文件夾裏面放兩個rsync.sh腳本文件,並且需要區分開,我這裏是用rsync166.sh和rsync209.sh,效果圖如下

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章