
是否有一個命令列工具支援多個同時連接和多個網路協定(ftp、http 等)?
這是一個實際的例子:
我在 ssh 伺服器上有一個很大的備份文件,我想傳輸到我目前的機器上。檔案下載時間太長,因此我想使用多個同時網路連線來加快速度。假設 ssh 伺服器負載不重。
下載次數多個文件/URL使用同時連接是不相關對於這個問題。
我不想編寫任何程式碼來解決這個問題。
答案1
這遠端傳輸協定程式可以處理多種網路協定和同時連接。
協議支援:
Lftp支援以下協定:
- 文件傳輸協定
- sftp
- http 和 https
- 位元流
有關 ftp 等的更多信息這裡。
並行下載:
<URI>
若要使用 2 個同時連線下載位於下列位置的單一大檔案:
lftp -c "pget -c -n 2 <URI>"
第一個-c
選項指定要執行的命令。 pget
使用多個並行連線建立檔案傳輸。第二個-c
選項表示如果此傳輸之前已中斷,則繼續傳輸。此-n
選項限制要使用的最大連線數。
在線有有關命令和選項的更多信息手冊頁。
警告:這可以加快傳輸速度,但會給網路和伺服器帶來沉重負擔。加速取決於網路和伺服器條件。
解決問題中的實際例子:
lftp -c "pget -c -n 2 sftp://[email protected]/~/backups/large.tar.gz"
此範例使用 2 個同時連線透過 ssh (sftp) 下載大型備份檔案。它假設您有無密碼 ssh 登入設定。
註:Lftp也可以在互動模式下使用;與其他 ftp 指令類似。
答案2
aria2
支援多個連線以及 FTP、HTTP 和 SFTP(等等)。
例如:
aria2c -j ${num_concurrent} "${uri}"
我想使用多個同時網路連線來加快速度
除非伺服器配置為限制單一連接,否則執行多個並行下載可能不會帶來任何好處......事實上,它可能會對您的吞吐量產生負面影響。
使用標準工具(即:rsync
、scp
、curl
)將通常給你你所追求的。
如果斷開連接/部分傳輸是一個問題,那麼像這樣的實用程式可能會很有用,但請注意,這rsync --partial
也會有所幫助。