rsync 服務及部署

1 rsync簡介

1.1 什麼是rsync

rsync: - a fast, versatile, remote (and local) file-copying tool
rsync:是一種快速,多功能,遠程和本地文件拷貝的工具
rsync --version:查看rsync軟件版本
備份服務重要性:  企業中全部要進行操做的數據文件,必定操做前備份。  
企業備份數據方法:重要數據須要保存在專門備份服務器上  第三方網盤存儲。
算法

1.2 rsync特色

能夠實現全量和增量備份
shell

1.2.1 全量和增量示意圖

全量:將主機A的數據所有傳送給主機B
增量:將主機A新增的數據傳送給主機B
全量增量示意圖_看圖王.png
數據庫

1.2.2 增量備份的原理

方式一: 對源數據和目標目錄中的數據進行比對屬性信息
在同步備份數據時,默認狀況下,Rsync經過其獨特的「quick check」算法,它僅同步大小或者最後修改時間發生變化的文件或目錄,固然也可根據權限,屬主等屬性的變化同步,但須要指定相應的參數,甚至能夠實現只同步一個文件裏有變化的內容部分,因此,能夠實現快速的同步備份數據。

方式二: 利用文件指紋進行判斷文件是否相同
md5運算生成校驗數值信息(指紋信息)驗證文件是否改變
image.png
將生成的md5值發送給目標主機,目標主機驗證接收的md5值是否與本機文件所產生的md5相同,如何不相同。則進行傳輸。
安全

1.3 rsync軟件功能介紹

rsync便是軟件也是命令。服務器

相似於 cp 命令  實現本地備份傳輸數據
相似於scp 命令  遠程備份傳輸數據
相似於 rm 命令 實現無差別同步備份
相似於 ls 命令 本地文件信息查看

1.3.1 rsync=cp

備份文件:rsync /etc/hosts /tmp
備份目錄:rsync -a /aaa  /tmp

1.3.2 rsync=scp

scp:遠程傳輸數據app

傳輸文件:scp /etc/hosts root@172.16.1.41:/tmp
傳輸目錄:scp -rp /aaa root@172.16.1.41:/tmp

rsync運維

備份文件:rsync  /etc/hosts root@172.16.1.41:/tmp
備份目錄:rsync -rp /aaa root@172.16.1.41:/tmp

利用rsync傳輸目錄數據
目錄數據後面有/  /aaa/   將目錄下面的數據內容進行傳輸
** 目錄數據後面沒/  /aaa    將目錄自己和目錄下面的數據內容進行傳輸**
ssh

1.3.3 rsync=rm

快速清空數據socket

mkdir null      #建立一個空目錄
rsync -avz --delete /null/ /test

註釋:--delete 無差別同步參數  將兩個目錄中的數據保持高度一致。
能夠理解爲我(/null)有的東西,你也有。我(/null)沒有的東西,你也不能有。null是個空目錄,--delete保證了無差別同步,因此test目錄的內容被清空。
tcp

1.3.4 rsync=ls

查看文件:rsync /etc/hosts
查看目錄:rsync /test

1.4 rsync的7個特性總結

(1)支持拷貝普通文件與特殊文件如連接文件,設備等。
(2)能夠有排除指定文件或目錄同步的功能,至關於打包命令tar的排除功能。
  #tar zcvf backup_1.tar.gz  /opt/data  -exclude=clsn  
        說明:在打包/opt/data時就排除了clsn命名的目錄和文件。
(3)能夠作到保持原文件或目錄的權限、時間、軟硬連接、屬主、組等全部屬性均不改變-p。
(4)可實現增量同步,既只同步發生變化的數據,所以數據傳輸效率很高(tar -N)。
    # 將備份/home 目錄自 2008-01-29 以來修改過的文件
    # tar -N 2008-01-29 -zcvf /backups/inc-backup_$(date +%F).tar.gz /home
    # 將備份 /home 目錄昨天以來修改過的文件
    # tar -N $(date -d yesterday "+%F") -zcvf /backups/inc-backup_$(date +%F).tar.gz /home
    # 添加文件到已經打包的文件
    # tar -rf all.tar .gif
    說明:這條命令是將全部.gif的文件增長到all.tar的包裏面去。-r是表示增長文件的意思。
(5)可使用rcp,rsh,ssh等方式來配合進行隧道加密傳輸文件(rsync自己不對數據加密)
(6)能夠經過socket(進程方式)傳輸文件和數據(服務端和客戶端)
****。重點掌握
(7)支持匿名的或認證(無需系統用戶)的進程模式傳輸,可實現方便安全的進行數據備份及鏡像。

2 rsync命令使用方法

2.1 rsync的工做方式

2.1.1 本地數據備份(同步)方式

