rsync+inotify實時數據同步單目錄實戰

rsync+inotify實時數據同步單目錄實戰

 

rsync+inotify實時數據同步單目錄實戰linux

 

inotify是一個強大的、細粒度的、異步的文件系統事件監控機制,linux內核從2.6.13起加入了inotify支持,經過inotify能夠監控文件系統中添加、刪除、修改、移動等各類事件,利用這個內核接口,第三方軟件能夠監控文件系統下文件的各類變化狀況,而inotify-tools正是實施監控的軟件。git

 

inotify配置是創建在rsync服務基礎上的配置過程github

操做系統bash

主機名 網卡eth0 默認網關 用途
root@58server1 192.168.1.111 192.168.1.1 Rsync服務端
root@58client 192.168.1.121 192.168.1.1 Rsync 節點

子網掩碼均爲255.255.255.0服務器

 

具體需求:併發

要求在58server1上以rsync守護進程的方式部署rsync服務,使得root@58client的 rsync節點客戶端主機,能夠把本地數據經過rsync的方式備份到數據備份服務器58server1上,本例的客戶端僅以58client爲例異步

 

1、在配置inotify前己經把root@58server1 Rsync服務端的rsync服務部置好post

如今在58client服務器中安裝部置inotify監控服務測試

配置rsync服務略ui

 

 

2、開始安裝inotify

在安裝inotify-tools前請先確認你的linux內核是否達到了2.6.13,而且在編譯時開啓CONFIG_INOTIFY選項,

1)  查看當前系統是否支持inotify

 

 

2)下載inotify源碼包

 

 

3)編譯安裝inotfiy

參數:

--prefix=PATH   指定編譯安裝的路徑

提示:更多的編譯參數能夠使用./configure –h 查看,編譯成功後會生成4個目錄,

小軟件通常規範安裝到同一個目錄,通常爲/usr/local中

創建一個軟連接

 

 

進入安裝inotify的目錄

查看是否編譯成功,

使用echo $?  返回0表示成功

 

只關注下面兩個文件

bin

|-- inotifywait

`-- inotifywatch

 

./bin/inotifywait –help

 

 

 

 

4) 編寫inotify實時監控腳本

 

事件相關參數大小:

默認:

[root@58client inotify]# cat /proc/sys/fs/inotify/max_user_watches

8192

[root@58client inotify]# cat /proc/sys/fs/inotify/max_queued_events

16384

[root@58client inotify]# cat /proc/sys/fs/inotify/max_user_instances

128

併發大時能夠修改增大這些參數

 

開始編寫inotify腳本

host rsync服務器地址

src本地目錄  dst模塊  要和/etc/rsyncd.conf中的模塊名對應

user 用戶

rsync_passfile密碼文件

inotify_home  inotify定義inotifywait的目錄

 

#jude下面的內容是檢查上面參數是否存在

判斷$src目錄的變化等參數

while reade file死循環,經過|管道實時讀取上面事件的變化,一講取到就循環執行如下命令進行推送

通過測試,每秒200個文件併發,數據同步幾乎無延盡(小於1秒)

 

 

5) 測試rsync是否成功推送

[root@58server1 backup]# rsync -avz -P --delete /backup rsync_backup@192.168.1.111::backup/ --password-file=/etc/rsync.password

 

 

 

通常添加了腳本後要格式化一次腳本

 

 

6) 在客戶端運行腳本

sh -x inotify.sh

 

使腳本在後臺運行

[root@58client scripts]# sh inotify.sh &

 

 

[root@58client dingjian]# for n in `seq 10000`;do /bin/cp /bin/cat /dingjian/cat$n;done

 

服務端

[root@58server1 dingjian]# ls -l /dingjian|wc -l

 

查看客戶端58client後臺運行的inotify腳本進程

[root@58client scripts]# ps -ef|grep inotify

 

 

相關文章
相關標籤/搜索