Inotify實現實時備份與調優

2021-08-18 18:54:01 字數 2929 閱讀 7564

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可以監控檔案系統中新增 刪除,...