將文件從一臺計算機同步或備份到另外一臺計算機的快速簡便的方法是使用rsync。我將介紹一般用於備份數據的命令行選項,並顯示一些選項以極大地將傳輸速度從大約20-25 MB / s加快到90 MB / s以上!linux
rsync協議可以有效地在計算機之間同步文件。它僅經過傳輸更改的文件來完成此操做,除此以外,它還嘗試僅傳輸本地文件和遠程文件之間的差別,以進一步最小化傳輸的數據大小。
底層數據傳輸使用Secure Shell或 SSH保護,這增長了另外一層計算開銷來安全地加密數據,而後傳輸到遠程服務器並再次對其解密。由於我大部分時間都在使用計量互聯網鏈接,因此我在SSH中使用了最大可能的壓縮率,這在本地和快速網絡中使用rsync時會成爲瓶頸。git
個人默認命令行參數,帶有完整rsync手冊頁中的描述:
github
SSH的最大壓縮(在個人配置中默認使用)對帶寬較小的計量鏈接頗有幫助,在這種狀況下,您能夠從減小的數據量中節省時間。在本地快速網絡中,這其實是瓶頸,而且在SSH命令的100%CPU使用率中體現出來。在這種快速的本地網絡中,無需進行任何壓縮便可直接傳輸文件,由於壓縮和解壓縮會比僅傳輸普通文件花費更長的時間。
爲此,可使用如下選項來加速本地網絡中的數據傳輸:
安全
-S
/ --sparse
:將空序列變成稀疏塊--partial
或者-P
是--partial --progress
:保存任何部分傳輸的文件以供未來恢復。注意:文件不會有臨時名稱,所以請確保在整個副本完成以前,沒有其餘指望使用目標的文件。--no-whole-file
這樣須要從新發送的任何內容都會使用增量傳輸。讀取部分傳輸的文件的一半一般比從新寫入要快得多。--inplace
避免文件複製(但前提是在整個傳輸完成以前沒有任何內容讀取目標)
完整的命令將foo文件夾備份到 目標主機desthost上的遠程文件夾欄,而後:服務器
export RSYNC_RSH ="ssh -T -c aes128-ctr -o Compression = no -x"網絡
rsync -avur --progress --delete foo desthost::bar ssh
使用此命令,能夠將傳輸速率從大約20-25 MB / s增長到90 MB/s以上!性能
1. 稀疏文件是一種計算機文件,它能嘗試在文件內容大多爲空時更有效率地使用文件系統的空間。它的原理是以簡短的信息表示空數據塊,而不是在在磁盤上佔用實際空間來存儲空數據塊。只有真實的數據塊會按原樣寫入磁盤。 在讀取稀疏文件時,文件系統會按元數據在運行時將這些透明轉換爲「真實」的數據塊,即填充爲零。應用程序不會察覺這個轉換。優化