天天看點

檔案同步rsync

rsync

遠端同步

rsync(remote sync)

備份

完全備份
增量備份(差異備份)
           

rsync

優點:

支援增量備份

選擇性保持:符号連結,硬連結,檔案屬性,權限及時間等。

傳輸前執行壓縮,适合于異地備份,鏡像伺服器等應用。

使用ssh作為傳輸端口,sftp,ssh,xshell 。

與scp差別:

當檔案資料很大時候: scp 的效率太低,(scp是先統計資訊,需要多少空間後,在複制)

rsync 邊複制,邊比較,邊統計

基礎知識

端口:873

模式: 如果直接使用指令rsync,就是點到點。

官網:

http://rsync.samba.org

在遠端同步任務中,負責發起rsync同步操作的客戶機稱為發起端,而負責響應來自客戶機的rsync同步操作的伺服器稱為備份源。

資料同步:

推:push 一台機器負責把資料傳給其他主機,伺服器開銷大。适合後端伺服器比較少。

拉:poll 所有主機定時去找一台主機拉書籍。可能導緻資料同步緩慢。

設計資料同步模式:

當主機資料同步太多是,使用分層,以樹狀的形式。而且推拉結合。

安裝rsync
yum install rsync 

ls /etc/xinetd.d/rsync 

yum install xinnetd 
vim /etc/xinetd.d/rsync 
disenable  no 

netstat -nltup 
tcp 873  
vim /etc/services 
           

總結:xinetd管理rsync服務;工作原理

rsync指令的基本用法:
格式:rsync [選項] 源檔案 目标檔案 
和scp顯示 

-a =-rlptgoD 
-r 遞歸
-l  連接配接  
-p  權限 
-t  保持時間 
-g   保持組 
-o 
-D 
-z  壓縮
-P  進度 
-u  更新 
--port= 
--delete删除源檔案中沒有的資料 
--password-file=FILE 從file中得到密碼 
--bwlimit=KBPS 限制
--filter ''  需要過濾的檔案 
--excu
           
執行個體
建立使用者 

建立目錄 
修改權限 
   setfacl  -R -m user:youdi:rwx  /var/www
    setfacl -R -m d:user:youdi:rwx /var/www 
    
開始備份 
rsync -azP  --delete [email protected]:/  /tmp 

           
實作無密碼備份和登入:
ssh-key -t rsa -f -p''
ssh-copy-id [email protected] 
           
編寫腳本
vim /etc/back.sh 
rsync -az --delete [email protected]:/var/www/html  /tmp/html 
           
計劃任務:
vim /etc/crontab 
 分 時 日 月  周    使用者   腳本 
 
 crontab -e 
 
 備份完打包
  tar cvzf aa.tar.gz  /etc/** 
           
配置rsync伺服器及需要備份的目錄,不使用系統使用者進行備份。
需要自己建立配置檔案:
 /etc/rsync.conf  
 整體部分:
 全局參數:對rsync伺服器生效。如果子產品
 局部參數:
 
 vim /etc/rsync.conf 
  全局參數 
  uid=nobody 
  gid=nobody 
  address = 172.16.1.84 
  port = 83 
  hosts allow =  允許同步的的用戶端 
    IP,network ,* 
    hosts deny =
    use chroot = yes  鎖定家目錄
    maxconnections = 最大連接配接數 
    pid file = 
    lock file = 
    log file = 
    motd file = /etc/rsync.mothod 
    
    子產品參數:
    [wwwroot]
    path=/var/www/html 
    comment=rsync wwwrppt of   描述 
    read only = yes 以隻讀的方式
    list=yes 允許檢視子產品資訊
    auth users=backuper 指定備份的使用者,和系統使用者無關
    secrets file=/etc/rsync.passwd 指點存放使用者和密碼檔案  格式: 使用者名:密碼 
    
vim /etc/rsync.passwd 
   backup:youdi 


修改密碼檔案的權限: 
chmod 600 /etc/rsync.passwd

啟動服務:
vim  /etc/xinetd/rsync

service xinetd restart
           
文法:
rsync 選項 使用者名@備份源伺服器IP::共享子產品名  目标目錄
rsync -azP [email protected]::wwwroot /web-back/
           
實作無互動腳本,備份資料
修改變量: 
    export RSYNC_PASSWORD=pwd123
           
總結:

注意iptables的限制

iptables -t netfilt -A INPUT -p tcp --dport 873 -j ACCEPT 
           
進階 inotify 監控檔案的變化

rsync + inotify

linux核心從2.6.13版本開始開始提供inotify通知接口,用來監控檔案系統的各種變化情況,如檔案存取,删除,移動等。利用這一機制,可以非常友善的實作檔案異動告警,增量備份,并針對目錄或檔案的變化及時作出響應。

應用

防首頁篡改

使用rsync工具與inotify機制相結合,可以實作出發時備份(實時同步),隻是原始位置的文檔發生變化,則立即啟動自動增量備份操作,否則處于靜态等待,這樣一來,就可以避免了按固定周期備份進存在的延遲性,周期過密等問題。

擴充:
uname -r 
/proc/sys/fs/inotify 
max_queued_events  #表示監控事件隊列 
 max_user_instances  #表示最多監控執行個體數
 max_user_watches  #表示每個執行個體最多監控檔案數 

修改: 
/etc/sysctl.conf 
fs.inotify.max_queued_events = 32768 
fs.inotify.max_user_instances = 1024 
fs.inotify.max_user_watches = 9000000

使得配置檔案生效: 
sysctl -p 

安裝inotify-tools
安裝inotify-tools,提供inotyfywait,inotifywatch輔助工具程式,進而來監控,彙總檔案系統改動情況。 


./configure --prefixe 
make -j 4  使用4個CPU一起編譯 
make install 

測試: 
使用inotifywait指令監控網站的/www/html


inotifywait 
-e 用來指定要監控哪些事件 
    這些事件包含:create建立,move移動。delete删除,motify修
    改檔案内容,attrib屬性更改。
-m  表示持續監控
-r 表示遞歸整個目錄
-q 表示簡化輸出資訊。


inotifywait -mrq -e create,move,delete,motify  /var/www

inotify -rmq 檔案目錄 
使用inotify輸出監控結果中,每行記錄中依次包括目錄,事件,檔案。據此可以識别變動情況。編寫觸發式同步腳本。

第一:
備份方向,遠端備份,不需要使用者和密碼。同步不使用root使用者。
第二:編寫觸發式腳本:
#!/bin/bash 
echo aaa bbb ccc |while read a b c  
  do 
     echo $a 
     echo $b 
     echo $c 
done 

思路:隻要檢測到變動或事件時,執行rsync上的同步操作即可。
#!/bin/bash 
inotifywait -mrq   /var/www/html |while read a b c 
do 
   rsync -azp --delete  /var/www/html  [email protected]:/tmp 
   
優化:
#!/bin/bash 
SRC=/boot/
[email protected]:/tmp 

inotifywait -mrq $SRC |while read a b c 
do 
  /usr/bin/rsync  -ahqzt --delete $SRC $DST 
done 

使其開機自動啟動:
/etc/rc.local
           

圖示

另外,金山Sersync是一款基于 inotify + rsync 的大量檔案的多伺服器自動同步程式。推薦使用。