備份數(shù)據(jù)的重要性以及rsync的基本使用
備份數(shù)據(jù)的重要性和必要性
為啥需要進行數(shù)據(jù)備份
我們需要對一些比較重要的數(shù)據(jù)進行備份,防止數(shù)據(jù)的丟失
數(shù)據(jù)備份的方式
全量備份 --- 會將所有的數(shù)據(jù)進行備份,效率比較低下
增量備份 --- 只是將變動的數(shù)據(jù)進行備份,效率比較高,并且適合進行異地備份
數(shù)據(jù)備份的工具
scp:網(wǎng)絡(luò)之間的拷貝,全量的拷貝方式,不推薦
rsync:遠(yuǎn)程增量備份工具
rsync的介紹
rsync是linux系統(tǒng)下的數(shù)據(jù)鏡像備份工具。使用快速增量備份工具Remote Sync可以遠(yuǎn)程同步,支持本地復(fù)制,或者與其他SSH、rsync主機同步。
rsync的工作原理和場景
推:所有主機推送本地數(shù)據(jù)到Rsync備份服務(wù)器,會導(dǎo)致數(shù)據(jù)同步緩慢(適合少量的數(shù)據(jù)備份)

拉:rsync備份服務(wù)端拉取所有主機上的數(shù)據(jù),會導(dǎo)致備份服務(wù)器開銷過大

rsync大數(shù)據(jù)量備份

rsync異地數(shù)據(jù)備份

