將inotify機制和rsync工具相結合,可以實現觸發式備份(實時同步)——只要原始位置的文件發生變化,則立即啟動增量備份操作,否則處於靜默狀態,這樣,避免了週期性備份時存在的延遲性、週期過密等問題。
在linux核心中,預設的inotify機制提供了三個調控引數:
[root@localhost myweb]# cat /proc/sys/fs/inotify/max_queued_events
16384 #監控事件佇列數
[root@localhost myweb]# cat /proc/sys/fs/inotify/max_user_instances
128 #最多監控例項數
[root@localhost myweb]# cat /proc/sys/fs/inotify/max_user_watches
8192 #每個例項最多監控檔案數
當要監控的目錄、檔案數量較多或者變化比較頻繁時,建議通過修改「 /etc/sysctl.conf 」加大這三個引數(標準是1024的倍數):
[root@localhost myweb]# vim /etc/sysctl.conf
..............................
fs.inotify.max_queued_events = 32768
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
[root@localhost myweb]# sysctl -p #更新並檢視該引數是否生效
fs.inotify.max_queued_events = 32768
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
1、安裝inotify-tools:
獲取原始碼包:
提取碼: s3rj
解包並安裝:
[root@localhost media]# tar zxf inotify-tools-3.14.tar.gz -c /usr/src
[root@localhost media]# cd /usr/src/inotify-tools-3.14/
[root@localhost inotify-tools-3.14]# ./configure && make && make install
2、安裝後即可使用,現在以監控server b上的/var/www/html目錄:
[root@localhost /]# inotifywait -mrq -e modify,create,move,attrib,delete /var/www/html
該命令的具體選項解釋如下:
-e:指定要監控哪些事件;
-m:表示持續監控;
-r:表示遞迴整個目錄;
-q:簡化輸出資訊;
modify:修改;
create:建立;
move:移動;
delete:刪除;
attrib:屬性更改;
[root@localhost /]# inotifywait -mrq -e modify,create,move,attrib,delete /var/www/html
/var/www/html/ create 1.html
/var/www/html/ attrib 1.html
3、現在可以編寫乙個指令碼來實現實時同步:
[root@localhost /]# vim /opt/inotify_sync.sh
#!/bin/bash
inotify_cmd="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
rsync_cmd="rsync -azh --delete --password-file=/etc/server.pass /var/www/html/* [email protected]::wwwroot"
$inotify_cmd | while read directory event file
do $rsync_cmd
done
[root@localhost /]# chmod +x /opt/inotify_sync.sh
[root@localhost /]# echo '/opt/inotify_sync.sh &' >> /etc/rc.d/rc.local #設定開機自動執行該指令碼
[root@localhost /]#chmod a+x /etc/rc.d/rc.local
[root@localhost /]#init 6
[root@localhost /]#pgrep inotify_sync.sh #重啟後,可以使用此命令檢視指令碼是否在執行,如果在執行,會顯示其程序號
1033
1099
驗證該指令碼是否生效的過程如下:
在本機 server b上執行/opt/inotify_rsync.sh指令碼程式。
切換到本機的/var/www/html/目錄,執行增加、刪除、修改檔案等操作。
檢視server a伺服器中/var/www/html/目錄下的變化情況。
注意事項:
記得測試下指令碼是否有編寫錯誤,可手動執行下指令碼,測試是否生效,若有報錯資訊,可將指令碼裡的命令複製出來,執行一下,看命令是否有錯誤,並且注意兩台伺服器的目錄相關許可權問題,如是否可讀可寫等。
rsync伺服器上的配置項須設定為 read only = no。
配置 inotify rsync 實時同步 張九冫
rsync 雖然可以實現快速備份,但是什麼東西都不可能是十全十美的,作為計畫任務備份,都是固定時間進行的,而且延遲明顯 實時性差,當同步源長期不變化時,密集的定期任務是不必要的。實時備份就不同了,一旦同步源出現變化,立即啟動備份,只要同步源無變化,則不執行備份,但是他只能實現上傳功能。linux核心...
Linux下inotify rsync檔案實時同步
與傳統的cp tar備份方式相比,rsync 具有安全性高 備份迅速 支援增量備份等優點,通過 rsync 可以解決對實時性要求不高的資料備份需求,例如定期的備份檔案伺服器資料到遠端伺服器,對本地磁碟定期做資料映象等。隨著應用系統規模的不斷擴大,對資料的安全性和可靠性也提出的更好的要求,rsync ...
inotify rsync 實現檔案實時備份
一.inotify inotify是一種強大的 細粒度的 非同步的檔案系統事件監控機制,linux核心從2.6.13起,加入了對inotify的支援,通過inotify可以監控檔案系統中的新增 刪除 修改 移動等各種事件,但inotify只提供了c語言介面,不方便呼叫,所以需要先安裝inotify ...