Linux-(inotify-tools&rsync構建實時備份系統)
inotifywait命令
mac中的是:fswatch,fsevents-tools。
1.命令格式:
inotifywait [參數] [events] [targetDir]
2.命令功能:
平時 inotifywait 會掛起在那裏,直到文件/目錄發生了要引起關註的事件後,它會退出並輸出事件發生的場所、事件的名稱以及引起事件的文件(當事件發生在目錄上時才會輸出).
3.命令參數:
inotifywait 最常用的選項有兩個:
-r 表示遞歸監控子目錄中文件發生的事件
-e 指定要監控的事件列表。
對於備份系統來說,只需要監控 modify、create和delete三種事件就行了。
4.使用實例:
inotifywait -r -e modify,create,delete /tmp
表示監控 /tmp 目錄及其子目錄中文件修改、文件創建和文件刪除三種事件。
rsync命令
1.命令格式:
rsync [參數] [原目錄] [目標目錄]
2.命令功能:
rsync是一款快速增量備份工具。它的具有以下幾個特點使得它很適合用作做備份的工具:
-
增量備份,只會傳輸修改過的內容
-
可以在傳輸過程中實時解壓縮,減少帶寬消耗
-
可以保持原來文件的權限、事件、軟硬鏈接
-
即支持本機復制,也支持遠程復制
3.命令參數:
-a 表示archive mode,即備份目錄下的所有內容(包括子目錄中的內容),並且保持軟鏈接、文件屬性、文件修改事件、文件的所有者和宿主信息不變,並且同步字符/塊設備以及命名socket和fifo等特殊文件。
-v 表示輸出備份的詳細信息
-z 表示傳輸時進行壓縮
–delete 刪除目標目錄中源目錄中沒有的文件
4.使用實例:
rsync -avz --delete src/ foo:/data
src/ 表示要備份的是src目錄下的所有內容,註意這裏最後的 / 不能去掉,否則會把src目錄本身備份過去
foo:/data 表示備份的目的地是foo主機下的 /data/ 目錄
構建實時備份系統
用個 while 死循環把兩個工具整合起來
#!/bin/bash if [[ $# -ne 2 ]];then cat<<EOF Usage $(basename$0) source_dir [host:]dest_dir EOF exit 0 fi source_dir=$1 dest_dir=$2 while : do inotifywait -r -e modify,create,delete ${source_dir} && rsync -avz ${source_dir}/ ${dest_dir} --delete done
Linux-(inotify-tools&rsync構建實時備份系統)