標籤: scp
當需要在機器之間傳輸400gb檔案的時候,你就會非常在意傳輸的速度了。預設情況下(約125mb頻寬,網路延遲17ms,intel e5-2430,本文後續討論預設是指該環境),scp的速度約為40mb,傳輸400gb則需要170分鐘,約3小時,如果可以加速,則可以大大節約工程師的時間,讓攻城師們有更多時間去 看個電影,陪陪 家人。
1. 結論
* 改變ssh加密演算法,可以讓速度更快; 通常,越弱的加密演算法,速度越快
* 通常壓縮會降低scp速度,但這與資料型別有很大關係,對壓縮率非常高的資料啟用壓縮,可以加速
* 壓縮級別對傳輸效率影響很小
所以,簡單嘗試如下,讓你的scp速度double一下:
scp -r -c arcfour128 ...
scp -r -c aes192-cbc ...
scp -r -c arcfour128 -o "macs [email protected]" ...
注:啟用壓縮使用引數: -o "compression yes"
2. 測試資料:加密演算法和壓縮的影響
這裡對比了12種ssh中實現的加密演算法和是否使用壓縮的傳輸效率,測試檔案使用的是innodb的1gb*4的日誌檔案(注意:不同型別的檔案測試結果會很不同),這裡縱座標單位為mb/s,資料分為壓縮傳輸和不壓縮傳輸兩組:
可以看到,不同加密演算法傳輸速度相差很大;使用了壓縮之後,速度下降很多,也看到不同加密演算法加密後區別並不大。
3. 關於是否啟用壓縮
* 壓縮只有在網路傳輸速度非常慢,以致於壓縮後節省的傳輸時間大於壓縮本身的時間,這時才有效果,所以是否啟用壓縮,需要實際測試
* 通常建議,傳輸前先壓縮,而不是使用ssh的壓縮;建議使用pigz/lbizp2等並行壓縮工具
* 資料中大量重複、空洞,這類適合壓縮的資料,可以嘗試壓縮選項,例如如下是一組,大量"空洞"資料的測試:
看到,壓縮大大提高了傳輸效率
4. "壓縮級別"對傳輸速度影響不大
最後一組對比是,將壓縮級別從1改到9,對比傳輸速度,縱座標單位mb/s,對12種加密演算法分別使用了測試9個壓縮級別,資料如下:
可以看到,壓縮級別對傳輸影響較小。ssh使用的預設壓縮級別是6。
5. 測試資料:完整性校驗演算法macs選擇
通過選項macs可以設定對應的雜湊演算法,man ssh_config可以看到支援哪些雜湊演算法。這裡對了比了12中加密演算法下使用不用的完整性校驗演算法的效能情況:
看到,絕大數情況下"[email protected]"( 關於此雜湊)效能都更好,所以建議嘗試使用此雜湊演算法做驗證,看看你的場景下速度是否與提公升。也可以看到,預設的hmac-md5雜湊在預設的加密aes128-ctr下表現比較好;
6. 參考閱讀
* man scp/ssh/ssh_config
scp命令預設傳輸速度多大 scp命令詳解
1 命令格式 scp 引數 原路徑 目標路徑 2 命令功能 scp是 secure copy的縮寫,scp是linux系統下基於ssh登陸進行安全的遠端檔案拷貝命令。linux的scp命令可以在linux伺服器之間複製檔案和目錄。和它類似的命令有cp,不過cp只是在本機進行拷貝不能跨伺服器,而且sc...
scp命令 傳輸
從遠處複製檔案到本地目錄 scp root 10.10.10.10 opt soft nginx 0.5.38.tar.gz opt soft 從遠處複製到本地 scp r root 10.10.10.10 opt soft mongodb opt soft 上傳本地檔案到遠端機器指定目錄 scp ...
SCP傳輸命令
遠端檔案的複製,使用者不同的主機之間複製檔案拉取 推送 ssh協議保證了複製的安全性 特點 scp命令每一次都是全量完全 完整複製,導致工作效率不高 根據這個特點我們一般在第一次複製的時候使用,後面的備份推薦rsync命令 命令使用 1.scp 可選項引數 a主機檔案 遠端b主機ip 檔案推送檔案 ...