1. Rsync概念特性
rsync可實現全量(全部備份)及增量(差異化備份對更新的部分備份)的本地或者遠程數據同步的的工具
rsync具有可使本地和遠程兩臺主機之間的數據快速複製同步鏡像、遠程備份的功能 類似於ssh帶的scp命令
scp每次都是全量拷貝,rsync可以增量拷貝.。還可以在本地主機之間不同分區或者目錄之間全量及增量的複製數據
類似於cp命令,cp每次都是全量拷貝,rsync可以實現增量拷貝
rsync還可以刪除文件和目錄的功能 rsync有cp,scp,rm的功能還要優於他們
1.1 rsync備份的7大特性
1.支持拷貝普通文件與特殊文件如連接文件,設備等
2.支持排除指定文件或目錄同步的功能,類似於tar命令的排除功能
3.支持保持源文件或目錄的所有屬性信息不變
4.支持增量同步,只同步變化的數據,提升數據傳輸效率
5.支持使用rcp,rsh,ssh等方式來配合進行隧道加密傳輸文件
6.支持sockte(守護進程方式)傳輸文件或者目錄數據信息
7.支持用戶認證方式傳輸數據,提升數據同步的安全性
2. rsync命令應用
2.1 rsync參數介紹
-a:歸檔模式,表示以遞歸方式傳輸文件,並保持所有文件屬性 相當於rtopgl
-v:顯示詳細的信息
-z:傳輸時進行壓縮
-r: 對子目錄以遞歸模式處理
-t:保持文件時間屬性
-o:保持文件的屬主信息
-g:保持文件的數組信息
-p: 保持文件權限
-D:保持設備文件信息
-l:保持軟連接
-P:顯示同步過程及傳輸時的進度信息
-e: “ssh“ 以什麼隧道鏈接
--delete:刪除那些DST中SRC沒有的文件
--exclude=file 排除某些文件{a,d}{a..d}
--exclude-from=FILE 排除FILE中指定模式的文件 寫相對路徑 ,一行一個文件
2.2 rsync等價於cp,scp,
[root@backup ~]# rsync -a /etc/hosts /tmp
[root@backup ~]# ll /tmp/
total 8
-rw-r--r--. 1 root root 317 Oct 23 19:04 hosts
rsync=====scp
[root@backup ~]# rsync -rp /tmp/ 172.16.1.31:/tmp/
root@172.16.1.31's password:
[root@backup ~]# ssh 172.16.1.31
root@172.16.1.31's password:
Last login: Wed Oct 23 16:26:13 2019 from 10.0.0.1
[root@nfs01 ~]# tree /tmp
/tmp
├── hosts
├── hsperfdata_root
│ └── 2350
├── vmware-root_848-2697663887
├── vmware-root_851-4022177747
├── vmware-root_856-2731086721
├── vmware-root_859-3988752861
├── vmware-root_861-3988621786
├── vmware-root_865-3980167289
└── yum_save_tx.2019-10-16.14-39.cUq64v.yumtx
7 directories, 3 files
說明:同步數據時,/tmp/目錄後有/時,表示同步文件下的所有內容,沒有/時,表示同步目錄和目錄下的所有內容
2.3 rsync等價於rm,ls
[root@nfs01 ~]# mkdir /null
[root@nfs01 ~]# rsync -r --delete /null/ /tmp/
[root@nfs01 ~]# tree /tmp/
/tmp/
0 directories, 0 files
2.4rsync====ls
[root@nfs01 ~]# ls -l /etc/hosts
-rw-r--r--. 1 root root 317 Oct 23 19:04 /etc/hosts
[root@nfs01 ~]# rsync /etc/hosts
-rw-r--r-- 317 2019/10/23 19:04:25 hosts
3 rsync數據傳輸同步的原理
在同步備份數據時,默認情況下,rsync通過獨特的quick check算法,它僅同步大小或者最後修改時間發生變化的文件或者目錄,當然也可根據權限屬主等屬性變化同步,但需要指定相應的參數,甚至可以實現自同步一個文件裏有變化的內容部分,所以可以實現快速的同步備份數據,即採用增量輔助的方法進行同步
3.1 rsync工作方式
第一種工作方式:本地傳輸模式
採用這種方式類似於cp命令
Local: rsync [OPTION...] SRC... [DEST]
rsync ----數據備份傳輸的命令
option -----參數
src -----要傳輸備份的文件
dest -----將數據備份到什麼位置
第二種工作方式:遠程shell數據傳輸模式
類似於scp命令
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
rsync 需要備份傳輸的命令
option 參數
[user]@host 需要指定什麼用戶身份登錄到遠程主機,省略就表示以當前身份登錄
src 需要傳輸的數據
dest 將數據保存在哪個位置
第三種工作方式:守護進程傳輸模式
採用客戶端與服務端同步的方式
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
[USER@]HOST:: --指定遠程鏈接的認證用戶
src --指定相應的模塊信息
`
4 Rsync服務端部署的流程
1.確認軟件是否安裝
[root@backup ~]# rpm -qa|grep rsync
rsync-3.1.2-6.el7_6.1.x86_64
2.進行軟件服務的配置
[root@backup ~]# vim /etc/rsyncd.conf
##rsyncd.conf start##
gid = rsync #用戶gid
use chroot = no #安全相關
max connections = 200 #最大連接數
fake super = yes #這允許存儲文件的完整屬性,而不必讓守護進程以根用戶身份實際運行。
timeout = 300 #超時時間(單位/s)
pid file = /var/run/rsyncd.pid #進程號對應的文件
lock file = /var/run/rsyncd.lock #鎖文件,防止文件不一致,當達到最大連接數就禁止繼續訪問
log file = /var/log/rsyncd.log #日誌文件
[backup] #模塊名稱
path = /backup #共享的目錄
ignore errors #忽略錯誤
read only = false #可寫
list = false #不讓查看列表(相當於不讓ls)
hosts allow = 172.16.1.0/24 #允許的網段
#hosts deny = 0.0.0.0/32 #拒絕的網段
auth users = rsync_backup #連接的虛擬用戶,非系統用戶
secrets file = /etc/rsync.password #虛擬用戶賬號密碼文件
##rsync________________end
3.創建備份目錄管理用戶
[root@backup ~]# useradd -M -s /sbin/nologin rsync
4.創建備份目錄,並授權
[root@backup ~]# mkdir /backup
[root@backup ~]# chown -R rsync:rsync /backup/
[root@backup ~]# ll -d /backup/
drwxr-xr-x. 2 rsync rsync 6 Oct 25 16:00 /backup/
5.創建認證用戶授權密碼,並對密碼文件進行授權
[root@backup ~]# vim /etc/rsync.password
rsync_backup:123456
[root@backup ~]# chmod 600 /etc/rsync.password
6.啓動程序服務
[root@backup ~]# rsync --daemon
[root@backup ~]# netstat -lntup|grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 4592/rsync
配置多模塊
守護進程的訪問控制設置
1.只有白名單,只允許白名單訪問,其餘拒絕
2.只有黑名單,拒絕黑名單的網段,其餘允許
3.即有白名單又有黑名單,白名單允許,黑名單拒絕,其餘允許。白名單優先於黑名單