如何讓scp跑得更快?

如何讓scp跑得更快?

我使用以下命令透過家庭網路傳輸檔案(當我必須傳輸大量檔案時,我通常使用該tar實用程式將它們存檔):

scp -c blowfish [FILE] [USER]@[ADDRESS]:[PATH]

將 500 Mb 的資料傳送到另一台電腦大約需要 25 分鐘。平均速度約 600 KB/s。我認為絕對必須有一種方法可以讓這個過程更快,因為我​​不相信我能夠在 10 分鐘內輕鬆地從 Web 上獲取 1 GB 的文件,但我無法獲取 500 Mb 的文件文件在更短的時間內透過網路發送。

答案1

兩個想法:

  1. 嘗試不同的密碼
  2. 使用“即時”壓縮

1. 嘗試不同的密碼:

一種想法是測試可用的各種密碼scp,並嘗試確定哪種密碼最適合您。 (這背後的想法是,資料的加密佔用了時間。)透過執行以下命令來尋找可用的密碼:

andrew@athens:~$ ssh -Q cipher
3des-cbc
blowfish-cbc
cast128-cbc
arcfour
arcfour128
arcfour256
aes128-cbc
aes192-cbc
aes256-cbc
[email protected]
aes128-ctr
aes192-ctr
aes256-ctr
[email protected]
[email protected]
[email protected]
andrew@athens:~$ 

這顯示了預設 Xenial Xerus 安裝上的可用密碼,並且可以使用您已經建議的語法添加:

scp -c <cipher> [FILE] [USER]@[ADDRESS]:[PATH]

此選項直接傳遞以ssh測試ssh自身是否有可用的密碼。希望您能找到一種可以提高傳輸速度的密碼,當您找到該密碼時,您可以將其放入~/.ssh/config而不是每次輸入...

2. 使用「即時」壓縮:

scp能夠「即時」壓縮您的傳輸,這意味著壓縮僅在傳輸期間使用,並且在主機或遠端都不會被看到。在使用選項中新增以下內容-C

scp -c <cipher> -C [FILE] [USER]@[ADDRESS]:[PATH]

這是我自己的系統上的一個例子:

debug1: compress outgoing: raw data 365865, compressed 150118, factor 0.41
debug1: compress incoming: raw data 150118, compressed 365865, factor 2.44

The compression level is the same as the one used for gzipand if you really wish to experiment you can use the 'CompressionLevel' option which varies from 1-9, 1 being the fastest compression, 9 being the slowest with best compression and 6 being the預設.可以如下設定~/.ssh/config

Host *
Compression yes
CompressionLevel 9

請記住,這會設定高壓縮全部 scp / ssh傳輸,如果您願意,可以為各個主機設定...

使用該-v選項可以調查您所做的任何更改的影響。透過實驗您會注意到不同的數據將具有不同的壓縮率。

相關內容