Linux中架構中的備份伺服器搭建(rsync)

  • 2021 年 12 月 29 日
  • 筆記

本期內容概要

  • 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