天天看點

rsync+inotify實時同步參考步驟

利用rsync和inotify機制可以實作觸發式的資料備份,也就是實時備份。本地的某個檔案一旦發生變化,就會自動同步到遠端的備份源伺服器上。而不是某個時間段執行備份。

實驗前要解決三點問題:

① 誰是備份源,誰是發起端。(發送連結請求的是發起端,回應請求的是備份源)

② 怎麼察覺本地的檔案發生了變化。(交給inotify機制,Linux核心從2.6.13版本開始提供了inotify通知接口,用來監控檔案系統的各種變化情況,如檔案存取、删除、移動等。利用這一機制,可以非常友善地實作檔案異動告警、增量備份,并針對目錄或檔案的變化及時作出響應。)

③ 怎麼根據目錄或檔案的變化實作發送“備份的請求”進而實作遠端備份的目的。

這裡就要編寫腳本來實作這個功能。

另外,還要解決從監控檔案到遠端備份整個過程中互動式的操作,這裡使用者的互動式認證就要改為秘鑰的驗證方式。

先來看一下我的實驗環境 兩台紅帽6 

發起端: 192.168.2.1

備份源: 192.168.2.2

下面是各個主機的操作

發起端:192.168.2.1

1.要監控目錄或檔案的狀态,要利用inotify-tools工具 解壓安裝

rsync+inotify實時同步參考步驟

make &&  make install 執行編譯安裝

2.建立要監測的目錄,也就是要執行備份的目錄 mkdir /abc 随便建立的 并要有其他使用者的讀取權限

rsync+inotify實時同步參考步驟

3.建立要連結時的ssh 秘鑰 并用備份源(也就是2192.168.2.2)上的使用者拷貝過去

-t 是指定秘鑰的加密類型,執行過程中直接回車,不要設定任何資訊(相當于密保的一個更安全的密碼)

生成的秘鑰在使用者宿主目錄下的 .ssh/下

rsync+inotify實時同步參考步驟

建立過程

rsync+inotify實時同步參考步驟

然後用ssh-copy-id 指令把秘鑰複制到備份源上 robin使用者是備份源主機上事先有的

rsync+inotify實時同步參考步驟

測試用ssh登陸遠端主機是否還用互動式方式驗證

rsync+inotify實時同步參考步驟

4.編寫腳本一會再說 先到備份源上配置

備份源:192.168.2.2

備份源是提供資料備份時提供的位置(路徑)

我就建立根目錄下的BK目錄了 (根據實際情況而定,真是環境肯定是個安全可靠的位置)

并給與robin 寫入的權限 (robin使用者是實作建立好的)為了目錄的安全,建議更改目錄的屬主和屬組,并設定setfacl 限制

rsync+inotify實時同步參考步驟

做好後,再回到發起端上配置腳本。

在配置腳本之前先了解一下inotifywait指令的使用。

”-e”用來指定要監控哪些事件(create,move,delete,modify,attrib 是指監聽”建立 移動 删除 寫入 屬性更改” 事件),選項”-m”表示持續監控,”-r”表示遞歸整個目錄,”-q”表示簡化輸出資訊。

其他選項的含義:

-a 存檔模式

-h 儲存硬連接配接

-z 壓縮檔案資料在傳輸

-t 維護修改時間

--delete 删除于多餘檔案

執行後會占用一個終端,表示在檢測/abc 目錄的變化

rsync+inotify實時同步參考步驟

編寫腳本

第一行不解釋

第二行 定義檢測目錄的變量 直接把監測/abc目錄的指令指派給變量INOTIFY_CMD

第三行 定義執行備份的指令指派給變量RSYNC_CMD

第四行 先執行變量INOTIFY_CMD 并利用grep 把執行變量後的值在賦給變量$AA $BB $CC

第五行 do 循環開始

第六行 利用if判斷語句判斷是否含有*rsync*的程序 如果有 執行第七行的RSYNC_CMD變量并用八九行彈出提示資訊(随意)

第十行if判斷結束

十一行 do結束

rsync+inotify實時同步參考步驟

執行腳本後 凡是/abc 目錄下發生變化 (建立 移動 删除 寫入 屬性更改)

就會彈出echo 後面的資訊 并向備份源備份 如圖:

rsync+inotify實時同步參考步驟

192.168.2.2:/BK

rsync+inotify實時同步參考步驟

給予腳本x執行權限 ,并寫到使用者的登陸的腳本中 這樣使用者一登陸腳本就會執行。

繼續閱讀