inotify是一種強大的、細粒度的、非同步的檔案系統監控機制,linux核心2.6.13起,加入了inotify支援,通過inotify可以監控檔案系統中新增、刪除、修改、移動等各種事件,利用這個核心介面,inotify就可以監控檔案系統下的變化。
安裝inotify
1)檢視核心是否支援
uname -r
yum install -y inotify-tools
2)檢查安裝
rpm -qa|grep inotify
3)inotify-tools提供的兩個工具
inotifywait:通過inotify api等待被監控檔案上的相應事件並返回監控結果。
inotifywatch:用於收集關於被監視的檔案系統的統計資料。
inotifywait:
-m :實時監控。
-d:後台執行。
-r:遞迴,對子目錄監控。
-e:監控事件。以下
access:檢測檔案訪問事件。
close_write:寫入關閉事件。
modify:檔案發生變化。
attrib:檔案屬性變化事件。
delete:檔案被刪除。
--timefmt :當在--format選項中使用%t時,--timefrt選項則可以用來指定自定義的符合strftime規範的時間格式,此時間格式可用的格式符可以通過strftime的手冊頁獲取;--timefrt後常用的引數是'%d/%m/%y %h:%m';
--format :自定義inotifywait的輸出格式,如--format '%t %w %f';常用的格式符如下:
%w:顯示被監控檔案的檔名;
%f:如果發生某事件的物件是目錄,則顯示被監控目錄的名字;預設顯示為空串;
%t:使用--timefmt選項中自定義的時間格式.
eg. inotifywait -mrq --timefmt '%d/%m/%y %h:%m' --format '%t %w%f' -e close_write /data #輸出時間
eg. innotifywait -mrq --format '%w%f' -e create,close_write,delete /data #簡化輸出
-m :永遠監控,實時監控。
-d:後台執行。
-q:僅列印監控事件的資訊。
-r:遞迴,對子目錄監控。
-e:監控事件。以下
access:檢測檔案訪問事件。
close_write:寫入關閉事件。
modify:檔案發生變化。
attrib:檔案屬性變化事件。
delete:檔案被刪除。
--timefmt :當在--format選項中使用%t時,--timefrt選項則可以用來指定自定義的符合strftime規範的時間格式,此時間格式可用的格式符可以通過strftime的手冊頁獲取;--timefrt後常用的引數是 '%d/%m/%y %h:%m';
--format :自定義inotifywait的輸出格式,如--format '%t %w %f';常用的格式符如下:
%w:顯示被監控檔案的檔名.
%f:如果發生某事件的物件是目錄,則顯示被監控目錄的名字;預設顯示為空串;
%t:使用--timefmt選項中自定義的時間格式.
eg. inotifywait -mrq --timefmt '%d/%m/%y %h:%m' --format '%t %w%f' -e close_write /data #輸出時間.
eg. innotifywait -mrq --format '%w%f' -e create,close_write,delete /data #簡化輸出.
關於inotify實現實時同步的指令碼
inotifywait=/bin/inotifywait
dirbak=/data
$inotifywait -mrq --format '%w%f' -e modify,delete,create,attrib $dirbak\
|while read file
do cd $dirbak
/bin/rsync -az --delete ./ rsync://[email protected]/backup --password-file=/etc/rsync.password &
echo "$ is bak_file_`date +%f:%t`" >>/tmp/rsync.log 2>&1
done
&:讓rsync在後台佇列中執行,不需要等到執行完後再迴圈。
關於inotify的調優
/proc/sys/fs/inotify/max_user_watches :設定inotifywait或inotifywatch命令可以監視的檔案數量(單程序)。
/proc/sys/fs/inotify/max_queued_events :設定inotify例項時間(event)佇列可容納的時間數量。
/proc/sys/fs/inotify/max_user_instances :每個使用者可以執行inotifywait或inotifywatch的程序數。 預設128不需要設了。
如果訪問量大可以往上調,調整採用echo方式,寫入rc.local即可。
總結
優點:監控檔案系統事件變化,通過inotify+rsync實現實時資料同步。
缺點: 如果大於200個檔案(10-100k),同步會延遲。
希望我的文件對你有所幫助,我會繼續更新的
028 rync和inotify實現實時備份
一 服務節點安裝inotify tools。確保系統後以下輸出 root x ll proc sys fs inotify total 0 rw r r 1 root root 0 aug 23 20 02 max queued events rw r r 1 root root 0 aug 23 ...
sersync rsync實現實時同步備份
2.編寫sersync配置檔案 root nfs01 sersync cd usr local sersync conf root nfs01 conf ll rw r r 1 root root 2214 2011 10 26 11 54 confxml.xml 6 8 9 10 11 說明 實現...
rsync結合 inotfiy 實現實時備份
rsync簡介 rsync是linux系統下的資料映象備份工具。使用快速增量備份工具remote sync可以遠端同步,支援本地複製,或者與其他ssh rsync主機同步 inotify簡介 inotify 是一種強大的 非同步的檔案系統事件監控機制,通過inotify可以監控檔案系統中新增 刪除,...