rsync+inotify實時同步參考步驟

 

利用rsync和inotify機制能夠實現觸發式的數據備份,也就是實時備份。本地的某個文件一旦發生變化,就會自動同步到遠程的備份源服務器上。而不是某個時間段執行備份。安全

實驗前要解決三點問題:服務器

① 誰是備份源,誰是發起端。(發送連接請求的是發起端,迴應請求的是備份源)ssh

② 怎麼察覺本地的文件發生了變化。(交給inotify機制,Linux內核從2.6.13版本開始提供了inotify通知接口,用來監控文件系統的各類變化狀況,如文件存取、刪除、移動等。利用這一機制,能夠很是方便地實現文件異動告警、增量備份,並針對目錄或文件的變化及時做出響應。)ide

③ 怎麼根據目錄或文件的變化實現發送「備份的請求」從而實現遠程備份的目的。工具

這裏就要編寫腳原本實現這個功能。測試

另外,還要解決從監控文件到遠程備份整個過程當中交互式的操做,這裏用戶的交互式認證就要改成祕鑰的驗證方式。加密

先來看一下個人實驗環境 兩臺紅帽6  3d

發起端: 192.168.2.1blog

備份源: 192.168.2.2遞歸

下面是各個主機的操做

發起端:192.168.2.1

1.要監控目錄或文件的狀態,要利用inotify-tools工具 解壓安裝

wps_clip_image-1499

make &&  make install 執行編譯安裝

2.建立要監測的目錄,也就是要執行備份的目錄 mkdir /abc 隨便建立的 並要有其餘用戶的讀取權限

wps_clip_image-1502

3.建立要連接時的ssh 祕鑰 並用備份源(也就是2192.168.2.2)上的用戶拷貝過去

-t 是指定祕鑰的加密類型,執行過程當中直接回車,不要設置任何信息(至關於密保的一個更安全的密碼)

生成的祕鑰在用戶宿主目錄下的 .ssh/下

wps_clip_image-699

建立過程

wps_clip_image-17979

而後用ssh-copy-id 命令把祕鑰複製到備份源上 robin用戶是備份源主機上事先有的

wps_clip_image-1576

測試用ssh登錄遠程主機是否還用交互式方式驗證

wps_clip_image-15626

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

備份源:192.168.2.2

備份源是提供數據備份時提供的位置(路徑)

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

並給與robin 寫入的權限 (robin用戶是實現建立好的)爲了目錄的安全,建議更改目錄的屬主和屬組,並設置setfacl 限制

wps_clip_image-12950

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

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

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

其餘選項的含義:

-a 存檔模式

-h 保存硬鏈接

-z 壓縮文件數據在傳輸

-t 維護修改時間

--delete 刪除於多餘文件

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

wps_clip_image-18635

編寫腳本

第一行不解釋

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

第三行 定義執行備份的命令賦值給變量RSYNC_CMD

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

第五行 do 循環開始

第六行 利用if判斷語句判斷是否含有*rsync*的進程 若是有 執行第七行的RSYNC_CMD變量並用八九行彈出提示信息(隨意)

第十行if判斷結束

十一行 do結束

wps_clip_image-4435

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

就會彈出echo 後面的信息 並向備份源備份 如圖:

wps_clip_image-1845

192.168.2.2:/BK

wps_clip_image-9296

給予腳本x執行權限 ,並寫到用戶的登錄的腳本中 這樣用戶一登錄腳本就會執行。

wps_clip_image-18725

!注意若是是字符終端下 腳本會佔用終端。切換終端便可

   END

相關文章
相關標籤/搜索