使用inotify-tools與rsync構建即時備份系統

來源:互聯網
上載者:User

標籤:關注   監控   $0   conf   表示   刪除   c中   set   tar   

使用inotifywait監控檔案變動

inotifywait是 inotify-tools 包中提供的一個工具,它使用 inotify API 來監控檔案/目錄中的變動情況。

在archlinux上,我們可以使用下面命令來安裝

sudo pacman -S --noconfirm inotify-tools

平時 inotifywait 會掛起在那裡,直到檔案/目錄發生了要引起關注的事件後,它會退出並輸出事件發生的場所、事件的名稱以及引起事件的檔案(當事件發生在目錄上時才會輸出).

inotifywait 最常用的選項有兩個,一個是 -r 一個是 -e ,其中:

-r
表示遞迴監控子目錄中檔案發生的事件
-e
指定要監控的事件列表。對於備份系統來說,只需要監控 modify、create和delete三種事件就行了。

比如,我們運行

inotifywait -r -e modify,create,delete /tmp

表示監控 /tmp 目錄及其子目錄中檔案修改、檔案建立和檔案刪除三種事件。

這時程式一直在掛起狀態

[[email protected] ~]$ inotifywait -r -e modify,create,delete /tmpSetting up watches.  Beware: since -r was given, this may take a while!Watches established.

這時在 /tmp 目錄下建立一個檔案

touch /tmp/newFile

則 inotifywait 進程退出,並輸出如下資訊

/tmp/ CREATE newFile
使用rsync同步變動

rsync是一款快速增量備份工具。它的具有以下幾個特點使得它很適合用作做備份的工具:

  • 增量備份,只會傳輸修改過的內容
  • 可以在傳輸過程中即時解壓縮,減少頻寬消耗
  • 可以保持原來檔案的許可權、事件、軟永久連結
  • 即支援本機複製,也支援遠程複製

rsync常用法為:

rsync -avz --delete  src/ foo:/data

其中

-a
表示archive mode,即備份目錄下的所有內容(包括子目錄中的內容),並且保持軟連結、檔案屬性、檔案修改事件、檔案的所有者和宿主資訊不變,並且同步字元/塊裝置以及命名socket和fifo等特殊檔案。
-v
表示輸出備份的詳細資料
-z
表示傳輸時進行壓縮
–delete
刪除備份目的地裡src中沒有的檔案
src/
表示要備份的是src目錄下的所有內容,注意這裡最後的  / 不能去掉,否則會把src目錄本身備份過去
foo:/data
表示備份的目的地是foo主機下的  /data/ 目錄
整合起來

接下來我們只需要用個 while 死迴圈把兩個工具整合起來就行了,非常簡單

#!/bin/bashif [[ $# -ne 2 ]];then    cat<<EOFUsage $(basename $0) source_dir [host:]dest_dirEOF    exit 0fisource_dir=$1dest_dir=$2while :do    inotifywait -r -e modify,create,delete ${source_dir} && rsync -avz ${source_dir}/ ${dest_dir} --deletedone

這裡有必要說明的是,雖然用 inotifywait 能探測出檔案具體做了什麼改動,但實際上我們根本不需要知道具體的改變是什麼。

我們只需要知道有所改變了,然後具體改變了什麼由 rsync 來自己處理就行了。

原文地址:https://lujun9972.github.io/blog..

使用inotify-tools與rsync構建即時備份系統

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.