rsync數(shù)據(jù)傳輸方式
主要分成三種方式:
本地傳輸 (類似于cp命令)
遠(yuǎn)程傳輸(從a主機 ----> b主機)
守護進程 (運行一個程序在后臺)
rsync的參數(shù)介紹
rsync參數(shù):-avz-a #歸檔模式傳輸, 等于-tropgDl-v #詳細(xì)模式輸出, 打印速率, 文件數(shù)量等-z #傳輸時進行壓縮以提高效率-r #遞歸傳輸目錄及子目錄,即目錄下得所有目錄都同樣傳輸。-t #保持文件時間信息-o #保持文件屬主信息-p #保持文件權(quán)限-g #保持文件屬組信息-l #保留軟連接-P #顯示同步的過程及傳輸時的進度等信息-D #保持設(shè)備文件信息-L #保留軟連接指向的目標(biāo)文件-e #使用的信道協(xié)議,指定替代rsh的shell程序 ssh--exclude=PATTERN #指定排除不需要傳輸?shù)奈募J?/span>--exclude-from=file #文件名所在的目錄文件--bwlimit=100 #限速傳輸--partial #斷點續(xù)傳--delete #讓目標(biāo)目錄和源目錄數(shù)據(jù)保持一致
注意:一般我們只需要使用avz這三個參數(shù)即可本地傳輸
由于本地傳輸,我們一般用cp就可以了,所以本地傳輸使用rsync大材小用
遠(yuǎn)程傳輸
1.推送方式
廢話不多說,直接看例子
rsync -avz anaconda-ks.cfg [email protected]:/tmp將本地的 anaconda-ks.cfg 文件,推送到192.168.79.1的tmp目錄下面,使用的是root身份推送
2.拉取方式
rsync -avz [email protected]:/tmp/services ./將遠(yuǎn)程服務(wù)器192.168.79.1的tmp目錄下面的services,拉取到當(dāng)前目錄下面
但是上述傳輸方式存在兩個問題:
1.使用系統(tǒng)用戶(不安全) 2.使用普通用戶(會導(dǎo)致權(quán)限不足情況)
因此,接下來,我們使用后臺進程的方式,來進行文件的傳輸:
后臺服務(wù)進程方式
具體的命令格式如下:
下載 Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]上傳 Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
在使用上述命令格式之前,我們需要進行前期的配置,如下:
a.先來看一下實驗環(huán)境:
主機角色 ? ? ? ?外網(wǎng)IP(NAT) ? ? ? 內(nèi)網(wǎng)IP(LAN) ? ? ? 主機名稱?
Rsync服務(wù)端 ? ? ? ?10.0.0.41 ? ? ? 172.16.1.41 ? ? backup?
Rsync客戶端 ? ? ? ?10.0.0.31 ? ? ? 172.16.1.31 ? ?nfs
b.需要在服務(wù)端安裝rsyncd服務(wù)
yum install rsync -y
c.配置服務(wù)
[root@backup ~]# rpm -qc rsync/etc/rsyncd.conf # 主配置文件/etc/sysconfig/rsyncd # 選項[root@backup ~]# vim /etc/rsyncd.confuid = rsync # 運行進程的用戶gid = rsync # 運行進程的用戶組port = 873 # 監(jiān)聽端口fake super = yes # 無需讓rsync以root身份運行,允許接收文件的完整屬性use chroot = no # 禁錮推送的數(shù)據(jù)至某個目錄, 不允許跳出該目錄max connections = 200 # 最大連接數(shù)timeout = 600 # 超時時間ignore errors # 忽略錯誤信息read only = false # 對備份數(shù)據(jù)可讀寫list = false # 不允許查看模塊信息auth users = rsync_backup # 定義虛擬用戶,作為連接認(rèn)證用戶secrets file = /etc/rsync.passwd # 定義rsync服務(wù)用戶連接認(rèn)證密碼文件路徑[backup] # 定義模塊信息comment = commit # 模塊注釋信息path = /backup # 定義接收備份數(shù)據(jù)目錄
c.創(chuàng)建rsync進程啟動時需要使用的用戶
[root@backup ~]# useradd rsync -M -s /sbin/nologin[root@backup ~]# id rsyncuid=1000(rsync) gid=1000(rsync) groups=1000(rsync)
d.創(chuàng)建密碼文件,在密碼文件中寫入對應(yīng)的虛擬用戶以及虛擬用戶的密碼
/etc/rsync.passwd---》rsync虛擬用戶以及rsync虛擬用戶的密碼[root@backup ~]# echo "rsync_backup:123456" > /etc/rsync.passwd[root@backup ~]# chmod 600 /etc/rsync.passwd
e.創(chuàng)建存儲備份數(shù)據(jù)的目錄,并進行授權(quán)
[root@backup ~]# mkdir /backup[root@backup ~]# chown -R rsync.rsync /backup/
f.啟動rsync服務(wù)并加入開機自啟動
[root@backup ~]# systemctl start rsyncd.service[root@backup ~]# systemctl enable rsyncd檢查rsync的873端口是否存在[root@backup ~]# netstat -lntpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program nametcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 11129/rsync
g.客戶端開始進行測試
客戶端nfs推送(注意加/ 和不加/的區(qū)別)[root@nfs ~]# rsync -avz /etc/ [email protected]::backup #推送/etc/下面的內(nèi)容[root@nfs ~]# rsync -avz /etc [email protected]::backup #推送/etc這個目錄客戶端拉取[root@nfs ~]# rsync -avz [email protected]::backup /opt拉取服務(wù)端172.16.1.41的backup目錄下面的所有內(nèi)容至本地的 /opt目錄
在上述過程中,我們需要注意下面幾點:
注意事項:
rsync_backup:客戶端通過該虛擬用戶連接rsync服務(wù)
是一個虛擬用戶,由服務(wù)端的配置文件中定義【auth users】
通常存放在指定的一個文件中,該文件也是有服務(wù)端配置文件定義【secrets file】rsync:【模塊對應(yīng)的目錄,必須授權(quán)為配置文件中定義的uid和gid的用戶】
用于運行rsync服務(wù)時需要使用到的系統(tǒng)用戶
用于將接收到的數(shù)據(jù)以自己的身份寫入到對應(yīng)的目錄中
到此,使用后臺進程的方式配置完成
rsync實現(xiàn)客戶端與服務(wù)端無差異同步
簡單點說,就是在客戶端這邊刪除了文件的話,則服務(wù)端同步的那個文件也會被刪掉
具體實現(xiàn)的命令:
#推送方式實現(xiàn)無差異,以客戶端為準(zhǔn),客戶端有什么服務(wù)端就有什么[root@nfs ~]# rsync -avz --delete /root [email protected]::backup#拉取方式實現(xiàn)無差異,以服務(wù)端為準(zhǔn),服務(wù)端有什么客戶端就有什么[root@nfs ~]# rsync -avz --delete [email protected]::backup /opt/
rsync 傳輸?shù)臅r候限速
有的時候,我們傳輸文件會占滿整個帶寬,因此,為了避免這種情況,我們會對傳輸?shù)乃俣冗M行限制
具體實現(xiàn)的命令如下:
對傳輸時候進行限速:[root@nfs ~]# dd if=/dev/zero of=./size.disk bs=1M count=500 生成大文件限制傳輸?shù)乃俾蕿?MB[root@nfs ~]# rsync -avzP --bwlimit=1 ./size.disk [email protected]::backupPassword:sending incremental file listsize.disk118,358,016 22% 1.01MB/s 0:06:33
上述中,--bwlimit代表的就是限速,單位是MB/S
