Linux 內核從 2.6.13 版本開始提供了 inotify 通知接口,用來監控文件系統的各類變化狀況,如文件存取、刪除、移動等。利用這一機制,能夠很是方便地實現文件異動告警、增量備份,並針對目錄或文件的變化及時做出響應。能夠監控某個用戶,什麼時間,作了什麼動做!利用這個內核接口,第三方軟件就能夠監控文件系統下文件的各類變化狀況,而inotify-tools正是實施監控的軟件。
html
使用 rsync 工具與 inotify 機制相結合,能夠實現觸發式備份(實時同步),只要原始位置的文檔發生變化,則當即啓動增量備份操做,不然處於靜態等侍狀態,這樣一來,就避免了按固定週期備份進存在的延遲性、週期過密等問題。linux
軟件下載地址:http://sourceforge.net/projects/inotify-tools/ #notify-tools-3.13c++
試驗要求:將test2主機/var/www/html目錄實時同步到test1主機/var/www/html目錄中;vim
試驗拓普圖bash
[root@test2 ~]#uname -r #查看linux內核
服務器
2.6.32-431.el6.x86_64ssh
[root@test2 ~]#yum -y install xinetd rsync; #安裝rsync服務
工具
[root@test2 ~]#yum -y install gcc-c++,openssh-clients
測試
將inotify-tools上傳並進行解壓安裝網站
[root@test2 ~]# tar xvf inotify-tools-3.13.tar.gz -C /usr/local/src/ #解壓
[root@test2 ~]# cd /usr/local/src/inotify-tools-3.13/ #切換目錄
[root@test2 inotify-tools-3.13]#./configure --prefix=/usr/local/inotify-tools ; #編譯安裝
[root@test2 inotify-tools-3.13]#make ; make install
測試
使用inotifywait命令監控網站目錄/var/www/html發生的變化,而後在另外一個終端向/var/www/html目錄下添加文件、移動文件,查看屏幕輸出結果。
inotifywait經常使用參數:
-e 用來指定要監控哪些事件。這些事件包括: create 建立,move 移動,delete 刪除,modify 修改文件內容,attrib 屬性更改。
-m 表示持續監控
-r 表示遞歸整個目錄
-q 表示簡化輸出信息
[root@test2 ~]# inotifywait -mrq -e create,move,delete,modify /var/www/html/
而後再另開一終端,進入/var/www/html目錄進行新增刪除測試;
[root@test2 html]#mkdir test
[root@test2 html]#touch test.txt
[root@test2 html]#rm -rf test.txt
建立觸發式腳本自動同步數據
ssh免密碼登陸
[root@test2~]#ssh-keygen #生成密鑰
[root@test2~]#ssh-copy-id root@192.168.1.190 #發佈公鑰
編寫腳本
[root@test2~]#vim inotify.sh
#!/bin/bash
SRC=/var/www/html
DST=root@192.168.1.190:/var/www/html
inotifywait -mrq -e modify,delete,create,attrib ${SRC}|while read D E F
do
/usr/bin/rsync -avz --delete $SRC $DST
done
[root@test2~]#chmod +x inotify.sh #添加執行權限
測試自動同步的效果
[root@test2~]#./inotify.sh #運行腳本
另開一終端進行新增刪除修改動做
[root@test2~]#cd /var/www/html/
[root@test2~]#touch bb.txt
而後登陸到192.168.1.190服務器進行查看備份目錄