Rsync介紹
什麼是rsync
rsync是一款開源、快速、多功能、可實作全量及增量的本地或遠端資料備份的優秀軟體。rsync軟體适用于Unix/linux/Windows等多種作業系統平台。
rsync英文稱為remote synchronization(n,同步),從軟體的名稱就可以看出來,rsync具有可使本地和遠端兩台主機之間的資料快速複制、遠端備份的功能。這個功能類似于ssh帶的scp指令,但是又優于scp指令的功,scp每次都是全量拷貝,而rsync可以增量拷貝。當然,rsync也可以在本地主機的不同分區或目錄之間全量及增量的複制資料,這又類似cp指令。但是同樣也優于cp指令,cp每次都是全量拷貝,而rsync可以增量拷貝。
在備份複制資料的時候,預設情況下,rsync通過其獨特的“quick check”算法,它僅複制大小或者最後修改時間發生變化的檔案或目錄,當然也可根據權限、屬主等屬性的變化同步,但是需要指定相應的參數,甚至可以實作隻同步一個檔案裡有變化的内容部分,是以,可以實作快速的同步備份資料,即增量複制。而scp、cp都是全量複制。
Cent6和7上預設版本Rsync 3.x是一邊比對差異,一邊對差異部分進行複制。
總結:一個rsync相當于scp、cp、rm,而且更優
官網:
rsync端口:873
rsync運作模式:C/S
Rsync的特性
-支援拷貝普通檔案與特殊檔案,如連結檔案、裝置檔案等。
-支援排除指定檔案或目錄同步的功能,相當于打包指令tar的排除功能。
-可以做到保持原檔案或目錄的權限、時間、軟硬連結、屬主、組等所有屬性均不改變。
-可實作增量複制,即隻複制發生變化的資料,是以資料傳輸效率很高。
-可以使用 rcp、rsh、SSH 等方式來配合進行隧道加密傳輸檔案(Rsync 本身不對資料加密)。
-可以通過 socket(程序方式)傳輸檔案和資料(服務端和用戶端)。
-支援匿名或認證(無須系統使用者) 程序模式傳輸,安全地進行資料備份及鏡像。
scp指令介紹
## 推(上傳):
比如把web01的1.txt推到backup
0 ✓ 08:46:58 root@web01,172.16.1.7:~ # vim 1.txt 要輸點東西進去
0 ✓ 08:47:36 root@web01,172.16.1.7:~ # scp -r /root/1.txt [email protected]:/tmp
輸入密碼即可
0 ✓ 08:48:55 root@backup,172.16.1.41:/tmp # ll 看一眼,backup機已經有了
total 60
-rw-r--r-- 1 root root 7 Sep 13 08:56 1.txt
## 拉(下載下傳):反過來
scp -r [email protected]:/tmp/1.txt /opt
# 注:scp基于SSH協定,停ssh就不能用了。scp是全量拷貝,rsync支援增量
關于備份類型
全量備份
将資料全部備份出來(效率低下)
增量備份
基于上一次的備份,将新增資料進行備份
差異備份
基于全量備份,新增的資料進行備份
rsync的三種傳輸模式
## 1、本地模式(類似cp,但rsync有增量方式)
本地拷貝指令:
Local: rsync [OPTION...] SRC... [DEST]
rsync 選項 本地源檔案 本地目标路徑
預設是檔案
-a 目錄
# 例如
rsync -a /etc/ /tmp 隻是将/etc下的檔案和目錄傳輸過去,不包括etc目錄本體
rsync -a /etc /tmp 将/etc目錄及其下所有東西都傳輸
## 2、遠端模式(通過ssh傳輸資料,類似scp指令)
# 推
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
推 rsync 選項 要推的本地檔案 遠端主機@IP:目标路徑
# 例如
[root@web01 ~]# rsync -avz /root/1.txt [email protected]:/tmp/
[email protected]'s password: ...
效果同scp
[root@web01 ~]# scp /root/1.txt [email protected]:/tmp/
# 拉
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
拉 rsync 選項 遠端主機@IP:要下載下傳的檔案 下載下傳到本地的位置
# 例如
[root@web01 ~]# rsync -avz [email protected]:/etc/hostname ./ #拉取遠端檔案
[root@web01 ~]# rsync -avz [email protected]:/root/ /backup/ #拉取遠端目錄下的所有檔案
[root@web01 ~]# rsync -avz [email protected]:/root /backup/ #拉取遠端目錄以及目錄下的所有檔案
# 說明:實際工作中why更多是用守護程序模式
1, 遠端模式和scp差不多,基于ssh,要用到系統使用者和密碼,不安全,是以我們用守護程序模式
2, 守護程序模式不需要ssh協定,服務啟動後,自帶端口873
3, 守護程序模式可以設定匿名使用者,不需要使用系統使用者,更安全
# 3、守護程序模式
守護程序模式是在c/s之間進行資料複制。通常需要服務端部署rsync守護程序模式服務,然後在用戶端執行指令,實作資料推拉等操作
#推
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync 選項 本地資源 虛拟使用者名@IP::子產品名
例如:将nfs的 /etc/shadow推送至rsync備份伺服器的backup子產品
[root@nfs ~]# rsync -avz /etc/shadow [email protected]::backup
#拉
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync 選項 虛拟使用者名@主機IP::子產品名 拉到本機哪裡
例如:把backup子產品資料拉到本機/opt下
[root@nfs ~]# rsync -avz [email protected]::backup /opt
rsync選項總結
# -a 歸檔模式傳輸, 等于-tropgDl
----------------------------------
-t 保持檔案時間資訊
-r 遞歸傳輸目錄及子目錄
-o 保持檔案屬主資訊 owner
-p 保持檔案權限 permit
-g 保持檔案屬組資訊
-D 保持裝置檔案資訊 device
-l 保留軟連結
# -v 顯示過程
# -z 傳輸時壓縮以提高效率,到那邊自動解壓
# -P 顯示進度
-L 保留軟連結指向的目标檔案
-e 傳遞參數
--exclude=PATTERN 指定排除不需要傳輸的檔案模式
--exclude-from=file(eg:paichu.txt) 指定排除多個
vim paichu.txt
--bwlimit=100 限速XXX傳輸,看需求用
--partial 斷點續傳(很垃圾的伺服器可能會斷電那種,保險起見才會用)
比如迅雷你下了一半電腦突然關機,再開機不會重新下。但網頁的話閃退就得重下
# --delete 決定資料是否要同步,有這個就同步
# --password-file=xxx 使用密碼檔案
rsync企業常見應用場景
1、伺服器間周期性資料備份:手動或定時任務+rsync
見rsync實戰(二)
适合:網站程式檔案;系統配置檔案變更
2、NFS到Backup伺服器的實時複制:inotify/sersync+rsync
利用rsync結合inotify/sersync做實時資料複制。根據nfs上目錄的變化,将變化的資料通過inotify/sersync結合rsync指令複制到backup伺服器。
适合:使用者上傳的普通檔案
實踐見後續中期架構。