1. 程式人生 > >Linux-(inotify-tools&rsync構建實時備份系統)

Linux-(inotify-tools&rsync構建實時備份系統)

rsync -av src 所有者 delete linux 目的 增量 arc 內容

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構建實時備份系統)