使用csync2 inotify實現檔案實時同步

2021-05-17 18:22:42 字數 3823 閱讀 3239

注:要使用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...