配置 inotify rsync 實時同步 張九冫

2022-09-23 04:15:10 字數 3180 閱讀 8449

rsync 雖然可以實現快速備份,但是什麼東西都不可能是十全十美的,作為計畫任務備份,都是固定時間進行的,而且延遲明顯、實時性差,當同步源長期不變化時,密集的定期任務是不必要的。實時備份就不同了,一旦同步源出現變化,立即啟動備份,只要同步源無變化,則不執行備份,但是他只能實現上傳功能。linux核心提供了inotify通知介面,用來監控檔案系統的各種變化情況,如檔案訪問、刪除、移動、修改等。利用這個機制,可以非常方便地實現檔案異動告警、增量備份,並針對目錄或檔案的變化及時作出響應。

將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接下來的操作接著上一篇配置rsync伺服器的環境,以及配置,上一篇博文鏈結: 現在所有的操作是基於server b(192.168.1.2)這台伺服器的:

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 install2、安裝後即可使用,現在以監控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:屬性更改;現在切換乙個終端,在監控的目錄下新建乙個1.html檔案,則該終端的監控命令下就會提示相關資訊,提示如下::

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

/var/www/html/ create 1.html

/var/www/html/ attrib 1.html3、現在可以編寫乙個指令碼來實現實時同步:

[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 實時同步

將inotify機制和rsync工具相結合,可以實現觸發式備份 實時同步 只要原始位置的文件發生變化,則立即啟動增量備份操作,否則處於靜默狀態,這樣,避免了週期性備份時存在的延遲性 週期過密等問題。在linux核心中,預設的inotify機制提供了三個調控引數 root localhost mywe...

Linux下inotify rsync檔案實時同步

與傳統的cp tar備份方式相比,rsync 具有安全性高 備份迅速 支援增量備份等優點,通過 rsync 可以解決對實時性要求不高的資料備份需求,例如定期的備份檔案伺服器資料到遠端伺服器,對本地磁碟定期做資料映象等。隨著應用系統規模的不斷擴大,對資料的安全性和可靠性也提出的更好的要求,rsync ...

inotify rsync 實現檔案實時備份

一.inotify inotify是一種強大的 細粒度的 非同步的檔案系統事件監控機制,linux核心從2.6.13起,加入了對inotify的支援,通過inotify可以監控檔案系統中的新增 刪除 修改 移動等各種事件,但inotify只提供了c語言介面,不方便呼叫,所以需要先安裝inotify ...