本地複製備份文件 == cp
Local:  rsync [OPTION...] SRC... [DEST]
SRC:要備份的數據
Dest:要備份到什麼路徑中
語法:rsync /etc/hosts /tmp

2.1.2 遠程數據備份(同步)方式

推送,拉取都是在客戶端操做
 

Access via remote shell:遠程數據備份文件
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]====客戶端將遠程主機數據拉取到本地主機
Pull:           拉取
[USER@]:    指定以什麼用戶身份登陸到遠程主機(默認是當前系統用戶)
HOST:           遠程主機IP地址或者主機名稱
SRC:            遠程要拉取的數據信息
DEST:           保存到本地路徑信息
語法:rsync root@10.0.0.41:/tmp/test.txt /aaa  #將10.0.0.41主機的test.txt文件拉取到本地主機

 

Push: rsync [OPTION...] SRC... [USER@]HOST:DEST====客戶端將本地主機數據推送到遠端主機
[USER@]:    指定以什麼用戶身份登陸到遠程主機(默認是當前系統用戶)
Push:           推送
HOST:           遠程主機IP地址或者主機名稱
SRC:            本地要推送的數據信息
DEST:           保存到遠程路徑信息
語法: rsync  /etc/hosts root@172.16.1.41:/tmp #將hosts文件推送給10.0.0.41主機/tmp目錄

 
QQ圖片20190713120902.png

2.1.3 守護進程方式備份(同步)數據

Access via rsync daemon====利用守護進程方式備份數據
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
            rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: 客戶端驗證rsync方式
(1)rsync [OPTION...] SRC... [USER@]HOST::DEST
            src:    本地要推送的數據信息
            [USER@]  認證用戶名稱信息
            HOST:   備份服務器IP地址或者主機名稱,host後面須要有兩個冒號
            DEST:   指定模塊信息的名字backup
      語法:        rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
(2)rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST     #不經常使用,理解便可
  PORT:端口是以前默認的能夠不寫,但若是改變要加上端口
    DEST:備份的路徑

守護進程方式做用:
(1)控制備份傳輸數據鏈接數
(2)能夠實現免交互傳輸數據
(3)能夠實現認證訪問功能
(4)能夠實現安全訪問控制

2.1.4 守護進程方式備份數據原理

QQ圖片20190713152331.jpg
文字說明:
(1)客戶端:發送要傳輸數據的請求
rsync -avz /etc/hosts  rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
(2)服務端:接收到傳輸數據請求,進行用戶認證操做。
服務端確認用戶信息是否正確,確認客戶端輸入的用戶 == 服務端配置文件裏的用戶
服務端確認用戶密碼是否正確,確認客戶端輸入的密碼 == 服務端相應用戶的密碼信息
在進行用戶認證時,須要判斷兩個文件的權限是不是600
(3)客戶端:將數據傳輸到服務端,會轉換傳輸的身份,將數據信息權限改動 rsync  
(4)服務端:若是想讓數據正確保存,修改備份目錄屬主屬組爲rsync.rsync

3 rsync服務部署

3.1 服務端部署

3.1.1 安裝rsync 

yum install -y rsync        #安裝rsync軟件
rpm -qa rsync               #查看rsync軟件版本
rsync-3.1.2-4.el7.x86_64    #3.1.2版本

3.1.2 編輯配置文件

vi /etc/rsyncd.conf

#rsync_config
#created by HQ at 2017
##rsyncd.conf start##

uid = rsync                                         #虛擬用戶rsync,管理備份目錄
gid = rsync                                         #虛擬用戶組rsync,管理備份目錄
port = 873                                          #服務默認端口號873
fake super = yes                                #假裝管理員功能開啓  便於能夠執行chgrp命令
use chroot = no                                 #安全配置
max connections = 200                       #最大鏈接數  同時支持200個客戶端鏈接
timeout = 300                                       #鏈接超時時間 單位:秒
pid file = /var/run/rsyncd.pid  #進程信息文件,便於獲取進程號中止進程,判斷服務是否啓動,避免反覆啓動
lock file = /var/run/rsync.lock #鎖文件:在最大鏈接數達到200時,會進行限制鏈接操做
log file = /var/log/rsyncd.log  #服務運行時日誌文件
ignore errors                                       #忽略傳輸過程當中一些小的問題
read only = false                               #指定備份目錄的權限爲可讀可寫 false:假
list = false                                        #改成true,客戶端能夠列表顯示服務端模塊詳細信息  
hosts allow = 172.16.1.0/24         #安全策略配置,設置一個白名單,只容許172.16.1這個網段進行訪問
hosts deny = 0.0.0.0/32                 #安全策略配置  設置一個黑名單,不容許哪一個網段進行訪問
auth users = rsync_backup               #定義認證用戶 rsync_backup爲認證用戶
secrets file = /etc/rsync.password      #密碼文件 用戶密碼信息  格式:rsync_backup:oldboy123
[backup]                                                            #模塊的名稱(能夠任意起名)
comment = "backup dir by oldboy"            #模塊註釋說明信息
path = /backup                                              #備份的目錄

