1.rsync
rsync是類unix/linux系統下的數據鏡像備份工具。使用快速增量備份工具Remote Sync能夠遠程同步,支持本地複製,或者與其餘SSH、rsync主機同步。rsync是經過超級守護進程xinetd進行觸發同步和管理的。CentOS6.4默認已經安裝rsync,但未安裝xinetdhtml
2.inotify
Inotify 是一種強大的、細粒度的、異步的文件系統事件監控機制,linux內核從2.6.13起,加入了Inotify支持,經過Inotify能夠監控文件系統中添加、修改、移動等各類細微事件,利用這個內核接口,第三方軟件就能夠監控文件系統下文件的各類變化狀況,而inotify-tools就是這樣的一個第三方軟件。
三、rsync+inotify 之推薦理由
1)服務器性能:rsync+crontab會定時去檢查是否有文件更新,即使沒有更新也會去檢查,這勢必會形成服務器性能降低;而rsync+inotify組合是觸發式更新,只有在數據文件有變化時,纔會去更新,所以相對前者而言,是提升了服務器性能
2)數據實時性:rsync+crontab是週期性任務計劃,不能保證數據的實時性;rsync+inotify組合是觸發式更新,只要有數據變化,就馬上同步更新
3)當同步的目錄數據量巨大時,建議使用 Rsync+sersync 架構,具體配置參考:http://www.osyunwei.com/archives/7447.htmlnode
yum install rsync -ylinux
-a,--archive(存檔) 歸模式,表示以遞歸的方式傳輸文件,而且保持文件屬性,等同於加了參數-rlptgoDgit
-r,–recursive 對子目錄以遞歸模式處理github
-l,--links 表示拷貝連接文件shell
-p , --perms 表示保持文件原有權限bash
-t , --times 表示保持文件原有時間服務器
-g , --group 表示保持文件原有屬用戶組架構
-o , --owner 表示保持文件原有屬主less
-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 root@192.168.1.196:/home
目標服務:
1.下載網址
wget http://github.com/downloads/rvoicilas/inotify-tools/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:收集被監視的文件系統使用度統計數據,指定文件系統事件發生的次數統計。
# ./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.目標服務器,自動生成文件和修改的內容。