實驗需要兩臺虛擬機
如不會安裝請參考http://www.itdecent.cn/p/9f3eb5139d18
添加一塊內(nèi)網(wǎng)卡,先自行百度添加
Rsync介紹
什么是rsync?
Rsync是一款開源的、快速的、多功能的、可實現(xiàn)全量及增量的本地或遠程數(shù)據(jù)同步備份的優(yōu)秀工具。并且可以不進行改變原有數(shù)據(jù)的屬性信息,實現(xiàn)數(shù)據(jù)的備份遷移特性。Rsync軟件適用于unix/linux/windows等多種操作系統(tǒng)平臺。
Rsync是一個快速和非常通用的文件復(fù)制工具。它能本地復(fù)制,遠程復(fù)制,或者遠程守護進程方式復(fù)制。它提供了大量的參數(shù)來控制其行為的各個方面,并且允許非常靈活的方式來實現(xiàn)文件的傳輸復(fù)制。它以其delta-transfer算法聞名。
rsync監(jiān)聽端口:873
rsync運行模式:C/S
Rsync的功能
①支持拷貝普通文件與特殊文件,如鏈接文件,設(shè)備文件。
②支持排除指定文件或目錄同步的功能,相當于打包命令tar的排除功能。
③可以做到保持原文件或目錄的權(quán)限,時間,軟硬鏈接,屬主,組等所有屬性均不改變。
④可實現(xiàn)增量復(fù)制,即只復(fù)制發(fā)生變化的數(shù)據(jù),因此數(shù)據(jù)傳輸效率很高。
⑤可以使用rcp,rsh,SSH等方式來配合進行隧道加密傳輸文件
⑥可以通過socker傳輸文件和數(shù)據(jù)
⑦支持匿名或認證進程模式傳輸,安全地進行數(shù)據(jù)備份及鏡像。
rsync工作方式介紹與實踐
rsync有三種傳輸數(shù)據(jù)模式,具體介紹如下:
1.本地傳輸
類似cp 可實現(xiàn)文件目錄移動備份
2.遠程shell數(shù)據(jù)傳輸模式
遠程shell數(shù)據(jù)傳輸模式一般是借助通道如ssh 在兩臺服務(wù)器之間進行復(fù)制數(shù)據(jù),和兩臺服務(wù)器是對等的,沒有客戶端與服務(wù)端之分,整個過程類似與scp遠程復(fù)制命令
3.守護進程傳輸模式
守護進程傳輸模式是在客戶端與服務(wù)器之間進行數(shù)據(jù)復(fù)制,通常需要服務(wù)器端部署守護進程服務(wù),然后在客戶端執(zhí)行命令,實現(xiàn)數(shù)據(jù)的拉取和推送復(fù)制。
本地數(shù)據(jù)傳輸模式
| rsync | [option] | src | [dest] |
|---|---|---|---|
| rsync | 參數(shù)選項 | 源文件或文件 | 目的目錄或文件 |
rsync #命令
[OPTION...] #選項
SRC... #遠程主機模塊(不是目錄)
[USER@] #遠程主機用戶(虛擬用戶)
HOST:: #遠程主機地址
[DEST] #將遠程主機模塊備份至本地什么位置
-a #歸檔模式傳輸, 等于-tropgDl
-v #詳細模式輸出, 打印速率, 文件數(shù)量等
-z #傳輸時進行壓縮以提高效率
-r #遞歸傳輸目錄及子目錄,即目錄下得所有目錄都同樣傳輸。
-t #保持文件時間信息
-o #保持文件屬主信息
-p #保持文件權(quán)限
-g #保持文件屬組信息
-l #保留軟連接
-P #顯示同步的過程及傳輸時的進度等信息
-D #保持設(shè)備文件信息
-L #保留軟連接指向的目標文件
-e #使用的信道協(xié)議,指定替代 rsh 的 shell 程序
--exclude=PATTERN #指定排除不需要傳輸?shù)奈募J?--exclude-from=file #文件名所在的目錄文件
--bwlimit=100 #限速傳輸
--delete #讓目標目錄和源目錄數(shù)據(jù)保持一致
(1) 本地復(fù)制(類似cp)
案例一:使用rsync實現(xiàn)本地文件的復(fù)制
root@backup ~#: cd /tmp
root@backup tmp#: ls
root@backup tmp#: rsync /etc/passwd /tmp/
root@backup tmp#: ls
passwd
案例二:使用rsync實現(xiàn)本地目錄復(fù)制
root@backup tmp#: mkdir oldboy
root@backup tmp#: touch oldboy/{1..5}.txt
root@backup tmp#: ls oldboy/{1..5}.txt
oldboy/1.txt oldboy/2.txt oldboy/3.txt oldboy/4.txt oldboy/5.txt
root@backup tmp#: rsync -r oldboy /root/
root@backup tmp#: cd
root@backup ~#: ls
oldboy
root@backup ~#: ls oldboy/
1.txt 2.txt 3.txt 4.txt 5.txt
(2) 查詢數(shù)據(jù)(類似ls)
root@backup tmp#: rsync /etc/hosts
-rw-r--r-- 158 2013/06/07 22:31:32 hosts
root@backup tmp#: rsync oldboy/
drwxr-xr-x 71 2020/01/13 16:15:21 .
-rw-r--r-- 0 2020/01/13 16:15:21 1.txt
-rw-r--r-- 0 2020/01/13 16:15:21 2.txt
-rw-r--r-- 0 2020/01/13 16:15:21 3.txt
-rw-r--r-- 0 2020/01/13 16:15:21 4.txt
-rw-r--r-- 0 2020/01/13 16:15:21 5.txt
遠程shell數(shù)據(jù)傳輸語法
遠程分為推拉兩種
拉取
| rsync | [option] | user@host:src | [dest] |
|---|---|---|---|
| rsync | 參數(shù)選項 | 認證用戶@主機地址:源路徑 | 本地路徑 |
推送
| rsync | [option] | [dest] | user@host:src |
|---|---|---|---|
| rsync | 參數(shù)選項 | 本地路徑 | 認證用戶@主機地址:源路徑 |
數(shù)據(jù)傳輸實踐
實踐一:拉取模式 從遠程服務(wù)端把/etc/hosts 復(fù)制到本地/tmp
root@backup ~#: rsync -av -e 'ssh -p 22' root@172.16.1.31:/etc/hosts /root
root@172.16.1.31's password:
receiving incremental file list
hosts
sent 43 bytes received 243 bytes 81.71 bytes/sec
total size is 158 speedup is 0.55
root@backup ~#: ls
hosts oldboy
實踐二:推送模式 把本地服務(wù)器/etc/passwd 復(fù)制到遠程主機的/root下
root@backup ~#: rsync -av /etc/passwd root@172.16.1.31:/root
root@172.16.1.31's password:
sending incremental file list
passwd
sent 1,187 bytes received 35 bytes 349.14 bytes/sec
total size is 1,095 speedup is 0.90
root@nfs ~#: ll
總用量 4
-rw-r--r-- 1 root root 1095 1月 3 16:35 passwd
守護進程傳輸模式
拉取模式
| rsync | [option] | user@host:src | [dest] |
|---|---|---|---|
| rsync | 參數(shù)選項 | 認證用戶@主機地址 端口 / 遠端模塊名 | 目的地 |
推送模式
| rsync | [option] | src | user@host::dest |
|---|---|---|---|
| rsync | 參數(shù)選項 | 源路徑 | 認證用戶 @ 主機地址 :: 遠端模塊名 |
部署前準備工作
root@backup ~#: cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
root@backup ~#: uname -r
3.10.0-1062.el7.x86_64
root@backup ~#: uname -m
x86_64
root@backup ~#: rpm -qa rsync
rsync-3.1.2-6.el7_6.1.x86_64
主機信息
| 主機名 | 網(wǎng)卡eth0 | 網(wǎng)卡eth2 | 用途 |
|---|---|---|---|
| nfs | 10.0.0.31/24 | 172.16.1.31/16 | NFS存儲服務(wù)器 |
| backup | 10.0.0.41/24 | 172.16.1.41/16 | rsync存儲服務(wù)器 |
配置rsyncd.conf
root@backup ~#: vim /etc/rsyncd.conf
# /etc/rsyncd: configuration file for rsync daemon mode
# See rsyncd.conf man page for more options.
# configuration example:
uid = rsync
gid = rsync
fake super = yes
use chroot = no
max connections = 200
timeout = 900
pid file = /var/run/rsync.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsync.log
ignore errors
read only = false
list = false
host allow = 172.16.1.0/24
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = welcome to oldboyedu backup!
path = /backup/
配置文件解釋
uid = rsync 用戶名
gid = rsync 用戶組
fake super = yes 允許不已root身份運行,就可以改變文件屬性
use chroot = no 禁錮推送的數(shù)據(jù)至某個目錄, 不允許跳出該目錄
max connections = 200 最大連接數(shù)
timeout = 900 超時時間
pid file = /var/run/rsync.pid 將進程pid寫入此文件
lock file = /var/run/rsync.lock 指定lock文件用來支持最大連接次數(shù)
log file = /var/log/rsync.log 輸入日志信息
ignore errors 忽略I/O錯誤
read only = false 上傳文件
list = false 允許查看可用模塊列表
host allow = 172.16.1.0/24 指定ip
auth users = rsync_backup 可使用模塊
secrets file = /etc/rsync.password 指定密碼存放文件
[backup] 模塊名
path = /backup/ 模塊對應(yīng)文件路徑
配置用于數(shù)據(jù)備份的目錄
如果配置文件配置了path=/backup 這里的/backup備份目錄默認不存在需創(chuàng)建
root@backup ~#: useradd rsync -s /sbin/nologin -M 創(chuàng)建用戶
root@backup ~#: mkdir -p /backup 創(chuàng)建模塊對應(yīng)目錄
root@backup ~#: chown -R rsync.rsync /backup 給目錄授權(quán)為rsync用戶
配置用于rsync復(fù)制的賬號 密碼 及賬號文件權(quán)限
root@backup ~#: echo 'rsync_backup:oldboy' >/etc/rsync.password 將賬號和密碼寫入文件
root@backup ~#: chmod 600 /etc/rsync.password 文件必須為600權(quán)限
啟動rsync服務(wù)
systemctl start rsyncd 啟動服務(wù)
systemctl enable rsyncd 開機自啟
systemctl status rsyncd 檢查啟動狀態(tài)和開機自啟動狀態(tài)
rsync客戶端操作
root@nfs ~#: echo 'oldboy' >/etc/rsync.password 密碼必須和服務(wù)器相同
root@nfs ~#: chmod 600 /etc/rsync.password 授權(quán)600
測試數(shù)據(jù)傳輸
推送
root@nfs ~#: rsync -avzP /etc rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
······發(fā)送內(nèi)容省略·······
sent 48,666 bytes received 655 bytes 98,642.00 bytes/sec
total size is 27,801,952 speedup is 563.69
root@backup backup#: ls
etc
拉取
rsync -avz rsync_backup@172.16.1.41::backup /opt/ --password-file=/etc/rsync.password
參數(shù)選項解釋
-a 保持文件屬性
-z 傳輸?shù)臄?shù)據(jù)進行壓縮
-P 顯示進度信息
-v 詳細傳輸情況
拓展
在添加一個模塊
對應(yīng)模塊創(chuàng)建目錄
授權(quán)
在重啟服務(wù)(每更改一次配置文件就要重啟一次)
報錯
1.檢查密碼文件權(quán)限是否為600
2.檢查配置文件用戶屬主是否為root,不需要改成普通用戶
3.密碼文件是否寫錯