day32-Rsync功能了解

智慧源自于多角度的視野,能力來源于多種選擇!

1. 什么是Rsync?

遠(yuǎn)程同步
開源的、高速的、數(shù)據(jù)復(fù)制(拷貝)工具

2. 作用

工作中需要/定時/實時數(shù)據(jù)備份。本地服務(wù)器目錄、不同的機(jī)器、不同機(jī)房之間的數(shù)據(jù)備份。都可以用Rsync完成

3. Rsync功能特性

支持拷貝普通文件與特殊文件,如鏈接文件,設(shè)備文件等
支持排除指定文件或目錄同步的功能,相當(dāng)于打包命令tar的排除功能
可以做到保持源文件和目錄的權(quán)限、時間、軟硬鏈接、屬主、組等所有屬性均不變。
可以實現(xiàn)增量復(fù)制,既只復(fù)制發(fā)生變化的數(shù)據(jù),因此數(shù)據(jù)傳輸效率很高
可以使用讓rcp,rsh,ssh等方式來配合進(jìn)行隧道加密傳輸文件(rsync本身不對數(shù)據(jù)加密)。
可以通過socket(進(jìn)程方式)傳輸文件和數(shù)據(jù)(服務(wù)端和客戶端)*。
支持匿名或認(rèn)證(無需系統(tǒng)用戶)進(jìn)程模式傳輸,安全的進(jìn)行數(shù)據(jù)備份及鏡像。

4. 全量和增量的區(qū)別

增量復(fù)制:
只復(fù)制改變的文件
全量復(fù)制:
第一次與第二次復(fù)制沒區(qū)別,把沒有改變的文件也復(fù)制

5. 增量復(fù)制原理

默認(rèn)情況下,在備份復(fù)制數(shù)據(jù)時Rsync通過其獨(dú)特的“quick check”算法,它僅復(fù)制大小后者最后修改時間發(fā)生變化的文件或目錄,當(dāng)然也可以根據(jù)權(quán)限,屬主等屬性的變化復(fù)制,但需要指定相應(yīng)的參數(shù),升值可以實現(xiàn)只復(fù)制一個文件里有變化的內(nèi)容部分,所以可以實現(xiàn)快速的備份復(fù)制數(shù)據(jù),即采用增量復(fù)制方法對數(shù)據(jù)信息復(fù)制,與傳統(tǒng)cp,scp拷貝工具的全量拷貝復(fù)制截然不同,增量復(fù)制數(shù)據(jù),在效率上遠(yuǎn)遠(yuǎn)高于全量復(fù)制。
在CentOS5系統(tǒng)上,rsync 軟件版本默認(rèn)為2.x,同步增量復(fù)制數(shù)據(jù)原理是把左右的文件對比一遍,然后進(jìn)行再進(jìn)行數(shù)據(jù)同步。再CentOS6和7系統(tǒng)上,rsync 軟件版本默認(rèn)為3.x,增量復(fù)制數(shù)據(jù)原理是一邊對比差異,一邊對差異的數(shù)據(jù)進(jìn)行復(fù)制。從增量復(fù)制數(shù)據(jù)效率而言,rsync 3.x 版本比rsync 2.x 更有優(yōu)勢一些
可以利用rsync 命令參數(shù)查看當(dāng)前系統(tǒng)中rsync軟件版本信息。
rsync --version


image.png
image.png
image.png

6. Rsync三種工作模式介紹

1)本地模式(local)
在該模式下,Rsync就是個命令
a. 可以像CP一樣的拷貝,把數(shù)據(jù)從一個地方復(fù)制到另一個地方(僅在一臺機(jī)器增量),相當(dāng)于CP命令
b. 通過加參數(shù)實現(xiàn)刪除功能,相當(dāng)于rm命令
c. 查看屬性信息,相當(dāng)于ls
實踐
拷貝

[root@backup ~]# ls /opt
[root@backup ~]# rsync /etc/hosts /opt
[root@backup ~]# ls /opt
hosts
[root@backup ~]# \cp /etc/hosts /opt

拷貝過后,默認(rèn)屬性會變

刪除
刪除文件內(nèi)容:

