實(shí)踐排除復(fù)制:
NFS01:
[root@nfs01 ~]# mkdir /data -p
[root@nfs01 ~]# cd /data
[root@nfs01 /data]# touch {a..d}
[root@nfs01 /data]# ls
a ?b ?c ?d
--exclude 排除參數(shù)
例:排除 a b
[root@nfs01 /data]# rsync -avz /data/ --exclude=a --exclude=b ?rsync_backup@172.16.1.41::backup
sending incremental file list
./
c
d
排除1到4
[root@nfs01 /data]# touch {1..5}
[root@nfs01 /data]# rsync -avz /data/ --exclude={1..4} ?rsync_backup@172.16.1.41::backup
sending incremental file list
./
5
a
b
[root@nfs01 /data]# rsync -avz /data/ --exclude={1,3,a} ?rsync_backup@172.16.1.41::backup
sending incremental file list
2
4
--exclude-from 從文件排除
[root@nfs01 /data]# rsync -avz /data/ --exclude-from=./paichu.txt ?rsync_backup@172.16.1.41::backup
sending incremental file list
./
16
17
18
19
20
paichu.txt
實(shí)踐刪除:
rsync作為鏡像,相當(dāng)于raid1,讓兩臺(tái)服務(wù)器目錄保持一致八堡。
--delete 讓兩臺(tái)服務(wù)器目錄保持一致
推送:
rsync -avz --delete /data/ ?rsync_backup@172.16.1.41::backup
本地目錄有啥玄叠,遠(yuǎn)端就有啥。
注意:遠(yuǎn)端目錄是不是東西更多挎春,多了東西會(huì)被刪除。提前備份backup對(duì)應(yīng)的目錄。
rsync -avz --delete rsync_backup@172.16.1.41::backup /data/?
遠(yuǎn)端有啥躺苦。本地目錄就有啥,注意本地/data目錄产还。把/data改成根匹厘。提前注意備份本地/data
--partial 支持大文件斷點(diǎn)續(xù)傳
--bwlimit=KBPS 限速。
企業(yè)案例:
某上市公司脐区,白天高峰期某DBA人員從數(shù)據(jù)庫(kù)服務(wù)器通過(guò)rsync將上百GB數(shù)據(jù)復(fù)制到備份服務(wù)器愈诚,導(dǎo)致數(shù)據(jù)庫(kù)庫(kù)服務(wù)器帶寬占滿,造成用戶無(wú)法訪問(wèn)網(wǎng)站的悲劇牛隅。其實(shí)可以利用rsync限速功能炕柔,將復(fù)制速度限制在剩余帶寬的1/3或者1/2蚯根,可能就不會(huì)出現(xiàn)故障了
1)最簡(jiǎn)單的實(shí)現(xiàn)摩疑,可以在配置文件結(jié)尾加如下內(nèi)容(特殊底紋部分):
[root@backup ~]# cat /etc/rsyncd.conf
#rsync_config_______________start
#created by oldboy
#site: http://www.oldboyedu.com
uid = rsync
gid = rsync
use chroot = no
fake super = yes
max connections = 200
timeout = 600?
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = welcome to oldboyedu backup.
path = /backup/
[data] ? ? ? ? #<==新模塊。
path = /data/ ?#<==新備份目錄迂求。
#除了增加以上兩行外默伍,讀者也可以設(shè)定更多的獨(dú)立配置參數(shù)欢嘿,例如:獨(dú)立虛擬用戶衰琐,獨(dú)立密碼文件等。
2)建立目錄并授權(quán)炼蹦。
[root@backup ~]# mkdir -p /data
[root@backup ~]# chown -R rsync.rsync /data
[root@backup ~]# ls -ld /data
drwxr-xr-x 2 rsync rsync 6 4月 ?16 10:04 /data
3)重啟rsync服務(wù)(只要修改配置羡宙,就考慮重載服務(wù))
[root@backup ~]# systemctl restart rsyncd
4)從客戶端訪問(wèn)測(cè)試
[root@backup ~]# ls /data
etc
1、內(nèi)部人員產(chǎn)生的數(shù)據(jù)(定時(shí)備份足矣):
程序員開(kāi)發(fā)代碼(他電腦上)==>代碼服務(wù)上(git/svn代碼版本管理)==>測(cè)試環(huán)境測(cè)試===>正式環(huán)境
原則上程序代碼可以不備份框弛。
運(yùn)維人員辛辨,寫個(gè)定時(shí)任務(wù),寫個(gè)備份腳本瑟枫,更改或增加服務(wù)配置rsyncd.conf斗搞,需要備份
運(yùn)維人員修改配置(測(cè)試服務(wù)器)==>代碼服務(wù)器上(git/svn代碼版本管理)==>測(cè)試環(huán)境測(cè)試===>正式環(huán)境
原則上運(yùn)維人員的變更可以不備份。
2慷妙、用戶產(chǎn)生的數(shù)據(jù)(必須實(shí)時(shí)備份)
圖片僻焚、視頻等文件是放在存儲(chǔ)服務(wù)器上的,任意時(shí)刻都可能傳上來(lái)膝擂,必須實(shí)時(shí)備份虑啤。
文本(博客文章),放在數(shù)據(jù)庫(kù)里架馋,狞山,任意時(shí)刻都可能發(fā)布,必須實(shí)時(shí)備份叉寂。
第一個(gè)里程碑:
41搭建好rsync服務(wù)萍启,并在31、7上測(cè)試成功屏鳍。
第二個(gè)里程碑 開(kāi)發(fā)腳本打包備份
/backup 備份目錄
/var/spool/cron/root /etc/rc.local /server/scripts /var/html/www /app/logs 需要備份的內(nèi)容
模擬創(chuàng)建:
[root@nfs01 ~]# mkdir -p /server/scripts
[root@web01 ~]# mkdir -p /server/scripts /var/html/www /app/logs
web01:
[root@web01 ~]# mkdir -p /backup
[root@web01 ~]# ls -ld /backup/
drwxr-xr-x 2 root root 6 4月 ?16 11:36 /backup/
[root@web01 /]# tar zcvhf /backup/bak_$(date +%F_%w).tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /var/html/www /app/logs?
tar: 從成員名中刪除開(kāi)頭的“/”
/var/spool/cron/root
/etc/rc.local
/server/scripts/
/var/html/www/
/app/logs/
[root@web01 /]# ls /backup/
bak_2019-04-16_2.tar.gz
寫腳本:
[root@web01 /]# mkdir /server/scripts/ -p
[root@web01 /]# cd /server/scripts/
[root@web01 /server/scripts]# cat ?/server/scripts/bak.sh?
[root@web01 /server/scripts]# cat bak.sh?
#!/bin/sh
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
export RSYNC_PASSWORD=oldboy
IP=$(hostname -i)
mkdir -p /backup/$IP
#1.打包
tar zchf /backup/$IP/bak_$(date +%F_%w).tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /var/html/www /app/logs &>/dev/null &&\
#2.刪除
find /backup/ -type f -name "*.tar.gz" -mtime +7|xargs rm -f &&\
#3.推送
rsync -az /backup/ rsync_backup@172.16.1.41::backup &>/dev/null
[root@web01 /server/scripts]# /bin/sh /server/scripts/bak.sh?
[root@web01 /server/scripts]# ls /backup/
bak_2019-04-16_2.tar.gz
定時(shí)任務(wù):
[root@web01 /server/scripts]# crontab -e
[root@web01 /server/scripts]# crontab -l|tail -2
######back.....
00 00 * * * /bin/sh /server/scripts/bak.sh >/dev/null 2>&1
[root@web01 /server/scripts]# find /backup/ -type f -name "*.tar.gz" -mtime +7|xargs rm -f
確保備份完整勘纯。
做flag和采集指紋
[root@nfs01 /server/scripts]# #采集人的指紋
[root@nfs01 /server/scripts]# md5sum oldboy.txt >zhiwen.log
[root@nfs01 /server/scripts]# cat zhiwen.log?
348bd3ce10ec00ecc29d31ec97cd5839 ?oldboy.txt
[root@nfs01 /server/scripts]# #校驗(yàn)
[root@nfs01 /server/scripts]# md5sum -c zhiwen.log?
oldboy.txt: 確定
[root@web01 /server/scripts]# cat bak.sh?
#!/bin/sh
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
export RSYNC_PASSWORD=oldboy
IP=$(hostname -i)
mkdir -p /backup/$IP
#1.打包
tar zchf /backup/$IP/bak_${IP}_$(date +%F_%w).tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /var/html/www /app/logs &>/dev/null &&\
touch /backup/$IP/bak_${IP}_$(date +%F_%w).flag &&\
#采集指紋
find /backup/ -type f -name "*.tar.gz"|xargs md5sum >/backup/$IP/bak_${IP}_$(date +%F_%w).flag &&\
#2.刪除
find /backup/ -type f -name "*.tar.gz" -mtime +7|xargs rm -f &&\
#3.推送
rsync -az /backup/ rsync_backup@172.16.1.41::backup &>/dev/null
bak_172.16.1.7_2019-04-16_2.tar.gz ?
bak_172.16.1.7_2019-04-17_3.tar.gz ?
bak_172.16.1.7_2019-04-18_4.tar.gz ?
bak_172.16.1.7_2019-04-16_2.tar.gz ?