一.rsync 概念 1.rsyncrsync是類unix/linux系統下的數據鏡像備份工具。使用快速增量備份工具Remote Sync可以遠程同步,支持本地複製,或者與其他SSH、rsync主機同步。rsync是通過超級守護進程xinetd進行觸發同步和管理的。CentOS6.4預設已經安裝rs ...
一.rsync 概念
1.rsync
rsync是類unix/linux系統下的數據鏡像備份工具。使用快速增量備份工具Remote Sync可以遠程同步,支持本地複製,或者與其他SSH、rsync主機同步。rsync是通過超級守護進程xinetd進行觸發同步和管理的。CentOS6.4預設已經安裝rsync,但未安裝xinetd
2.inotify
Inotify 是一種強大的、細粒度的、非同步的文件系統事件監控機制,linux內核從2.6.13起,加入了Inotify支持,通過Inotify可以監控文件系統中添加、修改、移動等各種細微事件,利用這個內核介面,第三方軟體就可以監控文件系統下文件的各種變化情況,而inotify-tools就是這樣的一個第三方軟體。
3、rsync+inotify 之推薦理由
1)伺服器性能:rsync+crontab會定時去檢查是否有文件更新,即便沒有更新也會去檢查,這勢必會造成伺服器性能下降;而rsync+inotify組合是觸髮式更新,只有在數據文件有變化時,才會去更新,因此相對前者而言,是提高了伺服器性能
2)數據實時性:rsync+crontab是周期性任務計劃,不能保證數據的實時性;rsync+inotify組合是觸髮式更新,只要有數據變化,就立刻同步更新
3)當同步的目錄數據量巨大時,建議使用 Rsync+sersync 架構,具體配置參考:http://www.osyunwei.com/archives/7447.html
二.rsync 安裝
yum install rsync -y
三.rsync 的選項說明。
-a,--archive(存檔) 歸模式,表示以遞歸的方式傳輸文件,並且保持文件屬性,等同於加了參數-rlptgoD
-r,–recursive 對子目錄以遞歸模式處理
-l,--links 表示拷貝鏈接文件
-p , --perms 表示保持文件原有許可權
-t , --times 表示保持文件原有時間
-g , --group 表示保持文件原有屬用戶組
-o , --owner 表示保持文件原有屬主
-D , --devices 表示塊設備文件信息
-z , --compress 表示壓縮傳輸
-H 表示硬連接文件
-A 保留ACL屬性信息
-P 顯示傳輸進度
-u, --update 僅僅進行更新,也就是跳過所有已經存在於目標位置,並且文件時間晚於要備份的文件。(不覆蓋更新的文件)
--port=PORT 指定其他的rsync服務埠 873
--delete 刪除那些目標位置有而原始位置沒有的文件
--password-file=FILE 從FILE中得到密碼
--bwlimit=KBPS 限制I/O帶寬,Kbytes /second
--filter “- 文件名”需要過濾的文件
--exclude= :需要過濾的文件
-v 顯示同步過程的詳細信息
四.測試環境
1.環境
數據伺服器: 192.168.1.195
目標伺服器:192.168.1.196
2.免秘鑰登錄伺服器
3.同步命令:
[root@master home]#rsync -avz /home/backup [email protected]:/home
目標服務:
五.inotify 部署安裝
1.下載網址
wget http://github.com/downloads/inotify-tools-3.14.tar.gz
2.安裝
#tar -zxvf inotify-tools-3.14.tar.gz
#cd inotify-tools-3.14
#./configure --prefix=/usr/local/inotify-tools-3.14
#make && make install
#ln -s /usr/local/inotify-tools-3.14/ /usr/local/inotify-tools ##創建軟鏈接
#cd /usr/local/inotify-tools
##提示編譯成功後會生成4個目錄,分別是:
#ll
total 16
drwxr-xr-x. 2 root root 4096 Jan 31 01:55 bin ##inotify執行命令(二進位)
drwxr-xr-x. 3 root root 4096 Jan 31 01:55 include ##inotify程式所需用的頭文件
drwxr-xr-x. 2 root root 4096 Jan 31 01:55 lib ##動態鏈接的庫文件
drwxr-xr-x. 4 root root 4096 Jan 31 01:55 share ##幫助文檔
六.工具集合介紹:
一共安裝了2個工具(命令),即inotifywait和inotifywatch
inotifywait:在被監控的文件或目錄上等待特定文件系統事件(open、close、delete等)發生,執行後處於阻塞狀態,適合在shell腳本中使用。
inotifywatch:收集被監視的文件系統使用度統計數據,指定文件系統事件發生的次數統計。
七.inotify命令常用參數詳解:
# ./bin/inotifywait --help
inotifywait 3.14
Wait for a particular event on a file or set of files.
Usage: inotifywait [ options ] file1 [ file2 ] [ file3 ] [ ... ]
Options:
-r|--recursive Watch directories recursively. ##遞歸查詢目錄
-q|--quiet Print less (only print events) ##列印很少的信息,僅僅列印監控相關的信息
-m|--monitor Keep listening for events forever. Without
this option, inotifywait will exit after one
event is received. ##始終保持事件監聽狀態
--excludei <pattern>
Like --exclude but case insensitive. ##排除文件或目錄時,不區分大小寫
--timefmt <fmt> strftime-compatible format string for use with
%T in --format string. ##指定時間的輸出格式
八、測試監控事件(開兩個視窗,一個視窗執行命令,另一視窗對監控目錄做增、刪、改操作)
1.測試腳本
1 #!/bin/bash 2 3 #實行當前命令後,界面處於阻塞狀態,只有在另外一個客戶端測試時,才會顯示監控狀態 4 5 /usr/local/inotify-tools/bin/inotifywait -mrq -e modify,create,move,delete,attrib /home/backup |while read events 6 7 do 8 rsync -a --delete /home/backup 192.168.1.196::test 9 echo "`date +'%F %T'` 出現事件 $events" >>/tmp/rsync.log 2>&1 10 done
2.目標主機添加test用戶
[root@node01 backup]# vi /etc/rsyncd.conf (配置文件最下麵添加)
[test]
path = /home/
read only = false
uid = root
gid = root
3.執行命令
[root@master inotify-tools]# nohup ./rsync_back.sh &
4.開啟另一個視窗執行刪除, 修改,創建等命令
5.查看nohup的日誌
6.目標伺服器,自動生成文件和修改的內容。