[root@backup ~]# touch /null.txt #空文件
[root@backup ~]# cat /opt/hosts 
127.0.0.1    localhost localhost.localdomain localhost4 localhost4.localdomain4
::1          localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5 lb01
172.16.1.6 lb02
172.16.1.7 web01
172.16.1.8 web02
172.16.1.9 web03
172.16.1.31 nfs01
172.16.1.41 backup
172.16.1.51 db01 db01.etiantian.org
172.16.1.61 m01

[root@backup ~]# rsync --delete /null.txt /opt/hosts  #讓前面null.txt和后面hosts一樣
rsync: --delete does not work without --recursive (-r) or --dirs (-d).
rsync error: syntax or usage error (code 1) at main.c(1567) [client=3.1.2]
[root@backup ~]# rsync -r --delete /null.txt /opt/hosts
[root@backup ~]# cat /opt/hosts 
刪除目錄下所有文件:
[root@backup ~]# mkdir /null
[root@backup ~]# rsync -r --delete /null/ /opt/       #讓后面opt和前面null目錄內(nèi)容保持一致
[root@backup ~]# ls /opt/
c.查看屬性
[root@backup ~]# rsync /etc/hosts
-rw-r--r--            332 2019/04/12 11:24:41 hosts
![image.png](https://upload-images.jianshu.io/upload_images/16833261-46340fdbcbdc7b16.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

查看屬性
rsync 文件 查看文件屬性
2) 遠(yuǎn)程shell模式
借助類似ssh這種隧道傳輸數(shù)據(jù),適合不同的機(jī)器之間的復(fù)制
相對的,
pull 拉:從遠(yuǎn)端拉取到本地
rsync 參數(shù)選項 認(rèn)證用戶 @主機(jī)地址:原路徑 本地路徑

push 推:從本地推送到遠(yuǎn)端

rsync 參數(shù)選項 本地路徑 認(rèn)證用戶 @主機(jī)地址:目標(biāo)路徑

push實踐

rsync -avz /etc/hosts  root@172.16.1.41:/opt 

The authenticity of host '172.16.1.41 (172.16.1.41)' can't be established.
ECDSA key fingerprint is SHA256:QTw3XQMNvuP8pQ8FVQeIf5XstBmA2sSDXymJF78c1vw.
ECDSA key fingerprint is MD5:ea:5b:2b:63:25:75:ba:e5:67:0a:cf:20:e1:d1:62:57.
Are you sure you want to continue connecting (yes/no)? y
Please type 'yes' or 'no': yes
Warning: Permanently added '172.16.1.41' (ECDSA) to the list of known hosts.
root@172.16.1.41's password: 
sending incremental file list
hosts

sent 219 bytes  received 35 bytes  20.32 bytes/sec
total size is 332  speedup is 1.31

-e 指定通道 ssh服務(wù)連接客戶端
-p 指定端口
拉:

[root@nfs01 ~]# rsync -avz   root@172.16.1.41:/opt/hosts   /opt 
root@172.16.1.41's password: 
receiving incremental file list
hosts

sent 43 bytes  received 219 bytes  58.22 bytes/sec
total size is 332  speedup is 1.27
[root@nfs01 ~]# cd /opt
[root@nfs01 /opt]# ll
total 4
-rw-r--r-- 1 root root 332 Apr 12 13:25 hosts

推拉:
a. 參照物,執(zhí)行命令的機(jī)器
b. 使用的用戶和主機(jī),就用這個主機(jī)的用戶和密碼
強(qiáng)調(diào):
null 和 null/ 區(qū)別
null是目錄和目錄下的內(nèi)容
null/只是目錄下的內(nèi)容,不包含本身
3)Rsync守護(hù)進(jìn)程模式

首先要搭建服務(wù)端(需要有守護(hù)進(jìn)程),然后才能在客戶端實現(xiàn)推拉數(shù)據(jù)
工作中重要模式:
客戶端語法暫時不講。
rsync 服務(wù)模式:*****開啟后臺進(jìn)程,接受別人的訪問

7. Rsync 命令參數(shù)

rsync命令參數(shù):
-v, --verbose 顯示輸出過程
-z, --compress壓縮
-a, --archive 多參數(shù)集合(-rtopgD1)
-r, --recursive遞歸
-t,--times 保持修改時間屬性
-o, --owner 保持屬主不變
-p, --perms 保持權(quán)限不變
-g, --group 保持用戶組不變
-l, -iinks 保持拷貝軟連接
-q, --quiet 安靜的拷貝
--bwlimit=KBPS限制I/O帶寬, KBytes per second
--delete .刪除
--exclude排除
--exclude-from從文件中排除