以上爲rsync配置文件的說明,如需配置請下載rsyncd.zip或者將說明中#號註釋的所有刪掉。

3.1.3 建立虛擬用戶rsync

id rsync        #查看如下是否有rsync這個用戶
useradd rsync -M -s /sbin/nologin       #建立rsync虛擬用戶

3.1.4 建立密碼文件並修改訪問權限爲600

echo "rsync_backup:oldboy123" >/etc/rsync.password
chmod 600 /etc/rsync.password           #只能root用戶才能查看密碼

3.1.5 建立備份目錄/修改目錄屬主和屬組信息

mkdir /backup
chown rsync.rsync /backup

3.1.6 啓動服務程序/重啓服務程序

systemctl start rsyncd
systemctl restart rsyncd
systemctl enable  rsyncd

3.1.7 客戶端備份存儲測試

rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup

執行命令後顯示以下圖,則證實服務端部署成功。在這裏注意的是輸入的密碼是3.1.4步驟中的密碼。
image.png

3.2 客戶端部署

3.2.1 建立密碼文件 並修改權限

echo oldboy123 >/etc/rsync.password     #將3.1.4步驟中的密碼寫入到rsync.password(可任意起名)
chmod 600 /etc/rsync.password                   #修改權限只能root查看密碼

3.2.2 交互式傳輸數據

rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup

3.2.3 免交互式傳輸數據

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

執行命令後顯示以下圖,則證實客戶端部署成功。
image.png

4 rsync命令參數說明

-avz 經常使用參數
-a 屬於一個歸檔參數,等於直接使用 -rlptgoD 的參數效果
-v 顯示數據傳輸過程信息
-z 傳輸文件時,對文件進行壓縮處理(提升傳輸效率 節省帶寬)
-r 遞歸備份傳輸數據
-l 保持連接文件屬性不變
-p 保持普通文件屬性權限不變
-t 保持文件時間信息不被改變(mtime修改時間)
-g 保持文件屬組信息不變
-o 保持文件屬主信息不變
-D 保持設備文件屬性信息不變
--delete  實現無差別同步參數 
讓服務器目錄中數據信息和備份目錄中的數據信息保持高度一致 
--exclude=PATTERN 指定排除不須要傳輸的文件信息
--exclude-from=file 文件名所在目錄文件,便可以實現排除多個文件
--bwlimit=RATE 限速功能,單位爲M
--daemon daemon表示以守護進程的方式啓動rsync服務

5 企業備份服務應用

5.1 企業備份服務多模塊配置

環境條件:

人員 模塊 模塊對應備份目錄
開發人員 devop /devop
運維人員 sa /sa
數據庫人員 dba /dba

第一步:修改配置文件
vi /etc/rsyncd.conf

[sa]
comment = "backup dir by sa"
path = /sa
[devop]
comment = "backup dir by devop"
path = /devop
[dba]
comment = "backup dir by dba"
path = /dba

第二步:建立並修改備份目錄

mkdir /{sa,dev,dba} -p
chown rsync.rsync /{sa,dev,dba}
ll -d /{sa,dev,dba}
drwxr-xr-x 2 rsync rsync   6 Jul 15 16:24 /dba
drwxr-xr-x 6 rsync rsync 140 Jul 15 16:23 /dev
drwxr-xr-x 2 rsync rsync   6 Jul 15 16:24 /sa

補充擴展:若是統一將數據存儲在一個目錄中,如何進行區分不一樣數據是哪一個用戶存儲的?又或者如何保持推送的數據屬主屬組不變?
要推送的數據:

[root@yang home]#ll 5.txt 
-rw-r--r-- 1 oldgirl oldgirl 0 Jul 14 11:42 5.txt

修改配置文件:

uid = root
gid = root
#fake super = yes

修改備份目錄權限

chown root.root /backup/

5.2 企業備份數據進行排除備份  

 環境準備:

mkdir /oldboy/{a..c} -p
touch /oldboy/{a..c}/oldboy{01..03}.txt
[root@yang oldboy]#tree 
.
├── a
│   ├── oldboy01.txt
│   ├── oldboy02.txt
│   └── oldboy03.txt
├── b
│   ├── oldboy01.txt
│   ├── oldboy02.txt
│   └── oldboy03.txt
└── c
    ├── oldboy01.txt
    ├── oldboy02.txt
    └── oldboy03.txt

參數:
--exclude:            排除指定單個數據信息
--exclude-from:    排除指定多個數據信息
要求1:備份/oldboy整個數據,排除b目錄不要同步備份 排除c目錄中oldboy03.txt文件不要備份

