第1章 Rsync基本概述 1.1 什麼是Rsync rsync是一款開源,快速,多功能的可實現增量的本地或遠程的數據鏡像同步備份的優秀工具。適用於多個平臺。從軟體名稱可以看出來是遠程同步的意思(remote sync)可實現全量備份與增量備份,因此非常適合用於架構集中式備份或異地備份等應用。 1. ...
第1章 Rsync基本概述
1.1 什麼是Rsync
rsync是一款開源,快速,多功能的可實現增量的本地或遠程的數據鏡像同步備份的優秀工具。適用於多個平臺。從軟體名稱可以看出來是遠程同步的意思(remote sync)可實現全量備份與增量備份,因此非常適合用於架構集中式備份或異地備份等應用。
1.1.1 rsync官方地址
1.1.2 rsync監聽埠
873
1.1.3 rsync運行模式
C/S 客戶端/服務端
B/S 瀏覽器/服務端
1.1.4 rsync備份方式
全量備份
將客戶端所有的數據內容全都備份到服務端
增量備份
將客戶端數據內容(不包含已備份到服務端的內容)增量備份到服務端
1.2 Rsync傳輸方式及應用場景
1.2.1 上傳(推)
所有主機推送本地數據至Rsync備份伺服器,會導致數據同步緩慢(適合少量數據備份)
機器量不是很多的時候,可以使用推送
1.2.2 下載(拉)
rsync備份服務端拉取所有主機上的數據,會導致備份伺服器開銷大
機器量很大的時候,推和拉協同使用
1.3 Rsync傳輸模式
Rsync大致使用三種主要的數據傳輸方式
1.3.1 本地方式(單個主機本地之間的數據傳輸,類似cp命令)
Local:
本地傳輸
Local: rsync [OPTION...] SRC... [DEST]
rsync ---備份命令(cp)
[options] ---選項
SRC... ---本地源文件
[DEST] ---本地目標文件
[root@backup ~]# rsync -avz /etc/passwd /tmp/ [root@backup ~]# ls /tmp/passwd /tmp/passwd
1.3.2 遠程方式通過(ssh通道傳輸數據,類似scp命令)
Access via remote shell: 遠程傳輸
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] 下載(拉)
Pull ---拉取, 下載
rsync ---備份命令
[options] ---選項
[USER@] ---目標主機的系統用戶
HOST ---目主機IP地址或功能變數名稱
SRC... ---目標主機源文件
[DEST] ---下載至本地哪個位置
下載pull
[root@nfs ~]# pwd /root [root@nfs ~]# echo "This Nfs" > file [root@backup ~]# rsync -avz [email protected]:/root/file /opt/ [root@backup ~]# cat /opt/file This Nfs
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST 上傳(推)
Push ---推,上傳
rsync ---備份命令
[options] ---選項
SRC... ---本地源文件
[USER@] ---目標主機的系統用戶
HOST ---目主機IP地址或功能變數名稱
[DEST] ---目標對應位置
上傳push(將backup的file2文件上傳至NFS伺服器的/mnt目錄)
[root@backup ~]# pwd /root [root@backup ~]# echo "This Rsync" > file2 [root@backup ~]# rsync -avz /root/file2 [email protected]:/mnt [root@nfs ~]# cat /mnt/file2 This Rsync
推送目錄(推送/root/目錄下麵的所有文件和目錄,不會推送/root/目錄本身)
[root@backup ~]# rsync -avz /root/ [email protected]:/tmp /root/
推送目錄,推送目錄本身以及目錄下麵的所有文件
[root@backup ~]# rsync -avz /root [email protected]:/tmp /root
遠程方式存在的缺陷:
1.需要使用系統用戶(不安全)
2.使用普通用戶(許可權存在問題)
3.需要走ssh協議
1.3.3 守護進程(服務,持續後臺運行)
Access via rsync daemon: 守護進程方式傳輸
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync ---命令
[OPTION...] ---選項
[USER@] ---遠程主機用戶(虛擬用戶)
HOST:: ---遠程主機地址
SRC... ---遠程主機模塊(不是目錄)
[DEST] ---將遠程主機數據備份至本地什麼位置
拉取rsync備份服務的backup模塊數據至本地/mnt目錄
[root@nfs01 ~]# rsync -avz [email protected]::backup/ /mnt/ Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync ---命令
[OPTION...] ---選項
SRC... ---遠程主機模塊(不是目錄)
[USER@] ---遠程主機用戶(虛擬用戶)
HOST:: ---遠程主機地址
[DEST] ---將遠程主機模塊備份至本地什麼位置
將本地/mnt目錄推送至rsync備份伺服器的backup模塊
[root@nfs01 ~]# rsync -avz /mnt/ rsync_backup@192.172.16.1.41::backup/
1.4 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 |
讓目標目錄和源目錄數據保持一致 謹慎使用 |
第2章 Rsync服務配置
2.1 需要準備兩台伺服器
角色 |
外網IP(NAT) |
內網IP(LAN) |
主機名 |
Rsync服務端 |
eth0:10.0.0.41 |
eth1:172.16.1.41 |
backup |
Rsync客戶端 |
eth0:10.0.0.31 |
eth1:172.16.1.31 |
nfs |
2.2 安裝rsync
[root@backup ~]# yum install rsync -y
2.3 配置rsync
查詢配置文件存放的路徑
[root@backup ~]# rpm -qc rsync /etc/rsyncd.conf
進行配置
[root@backup ~]# vi /etc/rsyncd.conf 先把原有的內容清除,這裡要用vi進行編輯,不能使用vim 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.password log file = /var/log/rsyncd.log ##################################### [backup] comment = welcome to oldboyedu backup! path = /backup
2.3.1 配置內容解釋
# 全局模塊 uid = rsync --- 運行進程的用戶 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服務用戶連接認證密碼文件路徑 ##局部模塊 [backup] --- 定義模塊信息 comment = commit --- 模塊註釋信息 path = /backup --- 定義接收備份數據目錄
2.4 創建用戶(運行rsync服務的用戶身份)
2.4.1 創建rsync賬戶,不允許登錄不創建家目錄
[root@backup ~]# useradd -M -s /sbin/nologin rsync
2.4.2 創建備份目錄(儘可能磁碟空間足夠大),授權rsync用戶為屬主
[root@backup ~]# mkdir /backup [root@backup ~]# chown -R rsync.rsync /backup/
2.5 創建虛擬用戶密碼文件(用於客戶端連接時使用的用戶)
創建虛擬用戶和密碼文件,並賦予600許可權
[root@backup ~]# echo "rsync_backup:1" >/etc/rsync.password 密碼設置為1 [root@backup ~]# chmod 600 /etc/rsync.password
2.6 啟動rsync服務,並加入開機自啟
[root@backup ~]# systemctl start rsyncd [root@backup ~]# systemctl enable rsyncd
2.7 啟動後檢查對應埠
[root@bogon ~]# netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 4758/rsync
第3章 Rsync服務實踐
rsync實現簡單的本地打包和推送
3.1 將客戶端的/etc/passwd 推送至 rsync服務端[backup]
rsync [OPTION...] SRC... [USER@]HOST::DEST
[root@nfs ~]# rsync -avz /etc/passwd [email protected]::backup
3.2 將rsync服務端模塊[/backup]下載至本地
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
[root@nfs ~]# rsync -avz [email protected]::backup /opt
3.3 同步時不輸入密碼[第一種方式,sersync]
在服務端創建密碼文件並賦予600許可權
[root@nfs ~]# echo "1" >/etc/rsync.password 這裡1代表密碼,密碼要和服務端的一致 [root@nfs ~]# chmod 600 /etc/rsync.password
執行rsync服務端模塊[/backup]下載至本地的命令加--password-file=/etc/rsync.password
[root@nfs ~]# rsync -avz [email protected]::backup /opt --password-file=/etc/rsync.password
3.4 同步時不輸入密碼[第二種方式:寫腳本時使用]
export RSYNC_PASSWORD=1 設置RSYNC_PASSWORD環境變數=1 這裡的1是密碼,密碼要和服務端的一致 [root@nfs ~]# rsync -avz [email protected]::backup /opt
第4章 Rsync常見故障
4.1 服務未開啟
4.1.1 開啟服務
systemctl start rsyncd netstat -lntp 查看埠
4.2 防火牆和selinux未關閉
4.2.1 關閉防火牆
systemctl disable firewalld
systemctl stop firewalld
4.2.2 關閉selinux
sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
4.3 密碼輸入錯誤
4.4 命令格式錯誤
4.5 密碼文件許可權必須是600
chmod 600 /etc/rsync.password
4.6 rsync配置錯誤
vi /etc/rsyncd.conf
4.7 備份目錄屬主錯誤
chown -R rsync.rsync /backup/