實戰:配置rsync+inotify實現實時同步備份


實戰:配置rsync+inotify實現實時同步

Linux內核從2.6.13版本開始提供了inotify通知接口,用來監控文件系統的各種變化情況,如文件存取、刪除、移動等。利用這一機制,可以非常方便地實現文件異動告警、增量備份,並針對目錄或文件的變化及時作出響應。

使用rsync工具與inotify機制相結合,可以實現觸發式備份(實時同步),只要原始位置的文檔發生變化,則立即啓動增量備份操作,否則處於靜態等侍狀態,這樣一來,就避免了按固定週期備份進存在的延遲性、週期過密等問題。

inotify-tools-3.13.tar

下載地址:http://sourceforge.net/projects/inotify-tools/

 

 

擴展:

常見的開源軟件下載網址:

SourceForge.net,又稱SF.net,是開源軟件開發者進行開發管理的集中式場所。

SourceForge 是全球最大開源軟件開發平臺和倉庫,網站建立的宗旨,就是爲開源軟件提供一個存儲、協作和發佈的平臺。SourceForge 上擁有大量非常優秀的開源軟件,事實上,這些軟件完全可以代替一些商業軟件。

實戰4:把xuegod63.cn服務器上的/var/www/html目錄時實同步到xuegod64.cn主機上的/web-back目錄中。

inotify-tools服務端:xuegod63.cn IP192.168.1.63

客戶端:xuegod64.cnIP:192.168.1.64

查看是否支持inotify,從kernel 2.6.13開始正式併入內核。

[root@xuegod63 ~]#uname -r

2.6.32-220.el6.x86_64

[root@xuegod63 ~]#ll /proc/sys/fs/inotify/

root@xuegod63 ~]#ll /proc/sys/fs/inotify/

total 0

-rw-r--r-- 1 rootroot 0 Apr 10 09:09 max_queued_events

-rw-r--r-- 1 rootroot 0 Apr 10 09:09 max_user_instances

-rw-r--r-- 1 rootroot 0 Apr 10 09:09 max_user_watches

注:

在linux內核中,默認的inotify機制提供了三個調控參數:

max_queued_events#表示監控事件隊列

max_user_instances#表示最多監控實例數

max_user_watches #表示每個實例最多監控文件數

查看具體參數值:

[root@xuegod63~]# cat /proc/sys/fs/inotify/max_queued_events

 

16384

[root@xuegod63 ~]#cat /proc/sys/fs/inotify/max_user_instances

128

[root@xuegod63 ~]#cat /proc/sys/fs/inotify/max_user_watches

8192

注:當要監控的目錄、文件數量較多或者變化較頻繁時,要加大這三個參數的值。

例如:可直接修改/etc/sysctl.conf配置文件,將管理隊列設爲32768,實例數設爲1024,監控數設爲9000000(建議大於監控目標的總文件數)。

[root@xuegod63~]#vim /etc/sysctl.conf#以文件最後,添加以下內容

fs.inotify.max_queued_events= 32768

fs.inotify.max_user_instances= 1024

fs.inotify.max_user_watches= 90000000

[root@xuegod63 ~]#sysctl -p#使修改後的sysctl.conf文件生效

查看是否修改成功:

[root@xuegod63~]# cat  /proc/sys/fs/inotify/max_user_watches

90000000

安裝inotify-tools-3.13.tar:

安裝inotify-tools後,將擁有inotifywait、inotifywatch輔助工具程序,從而來監控、彙總文件系統改動情況。

[root@xuegod63 ~]#tar -zxvf inotify-tools-3.13.tar.gz

[root@xuegod63 ~]#cd inotify-tools-3.13

[[email protected]]# ./configure

[[email protected]]# make

 

[[email protected]]# make install

測試:

使用inotifywait命令監控網站目錄/var/www/html發生的變化。然後在另一個終端向/var/www/html目錄下添加文件、移動文件,查看屏幕輸出結果。

[root@xuegod63 ~]#inotifywait -h

常用參數:

-e用來指定要監控哪些事件。

這些事件包括:create創建,move移動,delete刪除,modify修改文件內容,attrib屬性更改。

-m表示持續監控

-r表示遞歸整個目錄

-q 表示簡化輸出信息。

[root@xuegod63 ~]#inotifywait -mrq -e create,move,delete,modify /var/www/html/

在另一個終端登錄,在/var/www/html目錄進行相關的操作,然後,回到原來的終端查看監控變化情況。

[root@xuegod63 ~]#echo aaa > /var/www/html/a.html

[root@xuegod63 ~]#mkdir /var/www/html/test

[root@xuegod63 ~]#cp /etc/passwd /var/www/html/test/

[root@xuegod63 ~]#rm -rf /var/www/html/test/passwd

查看變化:

[root@xuegod63 ~]#inotifywait -mrq -e create,move,delete,modify /var/www/html/

/var/www/html/CREATEa.html

/var/www/html/MODIFY a.html

/var/www/html/CREATE,ISDIR test

/var/www/html/test/CREATE passwd

/var/www/html/test/MODIFY passwd

 

使用inotifywait輸出的監控結果中,每行記錄中依次包括目錄、事件、文件。據此可以識別變動情況。

編寫觸發式同步腳本:

第一步,同步時不需要輸入密碼:

xuegod63發生變化後,直接將發生變化的數據同步到xuegod64,同步時不需要輸入密碼

[root@xuegod63 ~]#ssh-keygen

[root@xuegod63 ~]#ssh-copy-id [email protected]

[root@xuegod63 ~]#ssh 192.168.1.64

Last login: WedNov 12 17:51:35 2014

 

編寫一個腳本

[root@xuegod63 ~]#cat a.sh

#!/bin/sh

SRC=/var/www/html

[email protected]:/web-back

inotifywait -mrq-e modify,delete,create,attrib ${SRC} | while read D E F 

do

/usr/bin/rsync-ahqzt --delete $SRC $DST

done

[root@xuegod63 ~]#cp /root/a.sh /opt/inotify_rsync.sh

[root@xuegod63~]# echo '/opt/inotify_rsync.sh &' >> /etc/rc.local

 

 wKioL1hzKGfRg6ioAADzXhq5BF4173.png


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