CentOS7 Rsync服務搭建-Rsync+Inotify架構實現實時同步

一.rsync 概念

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

二.rsync 安裝

yum install rsync -ylinux

三.rsync 的選項說明。

-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

目標服務:

 

五.inotify 部署安裝

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:收集被監視的文件系統使用度統計數據,指定文件系統事件發生的次數統計。

 

七.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. ##指定時間的輸出格式

 

8、測試監控事件(開兩個窗口,一個窗口執行命令,另外一窗口對監控目錄作增、刪、改操做)

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.目標服務器,自動生成文件和修改的內容。

相關文章
相關標籤/搜索