rsync守護進程模式備份數(shù)據(jù)原理 (用戶身份轉(zhuǎn)換過程)
第一步: 客戶端 --> 服務端 發(fā)送請求傳輸數(shù)據(jù)信息 執(zhí)行命令 有認證用戶信息 傳輸數(shù)據(jù)信息
第二步: 服務端 --> 客戶端 接收到傳輸數(shù)據(jù)信息 審核認證用戶
發(fā)送回復信息 需要認證密碼
第三步: 客戶端 --> 服務端 發(fā)送請求傳輸數(shù)據(jù)信息 發(fā)送認證密碼信息
第四步: 服務端 --> 客戶端 發(fā)送確認信息
第五步: 客戶端 --> 服務端 用戶攜帶數(shù)據(jù)通過網(wǎng)絡進行傳輸 需要對用戶身份進行轉(zhuǎn)換 --> rsync (配置文件指定)
第六部: 服務端 --> 客戶端 發(fā)送數(shù)據(jù)存儲完畢確認信息 將數(shù)據(jù)保存到備份目錄中 備份目錄權(quán)限屬主為rsync
修改備份數(shù)據(jù)屬主和屬組信息 rsync用戶身份修改文件權(quán)限
錯誤說明:
chgrp ".hosts.Zb1kyS" (in backup) failed: Operation not permitted (1)
chgrp change group ownership(修改數(shù)據(jù)屬組信息)
[oldboy@backup ~]$ chgrp oldgirl oldboy
chgrp: changing group of 'oldboy': Operation not permitted
[oldboy@backup ~]$ chgrp oldgirl /etc/hosts
chgrp: changing group of '/etc/hosts': Operation not permitted
解釋說明:
普通用戶無法修改文件的屬組信息
#####補充: 配置文件參數(shù)
fake super = yes --- 讓指定虛擬用戶偽裝成管理員用戶, 可以強行修改文件屬主屬組權(quán)限信息
rsync命令參數(shù)說明
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
歸檔模式參數(shù); 等價于 -rlptgoD
-r, --recursive recurse into directorie
遞歸傳輸目錄
-l, --links copy symlinks as symlinks
備份傳輸軟鏈接文件保持屬性不變
-L, --copy-links transform symlink into referent file/dir
備份傳輸軟連接文件時,會將源文件內(nèi)容信息進行傳輸備份
-p, --perms preserve permissions
保持權(quán)限信息不變 644 755
-t, --times preserve modification times
保持文件修改時間不變
-o, --owner preserve owner (super-user only)
保持文件屬主信息不變
-g, --group preserve group
保持文件屬組信息不變
-D same as --devices --specials
保持設(shè)備文件屬性信息不變 c b s
-v, --verbose increase verbosity
傳輸備份數(shù)據(jù)詳細過程信息
-P same as --partial --progress
傳輸進度信息
--exclude=PATTERN exclude files matching PATTERN
根據(jù)指定數(shù)據(jù)信息進行排除
--exclude-from=FILE read exclude patterns from FILE
根據(jù)指定文件進行批量排除數(shù)據(jù)信息
--delete delete extraneous files from destination dirs
進行無差異同步傳輸數(shù)據(jù)
同步目錄數(shù)據(jù)信息時, 保證目錄中數(shù)據(jù)信息一模一樣
-z, --compress compress file data during the transfer
在傳輸數(shù)據(jù)時,對文件進行壓縮傳輸
--bwlimit=RATE limit socket I/O bandwidth
限制傳輸速率
--password-file 實現(xiàn)免交互傳輸數(shù)據(jù)信息
補充: 客戶端部署過程(rsync)
第一個里程: 創(chuàng)建生成密碼文件
echo oldboy123 >/etc/rsync.password
chmod 600 /etc/rsync.password
第二個里程: 實現(xiàn)免交互傳輸數(shù)據(jù)
rsync -avz /oldboy/oldboy.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
oldboy.txt
sent 93 bytes received 43 bytes 272.00 bytes/sec
total size is 0 speedup is 0.00
rsync守護進程備份服務企業(yè)應用
守護進程模式:
推: 客戶端 -- 數(shù)據(jù)備份 -- 備份服務器
拉: 客戶端 -- 數(shù)據(jù)恢復 -- 備份服務器
服務端 -- 數(shù)據(jù)備份 -- 客戶端 (部署rsync守護進程)
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
SRC: 備份服務器上模塊信息
DEST: 本地保存數(shù)據(jù)路徑信息
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
企業(yè)多模塊應用過程:
01. 守護進程模式多模塊創(chuàng)建
第一個里程: 配置文件中創(chuàng)建多個模塊信息
[sa_backup]
comment = "backup dir by oldboy"
path = /backup/sa_dir/
[dev_backup]
comment = "backup dir by oldboy"
path = /backup/dev_dir/
[dba_backup]
comment = "backup dir by oldboy"
path = /backup/dba_dir/
第二個里程: 確認指定模塊路徑是否存在/權(quán)限是否正確
第三個里程: 重啟rsync服務
02.守護進程模式數(shù)據(jù)排除功能
創(chuàng)建測試環(huán)境: 客戶端創(chuàng)建
[root@nfs01 oldboy]# mkdir /oldboy/oldboy{01..03}
[root@nfs01 oldboy]# touch /oldboy/oldboy{01..03}/{a..c}.txt
[root@nfs01 oldboy]# tree /oldboy
/oldboy
├── oldboy01
│?? ├── a.txt
│?? ├── b.txt
│?? └── c.txt
├── oldboy02
│?? ├── a.txt
│?? ├── b.txt
│?? └── c.txt
└── oldboy03
├── a.txt
├── b.txt
└── c.txt
需求01: 備份/oldboy目錄數(shù)據(jù)時,將oldboy01目錄進行排除,將oldboy03目錄中的b.txt文件進行排除
需求02: 備份/oldboy目錄數(shù)據(jù)時,將oldboy01目錄進行排除a.txt oldboy02/b.txt oldboy03/c.txt
方法一: 利用rsync命令參數(shù)實現(xiàn)
--exclude
# rsync -avz /oldboy/ --exclude=oldboy01/ --exclude=oldboy03/b.txt rsync_backup@172.16.1.41::sa_backup --password-file=/etc/rsync.password
sending incremental file list
./
oldboy02/
oldboy02/a.txt
oldboy02/b.txt
oldboy02/c.txt
oldboy03/
oldboy03/a.txt
oldboy03/c.txt
sent 420 bytes received 134 bytes 1,108.00 bytes/sec
total size is 12,288 speedup is 22.18
說明: 利用--exclude排除數(shù)據(jù)信息,需要利用相對路徑指定需要排除的數(shù)據(jù),相對路徑是相對于同步目錄而言
方法二: 利用rsync命令參數(shù)實現(xiàn):
--exclude-from
第一個里程: 編寫排除數(shù)據(jù)信息文件
[root@nfs01 oldboy]# cat execlude.txt
oldboy01/a.txt
oldboy02/b.txt
oldboy03/c.txt
第二個里程: 利用命令參數(shù)進行排除多個數(shù)據(jù)
[root@nfs01 oldboy]# rsync -avz /oldboy/ --exclude-from=/oldboy/execlude.txt rsync_backup@172.16.1.41::sa_backup --password-file=/etc/rsync.password
sending incremental file list
./
execlude.txt
oldboy01/
oldboy01/b.txt
oldboy01/c.txt
oldboy02/
oldboy02/a.txt
oldboy02/c.txt
oldboy03/
oldboy03/a.txt
oldboy03/b.txt
sent 601 bytes received 180 bytes 1,562.00 bytes/sec
total size is 12,333 speedup is 15.79
方法三: 利用服務端配置文件參數(shù)
exclude --- 指定數(shù)據(jù)進行排除同步 == 客戶端命令參數(shù) --exclude
exclude from --- 指定多個數(shù)據(jù)排除文件信息,排除多個數(shù)據(jù) == 客戶端命令參數(shù) --exclude-from
[sa_backup]
comment = "backup dir by oldboy"
path = /backup/sa_dir/
exclude = oldboy01/a.txt oldboy02/b.txt
[sa_backup]
comment = "backup dir by oldboy"
path = /backup/sa_dir/
exclude from = /backup/sa_dir/execlude.txt
====================================================================
補充: rsyncd.conf配置文件說明
全局配置: 在模塊上面配置的信息,為全局配置,會影響所有模塊
局部配置: 在模塊里面配置的信息,為局部配置,只會影響指定模塊
====================================================================
守護進程模式數(shù)據(jù)無差異同步
--delete
企業(yè)應用: 保證數(shù)據(jù)同步一致 存儲服務器數(shù)據(jù) == 備份服務器數(shù)據(jù)
PS: --delete參數(shù),一定要慎用,容易造成誤刪數(shù)據(jù)
守護進程模式創(chuàng)建子目錄功能
[root@nfs01 oldboy]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::sa_backup/oldboy/ --password-file=/etc/rsync.password
sending incremental file list
created directory oldboy
hosts
sent 219 bytes received 72 bytes 582.00 bytes/sec
total size is 335 speedup is 1.15
護進程模式訪問策略功能
白名單配置/黑名單配置
image.png
守護進程模式列表功能說明 (了解)
list = false --- 可以實現(xiàn)客戶端列表顯示備份服務端所有模塊信息
[root@nfs01 oldboy]# rsync rsync_backup@172.16.1.41::
sa_backup "sa backup dir"
dev_backup "dev backup dir"
dba_backup "dba backup dir"
作業(yè):
01. 如何真正實現(xiàn)保持文件屬主和屬組信息不變?
修改rsync配置文件
1. uid gid = root
2. #fake super
3. 確認備份服務端有相應用戶信息(uid和gid保持一致)
02. 如何對外網(wǎng)用戶傳輸?shù)臄?shù)據(jù)進行限速 --bwlimit=100
--bwlimit=KBPS limit I/O bandwidth; KBytes per second
沒有限速傳輸數(shù)據(jù)情況
[root@nfs01 ~]# rsync -avzP /opt/1G rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
1G
1,048,576,000 100% 57.70MB/s 0:00:17 (xfr#1, to-chk=0/1)
sent 1,019,827 bytes received 43 bytes 55,128.11 bytes/sec(沒有限速速率)
設(shè)置限速傳輸數(shù)據(jù)情況
[root@nfs01 ~]# rsync -avzP --bwlimit=10 /opt/1G rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
1G
1,048,576,000 100% 10.67MB/s 0:01:33 (xfr#1, to-chk=0/1)
sent 1,019,827 bytes received 43 bytes 10,147.96 bytes/sec(限速速率 10KB/s)
total size is 1,048,576,000 speedup is 1,028.15
03. 如何在修改rsync默認端口后,依舊可以傳輸數(shù)據(jù)信息
方法一:
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
[root@nfs01 ~]# rsync -avz /etc/hosts rsync://rsync_backup@172.16.1.41:874/backup_oldboy --password-file=/etc/rsync.password
sending incremental file list
hosts
sent 219 bytes received 43 bytes 524.00 bytes/sec
total size is 335 speedup is 1.28
方法二:
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup_oldboy --password-file=/etc/rsync.password --port=874
sending incremental file list
sent 47 bytes received 20 bytes 134.00 bytes/sec
total size is 335 speedup is 5.00