rsync+inotify實時同步

linux內核從2.6.13版本開始提供了inotify通知接口,用來監控文件系統的各種變化情況,如文件存取、刪除、移動、修改等。利用這一機制,可以很方便地實現文件異動警告、增量備份,並針對目錄或文件的變化及時作出響應。
將rsync工具與inotify機制相結合,可以實現觸發式備份(實時同步)——只要原始位置的文件發生變化,則立即啓動增量備份操作,否則處於靜默等待狀態。這樣,就避免了按固定週期備份時存在的延遲性,週期過密等問題。

配置過程:

    1、調整inotify內核參數:
    在linux內核中,默認的inotify提供了三個跳空參數:max_queue_events、max_user_instances、max_user_watches,分別表示監控事件隊列(16384)、最多監控實例數(128)、每個實例最多監控文件數(8192)。

這裏寫圖片描述

    當要監控的目錄、文件數較多或變化較頻繁時,建議加大這三個參數的值。例如,可直接修改/etc/sysctl.conf配置文件,將管理隊列設爲32768,實例數設爲1024,監控數設爲1048 576(建議大於監控目標的總文件數)。

這裏寫圖片描述
這裏寫圖片描述

    2、安裝inotify-tools
    使用inotify機制還需要安裝inotify-tools,以便提供inotifywait、inotifywatch輔助工具程序,用來監控,彙總改動情況。inotify-tools可以從網站http://inotify-tools.sourceforge.net/下載。
    我是在http://download.csdn.net/download/mchdba/7564775這裏下載的。

這裏寫圖片描述
接着make && make install

    以監控網站目錄 /var/www/html爲例,可以先執行inotifywait命令,然後在另一個終端向/var/www/html目錄下添加文件、移動文件、跟蹤屏幕輸出結果。其中選項“-e”用來指定要監控哪些事件,選項“-m”表示持續監控,選項“-t”表示遞歸整個目錄,選項“-q”簡化輸出信息。

這裏寫圖片描述

inotifywait可監控modify(修改)、create(創建)、move(移動)、delete(刪除)attrib(屬性更改)等各種事件,一有變動立即輸出結果,inotifywatch可用來手機文件系統變動情況,並在運行結束後輸出彙總的變化情況,關於這兩個命令的詳細用法可以參照man手冊頁,配置觸發備份任務時只要用到inotifywait就可以了。

3、編寫觸發式同步腳本:(轉載)
#!/bin/sh
src=/data/www/wwwroot/ #A上的需要備份的文件路徑
des=linuxhome #B上備份文件的路徑 daemon別名
ip=192.168.1.101 #B的IP地址
user=linux
/usr/local/bin/inotifywait -mrq –timefmt ‘%d/%m/%y %H:%M’ –format ‘%T %w%f’ \
-e modify,delete,create,attrib \
src |whilereadfiledorsyncavzdeleteprogresspasswordfile=/etc/rsyncd.pass {src} user@ {ip}::{des} &&  
                    #echo “
{src} was rsynced”
#echo “—————————————————–”
done
注:–password-file存放用戶${user}的密碼

將rsync.sh添加到開機啓動:

sed -i ‘$i \/usr/local/sbin/rsync.sh’ /etc/rc.local

寫法二:

cd /usr/local/sbin

vi rsync.sh //分別在兩臺機器上創建如下腳本,另一臺改一下IP地址即可.

!/bin/sh

src=/data/www/wwwroot/
des=/data/www/wwwroot
ip=192.168.1.101

/usr/local/bin/inotifywait -mrq –timefmt ‘%d/%m/%y %H:%M’ –format ‘%T %w%f’ \
-e modify,delete,create,attrib \
src |whilereadfiledorsyncavzdeleteprogress {src} root@ip: {des} &&
#echo “${src} was rsynced”
#echo “—————————————————–”
done

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章