Linux-(inotify-tools&rsync)

inotifywait命令

mac中的是:fswatch,fsevents-tools。bash

1.命令格式:

inotifywait [參數] [events] [targetDir]socket

2.命令功能:

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

3.命令參數:

inotifywait 最經常使用的選項有兩個:spa

-r 表示遞歸監控子目錄中文件發生的事件code

-e 指定要監控的事件列表。blog

對於備份系統來講,只須要監控 modify、create和delete三種事件就好了。遞歸

4.使用實例:

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

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

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
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息