1.備份的基礎概念知識
1.什么是備份?
備份就是把自己認為重要的文件復制一份存放起來 (給源文件增加一個 副本)
2.為什么要備份?
數據比較重要
防止出現故障(軟件故障 認為故障占比80%) 能保證快速恢復整個系統的運轉
3.能不能不備份?
可以 對於自己絕對不重要的文件 可以不備份
4.備份通常使用什么工具?
本地備份 cp
遠程備份 scp rsync
2.什么是rsync
rsync簡稱遠程同步 可以實現不同主機之間的同步 同時支持增量和全量的備份
不同主機 windows-->linux linux-->linux macos-->linux macos-->windows
3.rsync是如何實現的備份
全量:完全備份 效率低
增量:差異備份 效率高
4.rsync使用場景
rsync數據傳輸模式:push推 lull拉
推(上傳):客戶端將需要備份的文件發送到服務器
拉(下載):客戶端從服務端下載需要的文件
rsync數據傳輸模式-->問題
推(下載):如果機器過多 容易造成推送數據緩慢
拉(下載):如果客戶端過多 會造成服務端壓力過大
比如:現在有20台計算機 怎么有效的緩解推送和拉取問題
多服務器使用場景
異地備份
5.rsync傳輸模式
三種傳輸模式:
1.本地傳輸 cp
2.遠程傳輸 scp
3.守護進程 進程放在后台運行--->進程
Local: rsync [OPTION...] SRC... [DEST]
命令 選項 源文件 目標位置
PS:不支持推送和拉取 單純的復制 cp命令本地備份是覆蓋形式而 rsync是差異形式
Access via remote shell: (基於ssh協議)
文件
上傳 Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
[root@nfs ~]# tsync -avz ./lisong.txt root@172.16.1.41:/opt/
推送本地文件至172.16.1.41服務器的/opt目錄下 使用41的root用戶完成此操作
下載 Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
[root@nfs ~]# rsync -avz root@172.16.1.41:/opt/lisong.txt ./
下載172.16.1.41服務器opt目錄下的lisong.txt文件至本地當前目錄使用root用戶完成此操作
目錄
上傳
1.[root@nfs ~]# rsync -avz /etc/ root@172.16.1.41:/opt
推送etc下面的所有文件到172.16.1.41服務器的opt目錄下
2.[root@nfs ~]# rsync -avz /etc root@172.16.1.41:/opt
推送etc整個目錄到172.16.1.41服務器的opt目錄下
例:nfs推送/etc目錄到backup服務器上面名字叫(etc-nfs-172.16.1.31-今天時間)
rsync -avz /etc root@172.16.1.99:/root/etc-nfs-172.16.1.31-$(date +%F)
web推送/etc目錄到backup服務器上面名字叫(etc-web-172.16.1.7)
rsync -avz /etc root@172.16.1.99:/root/etc-web-172.16.1.7
下載:遠程同步弊端
1.需要使用系統的用戶
root 權限太高
普通用戶 權限不足
6.守護進程 將程序運行在后台
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
安裝
yum install -y rsync
配置
查詢配置文件:rpm -qc rsync
/etc/rsyncd.conf
/etc/sysconfig/rsyncd
編寫配置文件:vim /etc/rsyncd.conf
加入以下配置
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[backup]
comment = welcome to oldboyedu backup!
path = /backup
解釋:
配置詳解
gid = rsync # 運行進程的用戶組
port = 873 # 監聽端口
fake super = yes # 無需讓rsync以root身份運行,允許接收文件的完整屬性
use chroot = no # 禁錮推送的數據至某個目錄, 不允許跳出該目錄
max connections = 200 # 最大連接數
timeout = 600 # 超時時間
ignore errors # 忽略錯誤信息
read only = false # 對備份數據可讀寫
list = false # 不允許查看模塊信息
auth users = rsync_backup # 定義虛擬用戶,作為連接認證用戶
secrets file = /etc/rsync.passwd # 定義rsync服務用戶連接認證密碼文件路徑
comment = commit # 模塊注釋信息
path = /backup # 定義接收備份數據目錄
1.需要創建一個rsync進程運行時使用的普通用戶---->rsync
useradd rsync -M -s /sbin/nologin
-M 不創建家目錄
-s 指定用戶的登錄方式
2.服務端需要定義一個客戶端鏈接時的虛擬用戶和密碼
echo "rsync_backup:123456" > /etc/rsync.passwd
chmod 600 /etc/rsync.passwd
此文件必須是600權限
3.准備模塊定義好的目錄 客戶端的數據都存放在該目錄下
mkdir /backup
chomn -R rsync.rsync /backup/
4.啟動rsync並加入開機自啟
systemctl start rsyncd
systemctl enable rsyncd
systemctl status rsync
5.檢查rsync的進程\端口
pa aux | grep rsync
netstat -lntp | grep 873
6.客戶端測試
backup屬於服務端--->百度網盤
nfs屬於客戶端--->PC電腦
推送數據:
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST #遠程連接方式:路徑
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST #守護進程方式::模塊名稱rsync -
avz lisong.txt rsync_backup@172.16.1.99::backup
將客戶端的lisong.txt推送到99服務器的backup模塊下 使用rsync_backup虛擬用戶認證
下載數據:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync -avz rsync_backup@172.16.1.99::backup/lisong.txt ./
將服務端的backup模塊下的lisong.txt文件下載到本地的當前目錄下使用虛擬用戶認證
rsync -avz rsync_backup@172.16.1.99::backup ./
將服務器的backup模塊下的所有文件下載到本地的當前目錄使用虛擬用戶認證
1.無差異同步
客戶端---->push--->服務端 以客戶端為准
rsync -avz /root/ rsync_backup@172.16.1.99::backup
上傳root目錄下的所有文件到99服務器的backup模塊下
rsync -avz /root/ --delete rsync_backup172.16.1.99::backup
上傳root目錄下的所有文件到99服務器的backup模塊下並保持服務器的文件與客戶端一致
客戶端--->pull--->服務端 以服務端為准
rsync -avz rsync_backup@172.16.1.41::backup ./
下載99服務器上面backup模塊下的所有文件到當前目錄下
rsync -avz --delete rsync_backup@172.16.1.41::backup ./
下載99服務器上面backup模塊下的所有文件到當前目錄下並保持文件與服務端一致
2.對同步進行限速100MB * = 800兆 --dwlimit MB * 8 = 實際帶寬100MB
模擬環境創建一個大小500M的文件
dd if=/dev/zero of=./size.disk bs=1M count=500
測試
rsync -avzP --bwlimit 1 ./size.disk rsync_backup@172.16.1.99::backup
-P 顯示傳輸速度
傳輸指定文件到99服務器的backup模塊下限制傳輸速度為1MB
3.排除不同的文件
使用命令:--exclude= #指定某個文件
--exclude-from #指定某個文件里面要排除的文件
rsync -avz /root/ --exclude=size.disk rsync_backup@172.16.1.99::backup
上傳root目錄下的所有文件到99服務器的backup模塊下並排除size.bisk文件
rsync -avz /root/ --exclude-from peichu.txt rsync_backup@172.16.1.99::backup
上傳root目錄下的所有文件到99服務器的backup模塊下並排除peichu.txt文件里面寫的文件名
4.客戶端免密傳輸
方式一:--password-file
模擬環境創建:
echo "123456" > /etc/rsync.pass
chmod 600 /etc/rsync.pass
測試:
rsync -avz /root/ rsync_backup@172.16.1.99::backup --password-file=/etc/rsync.pass
傳輸root目錄下的所有文件到99服務器的backup模塊下 指定密碼文件位置實現免密傳輸
方式二:export RSYNC_PASSWORD="密碼" 只在本中斷生效"臨時生效"
rsync -avz /root/ rsync_backup@172.16.1.99::backup
傳輸root目錄下的所有文件到99服務器的root目錄下通過上面指定的密碼實現臨時免密傳輸
7.rsync相關參數:
-a #歸檔模式傳輸, 等於-tropgDl
-v #詳細模式輸出, 打印速率, 文件數量等
-z #傳輸時進行壓縮以提高效率
-r #遞歸傳輸目錄及子目錄,即目錄下得所有目錄都同樣傳輸。
-t #保持文件時間信息
-o #保持文件屬主信息
-p #保持文件權限
-g #保持文件屬組信息
-l #保留軟連接
-P #顯示同步的過程及傳輸時的進度等信息
-D #保持設備文件信息
-L #保留軟連接指向的目標文件
-e #使用的信道協議,指定替代rsh的shell程序
--exclude=PATTERN #指定排除不需要傳輸的文件模式
--exclude-from=file #文件名所在的目錄文件
--bwlimit=100 #限速傳輸
--partial #斷點續傳
--delete #讓目標目錄和源目錄數據保持一致