[root@yang /]#rsync -avz /oldboy/ --exclude=b --exclude=c/oldboy03.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password 
sending incremental file list
./
a/
a/oldboy01.txt
a/oldboy02.txt
a/oldboy03.txt
c/
c/oldboy01.txt
c/oldboy02.txt

sent 385 bytes  received 134 bytes  1,038.00 bytes/sec
total size is 0  speedup is 0.00

PS:--exclude指定排除數據信息,目錄結構必須是相對路徑,相對於傳輸的目錄而言

要求2:備份/oldboy整個數據,排除b目錄中01.txt ,02.txt  c目錄中 01.txt, 02 .txt
exclude-from=file        要建立一個文件

vi /oldboy/exclude.txt      #編輯exclude.txt
b/oldboy01.txt                      #寫入要排除的
b/oldboy02.txt
c/oldboy01.txt
c/oldboy02.txt

執行命令:

[root@yang oldboy]#rsync -avz /oldboy/ --exclude-from=/oldboy/exclude.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
./
exclude.txt
a/
a/oldboy01.txt
a/oldboy02.txt
a/oldboy03.txt
b/
b/oldboy03.txt
c/
c/oldboy03.txt

sent 514 bytes  received 161 bytes  1,350.00 bytes/sec
total size is 60  speedup is 0.09

5.3 企業備份服務建立多級模塊目錄

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

ps:模塊目錄下建立目錄是一級一級建立,不能一次性建立多級目錄

5.4 企業備份數據訪問控制

hosts allow = 172.16.1.0/24   --- 容許172.16.1.0網段主機存儲數據
hosts deny = 0.0.0.0/32         --- 阻止0.0.0.0地址主機存儲數據
rsync安全策略圖_看圖王.png
備份服務配置文件中:全局配置 局部配置
全局配置:在模塊之上配置都是全局配置  能夠影響全部模塊  
局部配置:在模塊中的配置都是局部配置  能夠影響指定模塊
PS:局部配置優先於全局配置,白名單優先於黑名單

5.5 企業備份數據模塊列表功能

list = false   --- 若是改成true,客戶端能夠列表顯示服務端詳細模塊信息
list=true

[root@backup ~]#rsync -avz rsync_backup@172.16.1.41::
backup          "backup dir by oldboy"
sa              "backup dir by sa"
devop           "backup dir by devop"
dba             "backup dir by dba"

5.6 企業應用無差別同步

--delete:保證客戶端和服務端數據高度一致

清空數據目錄:rsync -avz --delete /null/  172.16.1.41:/test    #null爲空目錄
清空數據文件:rsync -avz --delete /aaa.txt  /test/test.txt     #aaa.txt爲空文件
                        rsync -avz --delete /aaa.txt 172.16.1.41:/bbb/bbb.txt

補充:傳輸大的文件,如何顯示傳輸過程 (-P)

[root@yang ~]# rsync -avzP /tmp/500M rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
500M
524,288,000 100%  115.28MB/s    0:00:04 (xfr#1, to-chk=0/1)
    
sent 509,967 bytes  received 43 bytes  68,001.33 bytes/sec
total size is 524,288,000  speedup is 1,027.00

5.7 企業中rsync端口號發生改變

服務端端口號發生改變 --port 端口號

[root@yang ~]# rsync -avzP /tmp/500M rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password --port 874
sending incremental file list
       
sent 47 bytes  received 20 bytes  134.00 bytes/sec
total size is 524,288,000  speedup is 7,825,194.03

5.8 企業服務端配置文件保存路徑不對

若是rsyncd.conf配置文件不在/etc目錄下,而是在/tmp下,該如何啓動rsync服務

[root@yang ~]# rsync --daemon --config=/tmp/rsync.conf
[root@yang ~]# netstat -lntup|grep rsync
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      9933/rsync
tcp6       0      0 :::873                  :::*                    LISTEN      9933/rsync
[root@yang ~]# rsync --daemon --address=172.16.1.41
[root@yang ~]# netstat -lntup |grep 873
tcp     0   0 172.16.1.41:873     0.0.0.0:*        LISTEN      2583/rsync

--daemond的參數

daemon啓動擴展參數
--daemon daemon表示以守護進程的方式啓動rsync服務。
--address 綁定指定IP地址提供服務。
--config=FILE 更改配置文件路徑,而不是默認的/etc/rsyncd.conf
--port=PORT 更改其它端口提供服務,而不是已經改變的873端口

6 備份服務的優缺

優勢:實現增量備份數據   缺點:在同步大量小文件,容易形成數據丟失      (能夠將目錄進行壓縮處理,而後進行同步)         在同步大文件數據,容易形成數據傳輸中斷,斷點續傳功能不強。(能夠用FTP進行同步)

相關文章
相關標籤/搜索