如何使用多個同時連接透過 sftp 或 http 等下載單一大型檔案

如何使用多個同時連接透過 sftp 或 http 等下載單一大型檔案

是否有一個命令列工具支援多個同時連接和多個網路協定(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}"

我想使用多個同時網路連線來加快速度

除非伺服器配置為限制單一連接,否則執行多個並行下載可能不會帶來任何好處......事實上,它可能會對您的吞吐量產生負面影響。

使用標準工具(即:rsyncscpcurl)將通常給你你所追求的。

如果斷開連接/部分傳輸是一個問題,那麼像這樣的實用程式可能會很有用,但請注意,這rsync --partial也會有所幫助。

相關內容