image.png

企業(yè)中常用參數(shù)組合
-avz 或者-vzrtopg

8. Rsync 守護(hù)進(jìn)程模式應(yīng)用實踐

(1)以下操作都在backuo服務(wù)器上

?1)安裝查看版本號

rsync --version
rsync  version 3.1.2  protocol version 31
Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, symtimes, prealloc

rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.

?2)編輯/etc/rsync.conf 文件,提前備份

cat >/etc/rsyncd.conf<<EOF
#rsync_config_______________start
#created by oldboy
#site: http://www.oldboyedu.com
uid = rsync         管理備份目錄的用戶
gid = rsync         管理備份目錄的用戶組
use chroot = no   安全功能,是否鎖定到備份目錄
max connections = 200  并發(fā)連接,同時多少客戶端訪問
fack super = yes   
timeout = 600         超時時間
pid file = /var/run/rsyncd.pid     進(jìn)程號所在文件
lock file = /var/run/rsync.lock    鎖文件
log file = /var/log/rsyncd.log     日志文件
ignore errors                            忽略錯誤 
read only = false                      可寫(不只讀)
list = false                                 不允許列表
hosts allow = 172.16.1.0/24    授權(quán)那些主機(jī)可以訪問(工作中二選一)
hosts deny = 0.0.0.0/32          拒絕那些主機(jī)不允許訪問(工作中二選一)
auth users = rsync_backup    遠(yuǎn)程虛擬連接用戶(名字可更改)
secrets file = /etc/rsync.password  存放密碼文件 格式:用戶名:密碼 權(quán)限要求600
[backup]                                      [模塊(標(biāo)識)]遠(yuǎn)程范文使用模塊名
comment = welcome to oldboyedu backup!  說明注釋
path = /backup/  服務(wù)器端用于備份的目錄,用戶和組, rsync.rsync
EOF

學(xué)會了解知識的源頭
man rsync 查命令的參數(shù)
man rsyncd.conf 查看文件的參數(shù)
創(chuàng)建目錄檢查備份

[root@backup ~]# useradd rsync
[root@backup ~]# mkdir -p /backup
[root@backup ~]# chown -R rsync.rsync /backup/
[root@backup ~]# id rsync
uid=1001(rsync) gid=1001(rsync) groups=1001(rsync)

?3)啟動和檢查

rsync  --daemon
systemctl start rsyncd  CentOS7

??啟動檢查
??檢查開機(jī)自啟動

[root@backup ~]# systemctl status rsyncd
● rsyncd.service - fast remote file copy program daemon
   Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2019-04-15 11:40:04 CST; 30s ago
 Main PID: 10140 (rsync)
   CGroup: /system.slice/rsyncd.service
           └─10140 /usr/bin/rsync --daemon --no-detach

Apr 15 11:40:04 backup systemd[1]: Stopped fast remote file copy program daemon.
Apr 15 11:40:04 backup systemd[1]: Started fast remote file copy program daemon.
Apr 15 11:40:04 backup rsyncd[10140]: rsyncd version 3.1.2 starting, listening on port 873

檢查進(jìn)程和端口


rsync --daemon(c6及以前)
systemctl start rsyncd
systemctl enable rsyncd
systemctl status rsyncd

[root@backup ~]# ps -ef|grep sync|grep -v grep  #檢查進(jìn)程
root       7521      1  0 11:39 ?        00:00:00 /usr/bin/rsync --daemon --no-detach

[root@backup ~]# netstat -lntup|grep 873 #檢查端口
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      7521/rsync          
tcp6       0      0 :::873                  :::*                    LISTEN      7521/rsync 
         
[root@backup ~]# lsof -i :873 #檢查端口
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rsync   7521 root    3u  IPv4  41439      0t0  TCP *:rsync (LISTEN)
rsync   7521 root    5u  IPv6  41440      0t0  TCP *:rsync (LISTEN)

rsync 端口號為873

4)配置密碼文件
[root@backup ~]# echo " rsync_backup:oldboy" >/etc/rsync.password
[root@backup ~]# chmod 600 /etc/rsync.password
服務(wù)端配置完成

