Rsync數(shù)據(jù)復(fù)制軟件應(yīng)用實踐

實驗需要兩臺虛擬機
如不會安裝請參考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.密碼文件是否寫錯

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容