注:要使用inotify模組,系統版本必須是linux-2.6.13及以上。
一、關鍵技術
利用csync2+sqlite實現資料的高效實時的增量備份,相關目錄及檔案資訊都儲存在sqlite資料庫中,
大大提公升了同步的速率和效率;利用inotify觸發式(實時)執行csync同步命令更新檔案。
二、方案適用
伺服器集群方案: reiserfs4+csync2+inotify
**服務程式分布式方案:csync2+inotify+nfs
[注](如,**程式中存在快取目錄則排除此目錄同步,將快取目錄掛載在nfs上)
分布式集群軟體配置更新同步方案: csync2+inotify
[注](如,集群中heartbeat相關的配置檔案,如apache,nginx的配置檔案,並能執行相關指令碼)
三、實際配置過程
系統:centos5.1
結構: 三颱伺服器
引用# vi /etc/hosts
2、建立安裝指令碼並執行
引用vi install.sh //以下內容:
wget –i list
cd /usr/local/src/
tar zxvf libgpg-error-1.7.tar.gz
cd libgpg-error-1.7
./configure && make && make install
cd ..
tar zxvf libgcrypt-1.4.4.tar.gz
cd libgcrypt-1.4.4
./configure --with-gpg-error-prefix=/usr/local && make && make install
cd ..
tar zxvf libtasn1-2.1.tar.gz
cd libtasn1-2.1
./configure && make && make install
cd ..
tar zxvf sqlite-2.8.17.tar.gz
cd sqlite-2.8.17
./configure && make && make install
cd ..
tar zxvf librsync-0.9.7.tar.gz
cd librsync-0.9.7
./configure && make && make install
cd ..
tar jxvf gnutls-2.6.6.tar.bz2
cd gnutls-2.6.6
./configure --with-libgcrypt-prefix=/usr/local/ && make && make install
cd ..
echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig
tar zxvf csync2-1.34.tar.gz
cd csync2-1.34
./configure && make && make install && make cert
cd ..
tar zxvf inotify-tools-3.13.tar.gz
cd inotify-tools-3.13
./configure && make && make install
cd ..
echo "csync2 30865/tcp" >> /etc/services
echo "service csync2
" > /etc/xinetd.d/csync2
chkconfig xinetd on
3、賦予指令碼可執行許可權並執行:
引用(注:需要在每個節點執行指令碼)
chmod 755 install.sh
./install.sh
4、編輯hosts檔案如下內容:
引用vi /etc/hosts
192.168.4.188 csync1
192.168.4.190 csync2
192.168.4.191 csync3
(三颱主機都要修改)
5、生成金鑰並分發到每個節點:
引用csync2 -k /etc/test.key
scp /etc/test.key root@node2:/etc/
6、建立備份目錄:
引用mkdir /var/csync_backup
注:用於防止修改錯誤恢復,如果啟用了,分別在其他節點建立相應的目錄。
7、修改csync2配置檔案(所有節點相同):
引用vi /etc/csync2.cfg //以下內容:
group testgroup
啟動服務:
引用/etc/init.d/xinetd start
或者:service xinetd start
注:csync2相關測試命令
引用csync2 –vvv –t 測試csync配置是否正確,可以看到相關sql執行過程
csync2 –xv 執行同步命令
csync2 –xvvv 執行同步命令,並顯示出詳細的資訊
8.做個軟鏈結
32位系統:
ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib/libinotifytools.so.0
64位系統:
ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0
9、配置inotify觸發同步指令碼(所有節點相同):
引用vi /usr/local/sbin/csync2_test.sh //以下內容:
#!/bin/bash
src=/var/www/html
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %h:%m' --format '%t %w%f' /
--exclude "/.swp$" /
-e close_write,modify,delete,create,attrib,move /
$ /| while read file
docsync2 -x >/dev/null 2>&1
done
後台執行指令碼:
引用chmod a+x /usr/local/sbin/csync2_test.sh
csync2_test.sh &
linux下inotify的使用
有時候我們需要檢測某個目錄下檔案或者子目錄的改動狀況,如新增 刪除 以及更新等,linux系統上提供了inotify來完成這個功能。inotify是在版本2.6.13的核心中首次出現,現在的發行本應該都包含這個系統呼叫了。下面的描述中的檔案如無特別說明包括檔案以及目錄 使用inotify的第一步就是...
inotify和epoll結合使用的小例子
個人能力有限,文中有不當和錯誤給您帶來的不便還請諒解。用inotify可以檢測檔案系統中檔案和目錄發生的變化,而epoll可以同時檢測多個檔案。這裡將epoll和inotify結合起來使用,測試這樣一種情況 指定相應目錄,當目錄中有檔案建立或者刪除時有相應的通知資訊並把檔案新增或者移除epoll的檢...
使用 inotify 監控檔案系統的活動
使用 inotify 監控檔案系統的活動 編寫自己的應用程式或使用開源工具套件 martin streicher web 開發人員,自由職業者 martin streicher 是一位自由 web 開發人員,並且是 linux magazine 的前任主編。martin 擁有 purdue univ...