(2)以下操作都是在客戶端服務(wù)器

方法1:認(rèn)證密碼文件
[root@nfs01 ~]# echo " rsync_backup:oldboy" >/etc/rsync.password
[root@nfs01 ~]# echo "oldboy" >/etc/rsync.password
[root@nfs01 ~]# chmod 600 /etc/rsync.password
[root@nfs01 ~]# ll /etc/rsync.password
-rw------- 1 root root 7 Apr 15 11:55 /etc/rsync.password
[root@nfs01 ~]# cat /etc/rsync.password
oldboy

方法2:
echo ‘export RSYNC_PASSWORD=oldboy’ >>/etc/bashrc
tail -i /etc/bashrc
export RSYNC_PASSWORD=oldboy
[root@nfs01 ~]# . /etc/bashrc
[root@nfs01 ~]# echo $RSYNC_PASSWORD
oldboy

兩種方法二選一
客戶端nfs01配置完成

(3)守護(hù)進(jìn)程模式,客戶端rsync的命令語法
配置服務(wù)器端的守護(hù)進(jìn)程,實現(xiàn)數(shù)據(jù)傳輸
1、 服務(wù)器端守護(hù)進(jìn)程
2、 客戶端執(zhí)行命令

image.png

(4)檢查成果
錯誤1:
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
@ERROR: invalid uid rsync
rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2]
解答:
[root@backup ~]# useradd rsync
[root@backup ~]# id rsync
uid=1001(rsync) gid=1001(rsync) 組=1001(rsync)
[root@backup ~]# mkdir -p /backup
[root@backup ~]# chown -R rsync.rsync /backup/
[root@backup ~]# ls -ld /backup/
drwxr-xr-x 2 rsync rsync 6 4月 15 12:12 /backup/

錯誤2:
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
hosts
rsync: chgrp ".hosts.YDuTjO" (in backup) failed: Operation not permitted (1)

sent 223 bytes received 124 bytes 694.00 bytes/sec
total size is 332 speedup is 0.96
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]
解答:增加如下參數(shù)到/etc/rsyncd.conf
fake super = yes #不用root用戶也可以存儲文件的完整屬性。
This allows the full attributes of a file to be stored without having to have the daemon actually running as root.
[root@backup ~]# grep fake /etc/rsyncd.conf
fake super = yes

改完配置,要重啟服務(wù):
[root@backup ~]# systemctl restart rsyncd

在測試:成功
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
hosts

sent 89 bytes received 49 bytes 276.00 bytes/sec
total size is 332 speedup is 2.41

rsync -avz /etc rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

服務(wù)端檢查:
[root@backup ~]# ls /backup/
hosts
[root@backup ~]# ls /backup/
etc hosts

如果客戶端按照環(huán)境變量的方式配置,則可以忽略--password-file=/etc/rsync.password參數(shù)。
[root@nfs01 ~]# rsync -avz /etc rsync_backup@172.16.1.41::backup
sending incremental file list

sent 52,071 bytes received 644 bytes 105,430.00 bytes/sec
total size is 31,244,350 speedup is 592.70

測試增量
[root@nfs01 ~]# touch /etc/oldboy.txt
[root@nfs01 ~]# rsync -avz /etc rsync_backup@172.16.1.41::backup
sending incremental file list
etc/oldboy.txt

sent 52,098 bytes received 655 bytes 105,506.00 bytes/sec
total size is 31,244,350 speedup is 592.28

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

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

  • 《博物館奇妙夜》(Night at the Museum)是二十世紀(jì)福克斯電影公司出品的一部奇幻喜劇片,由肖恩?利...
    fjarvr閱讀 468評論 0 0
  • 前言原網(wǎng)頁地址:http://www.cocoachina.com/ios/20150505/11751.html...
    LZM輪回閱讀 552評論 0 0
  • 在開始寫正文的時候,還沒想好標(biāo)題名字。前一天在晚上洗臉的瞬間,想起來和爸爸在一起的三個片段,和男朋友打著電話邊...
    呢喃醬閱讀 194評論 0 3
  • 這幾天特別忙,每天要收拾家里,然后還要去街上買各種的年貨。 昨天陪表妹一起幫她們買年貨,跑上跑下沒有車真的很不方便...
    成子曰閱讀 167評論 0 1

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