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 的大量檔案的多伺服器自動同步程式。推薦使用。