文件同步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 youdi@172.16.1.84:/  /tmp 

實現無密碼備份和登錄:
ssh-key -t rsa -f -p''
ssh-copy-id youdi@172.16.1.84 
編寫腳本
vim /etc/back.sh 
rsync -az --delete youdi@172.16.1.84:/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 bckup@172.16.1.84::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  youdi@172.16.1.5:/tmp 
   
優化:
#!/bin/bash 
SRC=/boot/
DST=youdi@172.16.1.5:/tmp 

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

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

另外,金山Sersync是一款基于 inotify + rsync 的大量文件的多服務器自動同步程序。推薦使用。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • rsync介紹 我們經常需要在不同目錄或者服務器之間做文件同步和更新,LINUX提供了很多內置命令可以使用比如SC...
    狗狗胖妞閱讀 482評論 0 0
  • 一、什么是rsync rsync是一款開源,快速,多功能的可實現增量的本地或遠程的數據鏡像同步備份的優秀工具。適用...
    逗比punk閱讀 2,467評論 0 1
  • 4層負載均衡和7層負載均衡的區別。A、rsync的安裝;軟件包安裝# yum install rsync 注...
    米開朗基樂閱讀 3,700評論 0 1
  • 說明: 操作系統:CentOS 5.X 源服務器:192.168.21.129 目標服務器:192.168.21....
    好一朵閱讀 1,287評論 0 0
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139