Linux中架構中的備份伺服器搭建(rsync)
本期內容概要
- Linux中的備份方式
- 架構中備份伺服器搭建(rsync)
內容詳細
1.備份方式
1. cp : 本機複製(只能作用在本機)
2. scp : 遠程複製
兩種模式:
推 : 本地上傳到遠程伺服器
scp [本地文件路徑] root@遠程的ip地址:[要放到遠程的路徑]
例:
[root@m01 ~]# scp 1.txt [email protected]:/opt/ # 從本地把1.txt文件複製到遠程ip地址為 172.16.1.41的伺服器上
拉 : 把遠程伺服器文件下載到本地
scp root@遠程的ip地址:[遠程的路徑] 要放到本地的地址(路徑)
例:
[root@m01 ~]# scp [email protected]:/opt/2.txt . # 從遠程ip地址為 172.16.1.41的伺服器上把 /opt/2.txt文件複製(下載)到本地的當前目錄下
scp複製 : 只支援全量複製
'''
全量複製:
例如有1TB文件 每次複製都會複製1TB(一般比較浪費頻寬)
'''
3. rsync : 遠程複製 但是支援增量複製
'''
增量複製:
例如有1TB文件 每次複製只複製1GB 每次複製的文件加起來 最終複製到1TB(通過多次複製 減少頻寬佔用 節省資源)
'''
2.rsync介紹
rsync英文稱為:remote synchronizetion
從軟體的名稱就可以看出來,rsync具有可使本地和遠程兩台主機之間的數據快速複製同步鏡像、遠程備份的功能,這個功能類似於ssh帶的scp命令。但是又優於scp命令的功能,scp每次都是全量拷貝,而rsync可以增量拷貝
當然,rsync還可以在本地主機的不同分區或目錄之間全量及增量的複製數據,這又類似cp命令。但是同樣也優於cp命令,cp每次都是全量拷貝,而rsync可以增量拷貝
rsync官方地址://rsync.samba.org/
rsync監聽埠:873
rsync運行模式:C/S client/server
rsync簡稱:遠程同步,可以實現不同主機之間的數據同步,還支援全量和增量
3.rsync特性
支援拷貝特殊文件,如連接文件、設備等
可以有排除指定文件或目錄同步的功能,相當於打包命令tar的排除功能
可以做到保持原文件或目錄的許可權、時間、軟硬鏈接、屬主、組等所有屬性均不改變(–p參數)
可以實現增量同步,既只同步發生變化的數據,因此數據傳輸效率很高(tar-N)
可以使用rcp、rsh、ssh等方式來配合傳輸文件(rsync本身不對數據加密)
可以通過socket(進程方式)傳輸文件和數據(服務端和客戶端)
支援匿名的活認證(無需系統用戶)的進程模式傳輸,可以實現方便安全的進行數據備份和鏡像
4.rsync應用場景
全量備份
增量備份
5.rsync的傳輸方式
push 推:
客戶端將數據從本地推送至服務端
pull 拉:
客戶端將數據從服務端拉取到本地
6.rsync的傳輸模式
1.本地方式(類似於cp,不支援推送和拉取,只是單純的複製)
2.遠程方式(類似於scp,又不同於scp),scp只支援全量備份,rsync支援增量備份和差異備份
3.守護進程方式(客戶端和服務端)
7.rsync使用
# 格式:
推:rsync 參數 [本地文件路徑] root@遠程的ip地址:[要放到遠程的路徑]
例:
[root@m01 ~]# rsync -v 1.txt [email protected]:/opt/ # 從本地把1.txt文件複製到遠程ip地址為 172.16.1.41的伺服器上 /opt/目錄下
拉:rsync 參數 root@遠程的ip地址:[遠程的路徑] 要放到本地的地址(路徑)
例:
[root@m01 ~]# rsync -v [email protected]:/opt/2.txt . # 從遠程ip地址為 172.16.1.41的伺服器上把 /opt/2.txt文件複製(下載)到本地的當前目錄下
# 參數:
-a : 歸檔模式傳輸,等於-tropgDl -t -r -o -p -g -D -l
一般只用 -az即可
-v : 詳細模式輸出,列印速率,文件數量等
[root@m01 ~]# rsync -v 2.txt [email protected]:/opt/
-z : 傳輸時進行壓縮以提高效率
[root@m01 ~]# rsync -vz 2.txt [email protected]:/opt/
-r : 遞歸傳輸目錄及子目錄,即目錄下得所有目錄都同樣傳輸
[root@m01 ~]# rsync -vzr ./a [email protected]:/opt/
-t : 保持文件時間資訊
[root@m01 ~]# rsync -vzrt ./a/b/c/2.txt [email protected]:/opt/
-o : 保持文件屬主資訊
-g : 保持文件屬組資訊
[root@m01 ~]# rsync -vzrtgo ./a/b/c/2.txt [email protected]:/opt/
-p : 保持文件許可權
[root@m01 ~]# rsync -vzrtgop ./a/b/c/2.txt [email protected]:/opt/
-l : 保留軟連接
[root@m01 ~]# rsync -vzrtgopl ./* [email protected]:/opt/
-P : 顯示同步的過程及傳輸時的進度等資訊
[root@m01 ~]# rsync -vzrtgoplP ./* [email protected]:/opt/
-D : 保持設備文件資訊
[root@m01 dev]# rsync -vzrtgDopl /dev/tty1 [email protected]:/opt/
-L : 保留軟連接指向的目標文件
-e : 使用的信道協議,指定替代rsh的shell程式
--append : 指定文件接著上次傳輸中斷處繼續傳輸
[root@m01 ~]# rsync -azP ./* [email protected]:/opt/
--append-verify : 使用參數續傳(在斷點續傳之後,會先驗證一下文件,如果與複製的文件有不同,則修復文件後繼續傳輸)
--exclude=PATTERN : 指定排除不需要傳輸的文件
[root@m01 ~]# rsync -avzP --append-verify --exclude=2.txt ./* [email protected]:/opt/ # 除了2.txt其他文件正常傳輸 2.txt跳過傳輸
--exclude-from=file : 按照文件指定內容排除
[root@m01 ~]# rsync -avzP --append-verify --exclude-from=/tmp/exclude.txt ./* [email protected]:/opt/ # exclude.txt文件內寫入所有不需要傳輸的文件名 那麼exclude.txt內容寫入的文件都不會被傳輸
--bwlimit=100 : 限速傳輸(單位:MB)
[root@m01 ~]# rsync -avzP --append-verify --bwlimit=10 ./* [email protected]:/opt/
--delete : 讓目標目錄和源目錄數據保持一致
--password-file=xxx : 使用密碼文件
--port : 指定埠傳輸
8.rsync守護進程模式
# 1.服務端
01 安裝rsync
[root@backup ~]# yum install -y rsync
02 修改配置文件
[root@backup opt]# 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 backup!
path = /backup
[linux]
comment = welcome to linux!
path=/tmp/linux
03 創建系統用戶
[root@backup opt]# groupadd rsync -g 666
[root@backup opt]# useradd rsync -u 666 -g 666 -M -s /sbin/nologin -r
04 創建密碼文件
[root@backup opt]# echo "rsync_backup:123456" > /etc/rsync.passwd
05 授權(必須授權為600)
[root@backup opt]# chmod 600 /etc/rsync.passwd
06 創建備份目錄
[root@backup opt]# mkdir /backup
[root@backup opt]# mkdir /tmp/linux
07 目錄授權
[root@backup opt]# chown rsync.rsync /backup/
[root@backup opt]# chown rsync.rsync /tmp/linux/
08 關閉防火牆和selinux
[root@backup opt]# systemctl disabel --now firewalld
[root@backup opt]# setenforce 0
09 啟動rsyncd服務
[root@backup opt]# systemctl start rsyncd
--------------------------------------------------------------------------------------------------------------
# 2.客戶端
連接服務端的三種方式(注意 在客戶端執行):
方法一:自己輸入密碼
[root@m01 ~]# rsync -avzP ./* [email protected]::backup
需要自己輸入設置的虛擬用戶密碼:123456
rsync_backup : 虛擬用戶,只在數據傳輸時使用
172.16.1.41 : backup服務端的IP
backup : 模組名稱
方法二:設置密碼文件,運行時讀取(建議使用)
01 編寫密碼文件
[root@m01 ~]# echo "123456" > /etc/rsync.passwd
02 授權
[root@m01 ~]# chmod 600 /etc/rsync.passwd
03 連接服務端同步
[root@m01 ~]# rsync -avzP --password-file=/etc/rsync.passwd ./* [email protected]::linux # 自動讀取密碼無需手動輸入
方法三:添加環境變數
01 定義環境變數
[root@m01 ~]# export RSYNC_PASSWORD=123456
02 開始同步
[root@m01 ~]# rsync -avzP ./* [email protected]::linux # 自動讀取密碼無需手動輸入
--------------------------------------------------------------------------------------------------------------
# 3.rsync實時同步
rsync是不支援實時同步的
通常我們藉助於inotify這個軟體來實時監控文件變化,一旦inotify監控到文件變,則立即調用rsync進行同步
01 安裝inotify(裝在客戶端)
[root@m01 ~]# yum -y install inotify-tools
02 inotify參數介紹
-m : 持續監控
-r : 遞歸
-q : 靜默,僅列印時間資訊
--timefmt : 指定輸出時間格式
--format : 指定事件輸出格式
%Xe : 事件
%w : 目錄
%f : 文件
-e 指定監控的事件
access : 訪問
modify : 內容修改
attrib : 屬性修改
close_write : 修改真實文件內容
open : 打開
create : 創建
delete : 刪除
umount : 卸載
03 開始監控
[root@m01 ~]# /usr/bin/inotifywait -mrq --format '%Xe %w %f' -e create,modify,delete,attrib,close_write /root
04 實時監控並同步
[root@m01 ~]# /usr/bin/inotifywait -mrq --format '%Xe %w %f' -e create,modify,delete,attrib,close_write /root | while read line;do
cd /root
rsync -avzP --delete --password-file=/etc/rsync.passwd ./* [email protected]::backup
done