天天看點

總結之:CentOS 6.5 rsync+inotify實作資料實時同步備份

rsync

   remote sync 遠端同步,同步是把資料從緩沖區同步到磁盤上去的、資料在記憶體緩存區完成之後還沒有寫入到磁盤中去、是以有時候要同步到磁盤中去的,而rsync說白了跟複制差不多、能将一個檔案從一個地方複制到另外一個地方的、但是他也可以實作跨主機複制,兼具了cp和scp的功能,但是在跨主機時不具備scp的加密功能。

   rsync有個特點,就是當你用rsync複制或跨主機複制時如果另一端也有一個同名的檔案,他會先比較這兩個檔案的特征碼是不是一緻,如果不一緻就會複制,并覆寫,如果一緻他将不會複制,是以說這是一個快速複制工具,尤其是同步目錄時,特别好用。

rsync指令的工作模式有四種:

   1、shell模式,也稱為本地模式,速度要比cp快

   2、遠端shell模式,其可以借助于ssh協定承載其資料傳輸過程

   3、清單模式,其工作方式與ls相似,僅列出源的内容:-nv

   4、伺服器模式,此時,rsync可以工作為守護程序,能夠接收用戶端的資料傳輸請求,在使用時可以在用戶端使用rsync指令發送給守護程序,也可以向伺服器主擷取檔案。

rsync指令的選項:

   -n:如果擔心指令執行不正确,一同步複制,可能這個複制的後果是緻命的,那後果可就嚴重了,這裡我們可以加-n先測試一下

   -v: --verbose,詳細輸出模式、顯示詳細過程的

   -q: --quiet,靜默模式,盡可能輸出少的資訊

   -c: --checksum,可以對傳輸的檔案進行較驗的,強制對檔案傳輸進行校驗

   -r: --recursive,遞歸複制

   -a: --archives,歸檔,複制時可以儲存原有的屬主屬主等屬性資訊,甚至包括一點額外的屬性、如通路控制清單

   -p: --perms,儲存檔案的權限

   -t: --times,保留檔案的時間戳

   -l: --links,保留檔案的符号連結

   -g: --group,保留檔案的屬組

   -o: --owner,保留檔案的屬主

   -D: --devices,保留裝置檔案

   -e SSH:遠端複制時,表示使用ssh協定作承載

   -z:基于網絡時使用,對檔案壓縮後傳輸

   --progress:顯示壓縮進度條的

   --stats:顯示如何執行壓縮和傳輸的,也就是顯示傳輸狀态的

注意:rsync指令使用中,如果源參數的末尾有斜線,就會複制指定目錄内容,而不複制目錄本身;沒有斜線,則會複制目錄本身,是以有如下指令:

   # rsync -r /mydata/data /backups/:會把目錄data直接同步至/backups目錄中去

   # rsync -r /mydata/data/ /backups/:會把目錄中的data/中的内容同步至/backups目錄中

rsync本地用法:

   # cd /etc /tmp/

   # rsync /tmp/etc/passwd /tmp/test/passwd -nv

推送到遠端主機上去,把本地的etc檔案推送到172.16.251.244主機上去:

   # rsync -r -e ssh /tmp/etc [email protected]:/tmp/

拉取遠端伺服器上的檔案:

   # rsync -e ssh -r -a [email protected]:/etc/pam.d ./ --stats

把檔案推送到伺服器端上去:

# rsync -auzv messages [email protected]::my_data_rsync

如果我們從伺服器上拉取檔案時必須要指定檔案路徑

# rsync [email protected]::my_data_rsync/messages /tmp/

Inotify

   Inotify 是一個 Linux特性,是一種強大的、細粒度的、異步的檔案系統事件監控機制,linux核心從2.6.13起,加入了Inotify支援,通過Inotify可以監控檔案系統中添加、删除,修改、移動等各種細微事件,利用這個核心接口,第三方軟體就可以監控檔案系統下檔案的各種變化情況,而inotify-tools就是這樣的一個第三方軟體。Inotify 反應靈敏,用法非常簡單,并且比 cron 任務的繁忙輪詢高效得多。

=====================rsync+inotify實作實時同步過程============================================

這裡我們以兩台伺服器來做這個實驗:

總結之:CentOS 6.5 rsync+inotify實作資料實時同步備份

以下步驟在從服務上操作:

配置rsync以daemon的方式運作:也就是在伺服器端以守護程序的方式運作

   1、設定rsync伺服器端

       1)安裝相關的程式包,他是基于xinetd工作的,超級守護程序

       # yum -y install xinetd

       安裝好之後在/etc/xinetd.d/這個目錄下有一個rsync的檔案

       2)為rsync服務提供配置檔案,而他的配置檔案在/etc/rsyncd.conf,這個配置檔案大概由兩部分組成,一部分定義全局的,另一部分可以定義多個rsync共享目錄:    

接下來在内容釋出的伺服器上操作:

   由于inotify特性需要Linux核心的支援,在安裝inotify-tools前要先确認Linux系統核心是否達到了2.6.13以上,如果Linux核心低于2.6.13版本,就需要重新編譯核心加入inotify的支援,也可以用如下方法判斷,核心是否支援inotify:

   # uname -r

   2.6.32-431.el6.x86_64

   檢視核心是否支援inotify API,如果有以下三項,表示系統已經預設支援inotify,接着就可以開始安裝inotify-tools了,我這裡使用的是inotify-tools-3.14.tar.gz。

   # ll /proc/sys/fs/inotify

   -rw-r--r-- 1 root root 0 04-13 19:56 max_queued_events

   -rw-r--r-- 1 root root 0 04-13 19:56 max_user_instances

   -rw-r--r-- 1 root root 0 04-13 19:56 max_user_watches

簡單介紹一下這三個檔案是做什麼用的:

   max_queued_evnets:表示調用inotify_init時配置設定給inotify instance中可排隊的event的數目的最大值,超出這個值的事件被丢棄,但會觸發IN_Q_OVERFLOW事件。

   max_user_instances:表示每一個real user ID可建立的inotify instatnces的數量上限。

   max_user_watches:表示每個inotify instatnces可監控的最大目錄數量。如果監控的檔案數目巨大,需要根據情況,适當增加此值的大小,例如:echo "9000000" > /proc/sys/fs/inotify/max_user_watches

檢視完相關的安裝環境後那接下來我們就可以安裝inotify-tools這個程式包了,安裝步驟很簡單,程式包擷取方法這裡不再提供:

測試一下同步的效果:

總結之:CentOS 6.5 rsync+inotify實作資料實時同步備份
總結之:CentOS 6.5 rsync+inotify實作資料實時同步備份
總結之:CentOS 6.5 rsync+inotify實作資料實時同步備份
總結之:CentOS 6.5 rsync+inotify實作資料實時同步備份
總結之:CentOS 6.5 rsync+inotify實作資料實時同步備份
總結之:CentOS 6.5 rsync+inotify實作資料實時同步備份

結束:

   rsync+inotify實驗完成,測試完全沒問題,成功完成了資料實時同步功能,這裡要說的是如果多台從伺服器的話重複從伺服器的配置步驟即可,再配置内容釋出服務上的多個從伺服器的相關聯的資訊即可以完成一主多從資料實時同步的功能,相信這個也不是什麼難事,對吧,好了,就說到這裡吧,有什麼做得不到位的歡迎大神留言交流。

繼續閱讀