rsync
遠(yuǎn)程同步
rsync(remote sync)
備份
完全備份
增量備份(差異備份)
rsync
優(yōu)點(diǎn):
支持增量備份
選擇性保持:符號(hào)鏈接懊烤,硬鏈接,文件屬性,權(quán)限及時(shí)間等澎粟。
傳輸前執(zhí)行壓縮,適合于異地備份欢瞪,鏡像服務(wù)器等應(yīng)用活烙。
使用ssh作為傳輸端口,sftp遣鼓,ssh啸盏,xshell 。
與scp區(qū)別:
當(dāng)文件數(shù)據(jù)很大時(shí)候: scp 的效率太低骑祟,(scp是先統(tǒng)計(jì)信息回懦,需要多少空間后,在復(fù)制)
rsync 邊復(fù)制次企,邊比較怯晕,邊統(tǒng)計(jì)
基礎(chǔ)知識(shí)
端口:873
模式: 如果直接使用命令rsync,就是點(diǎn)到點(diǎn)缸棵。
官網(wǎng): http://rsync.samba.org
在遠(yuǎn)程同步任務(wù)中,負(fù)責(zé)發(fā)起rsync同步操作的客戶機(jī)稱為發(fā)起端蛉谜,而負(fù)責(zé)響應(yīng)來(lái)自客戶機(jī)的rsync同步操作的服務(wù)器稱為備份源稚晚。
數(shù)據(jù)同步:
推:push 一臺(tái)機(jī)器負(fù)責(zé)把數(shù)據(jù)傳給其他主機(jī),服務(wù)器開(kāi)銷(xiāo)大型诚。適合后端服務(wù)器比較少客燕。
拉:poll 所有主機(jī)定時(shí)去找一臺(tái)主機(jī)拉書(shū)籍≌幔可能導(dǎo)致數(shù)據(jù)同步緩慢也搓。
設(shè)計(jì)數(shù)據(jù)同步模式:
當(dāng)主機(jī)數(shù)據(jù)同步太多是,使用分層涵紊,以樹(shù)狀的形式傍妒。而且推拉結(jié)合。
安裝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
總結(jié):xinetd管理rsync服務(wù);工作原理
rsync命令的基本用法:
格式:rsync [選項(xiàng)] 源文件 目標(biāo)文件
和scp顯示
-a =-rlptgoD
-r 遞歸
-l 連接
-p 權(quán)限
-t 保持時(shí)間
-g 保持組
-o
-D
-z 壓縮
-P 進(jìn)度
-u 更新
--port=
--delete刪除源文件中沒(méi)有的數(shù)據(jù)
--password-file=FILE 從file中得到密碼
--bwlimit=KBPS 限制
--filter '' 需要過(guò)濾的文件
--excu
實(shí)例
創(chuàng)建用戶
創(chuàng)建目錄
修改權(quán)限
setfacl -R -m user:youdi:rwx /var/www
setfacl -R -m d:user:youdi:rwx /var/www
開(kāi)始備份
rsync -azP --delete youdi@172.16.1.84:/ /tmp
實(shí)現(xiàn)無(wú)密碼備份和登錄:
ssh-key -t rsa -f -p''
ssh-copy-id youdi@172.16.1.84
編寫(xiě)腳本
vim /etc/back.sh
rsync -az --delete youdi@172.16.1.84:/var/www/html /tmp/html
計(jì)劃任務(wù):
vim /etc/crontab
分 時(shí) 日 月 周 用戶 腳本
crontab -e
備份完打包
tar cvzf aa.tar.gz /etc/**
配置rsync服務(wù)器及需要備份的目錄摸柄,不使用系統(tǒng)用戶進(jìn)行備份颤练。
需要自己創(chuàng)建配置文件:
/etc/rsync.conf
整體部分:
全局參數(shù):對(duì)rsync服務(wù)器生效。如果模塊
局部參數(shù):
vim /etc/rsync.conf
全局參數(shù)
uid=nobody
gid=nobody
address = 172.16.1.84
port = 83
hosts allow = 允許同步的的客戶端
IP驱负,network 嗦玖,*
hosts deny =
use chroot = yes 鎖定家目錄
maxconnections = 最大連接數(shù)
pid file =
lock file =
log file =
motd file = /etc/rsync.mothod
模塊參數(shù):
[wwwroot]
path=/var/www/html
comment=rsync wwwrppt of 描述
read only = yes 以只讀的方式
list=yes 允許查看模塊信息
auth users=backuper 指定備份的用戶,和系統(tǒng)用戶無(wú)關(guān)
secrets file=/etc/rsync.passwd 指點(diǎn)存放用戶和密碼文件 格式: 用戶名:密碼
vim /etc/rsync.passwd
backup:youdi
修改密碼文件的權(quán)限:
chmod 600 /etc/rsync.passwd
啟動(dòng)服務(wù):
vim /etc/xinetd/rsync
service xinetd restart
語(yǔ)法:
rsync 選項(xiàng) 用戶名@備份源服務(wù)器IP::共享模塊名 目標(biāo)目錄
rsync -azP bckup@172.16.1.84::wwwroot /web-back/
實(shí)現(xiàn)無(wú)交互腳本跃脊,備份數(shù)據(jù)
修改變量:
export RSYNC_PASSWORD=pwd123
總結(jié):
注意iptables的限制
iptables -t netfilt -A INPUT -p tcp --dport 873 -j ACCEPT
進(jìn)階 inotify 監(jiān)控文件的變化
rsync + inotify
linux內(nèi)核從2.6.13版本開(kāi)始開(kāi)始提供inotify通知接口宇挫,用來(lái)監(jiān)控文件系統(tǒng)的各種變化情況,如文件存取酪术,刪除器瘪,移動(dòng)等。利用這一機(jī)制绘雁,可以非常方便的實(shí)現(xiàn)文件異動(dòng)告警橡疼,增量備份,并針對(duì)目錄或文件的變化及時(shí)作出響應(yīng)咧七。
應(yīng)用
防首頁(yè)篡改
使用rsync工具與inotify機(jī)制相結(jié)合衰齐,可以實(shí)現(xiàn)出發(fā)時(shí)備份(實(shí)時(shí)同步),只是原始位置的文檔發(fā)生變化继阻,則立即啟動(dòng)自動(dòng)增量備份操作耻涛,否則處于靜態(tài)等待,這樣一來(lái)瘟檩,就可以避免了按固定周期備份進(jìn)存在的延遲性抹缕,周期過(guò)密等問(wèn)題。
擴(kuò)展:
uname -r
/proc/sys/fs/inotify
max_queued_events #表示監(jiān)控事件隊(duì)列
max_user_instances #表示最多監(jiān)控實(shí)例數(shù)
max_user_watches #表示每個(gè)實(shí)例最多監(jiān)控文件數(shù)
修改:
/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輔助工具程序卓研,從而來(lái)監(jiān)控,匯總文件系統(tǒng)改動(dòng)情況。
./configure --prefixe
make -j 4 使用4個(gè)CPU一起編譯
make install
測(cè)試:
使用inotifywait命令監(jiān)控網(wǎng)站的/www/html
inotifywait
-e 用來(lái)指定要監(jiān)控哪些事件
這些事件包含:create創(chuàng)建奏赘,move移動(dòng)寥闪。delete刪除,motify修
改文件內(nèi)容磨淌,attrib屬性更改疲憋。
-m 表示持續(xù)監(jiān)控
-r 表示遞歸整個(gè)目錄
-q 表示簡(jiǎn)化輸出信息叹侄。
inotifywait -mrq -e create,move,delete,motify /var/www
inotify -rmq 文件目錄
使用inotify輸出監(jiān)控結(jié)果中茎用,每行記錄中依次包括目錄,事件鸥跟,文件搪锣。據(jù)此可以識(shí)別變動(dòng)情況秋忙。編寫(xiě)觸發(fā)式同步腳本。
第一:
備份方向,遠(yuǎn)程備份构舟,不需要用戶和密碼灰追。同步不使用root用戶。
第二:編寫(xiě)觸發(fā)式腳本:
#!/bin/bash
echo aaa bbb ccc |while read a b c
do
echo $a
echo $b
echo $c
done
思路:只要檢測(cè)到變動(dòng)或事件時(shí)旁壮,執(zhí)行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
優(yōu)化:
#!/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
使其開(kāi)機(jī)自動(dòng)啟動(dòng):
/etc/rc.local
另外,金山Sersync是一款基于 inotify + rsync 的大量文件的多服務(wù)器自動(dòng)同步程序抡谐。推薦使用裁奇。