rsync udr——遠端大檔案傳輸加速
本文介紹了大檔案遠端傳輸場景下,rsync udr 模式的應用方法和加速效果。
什麼是 rsync?
rsync 是一款快速增量備份工具,類似 Unix 系統下的資料映象備份工具——RemoteSync。rsync 遠端同步支援本地複製、與其他ssh、rsync主機同步。
**其特性如下:**
1、可以映象儲存整個目錄樹和檔案系統。
2、可以很容易做到保持原來檔案的許可權、時間、軟硬連結等等。
3、無須特殊許可權即可安裝。
4、快速:第一次同步時 rsync 會複製全部內容,但在下一次只傳輸修改過的檔案。rsync 在傳輸資料的過程中可以實行壓縮及解壓縮操作,因此可以使用更少的頻寬。
rsync 可以通過 rsh 或 ssh,也能以 daemon 模式去執行,在以 daemon 方式執行時 rsync serve r會開啟一個 873 埠,等待客戶端去連線。連線時,rsync server 會檢查口令是否相符,若通過口令查核,則可以開始進行檔案傳輸。第一次連通完成時,會把整份檔案傳輸一次,以後則就只需進行增量備份。
在日常運維中,使用 rsync 的本地模式來代替cp/scp拷貝檔案、使用 rsync 的 shell 或 daemon 模式來完成使用者、idc 間大量資料的交換,其實也是一種不錯的選擇。在此基礎上,我們為了讓資料能更快的傳輸,可以使用 rsync 的 udr 模式,現 github 上有開原始碼供使用者下載使用。
udr 模式可以理解為是 rsync 的一個升級版本,在 rsync 服務外封裝了一層服務來替代 rsync 的daemon模式,資料傳輸過程中採用了 UDT 協議。
備註:UDT 是基於 UDP(UDP-based Data Transfer Protocol)的網際網路資料傳輸協議。
如何使用 rsync 的 udr 模式
1、下載地址
https://github.com/LabAdvComp/UDR
2、安裝
下載解壓後執行 make 操作,會生成 udr 命令:
make -e os=XXX arch=YYY XXX: [LINUX(default), BSD, OSX] YYY: [AMD64(default), POWERPC, IA64, IA32]複製程式碼
3、配置
主配置檔案 udrd.conf
主配置中呼叫了 rsyn c 的配置檔案 rsyncd.conf(目錄、使用者許可權配置等,更多的配置詳解可參考官網文件)
4、啟動
主配置預設啟動在 /etc/udrd.conf,如在別的路徑,可加-c來指定
python udrserver.py [-v] [-s] [-c configfile] start|stop|restart|foreground複製程式碼
5、使用
在原rsync命令執行的時候,前面加udr命令即可
udr rsync hostname.com::module/path/to/file複製程式碼
測試對比
目前測試環境有限,只在內網環境下進行了測試:
1、在穩定的內網網路環境(同網段)用兩種不同的傳輸方式多次進行了對比,udr方式和常規的rsync方式速度基本相當。
2、在內網網路環境(跨網段、跨機房)用兩種不同的傳輸方式多次進行了對比,udr方式要明顯快於常規的rsync方式,傳輸大小為1G的檔案進行對比:
小結
udr服務簡單來說就是使用UDP協議把原來使用TCP協議的rysnc服務來封裝起來,使用 UDP 協議來傳輸資料,適用於遠距離的大檔案傳輸,效果會更明顯。有適合這種場景的同學可以拿來一試。
本文首發於公眾號“小米運維”,點選檢視原文。