Wget

wget如何同時下載多個文件?

  • November 25, 2021

我正在使用 wget 從包含我需要下載的文件的 URL 的 csv 文件中下載 ~330k 科學文件。所以,我正在使用命令

wget -i all_the_urls.csv

我的文件 all_the_urls.csv 看起來像這樣

http://dr16.sdss.org/sas/dr16/sdss/spectro/redux/v5_13_0/spectra/lite/11040/spec-11040-58456-0109.fits
http://dr16.sdss.org/sas/dr16/sdss/spectro/redux/v5_13_0/spectra/lite/11068/spec-11068-58488-0780.fits
http://dr16.sdss.org/sas/dr16/sdss/spectro/redux/v5_13_0/spectra/lite/11068/spec-11068-58488-0240.fits
...

這些文件很小,每個約 250 kB。wget但是它們的數量是如此之大,以至於如果它只是一個接一個的文件,則下載它們需要幾天的時間。是否可以使用 wget 命令以便我可以同時下載多個文件?注意 - 我的問題與許多其他關於從同一網站下載許多文件的問題並不重複。另外,請不要建議我wget2- 我在安裝時遇到了一些問題wget2,我在這裡尋找其他解決方案。

這可能是相關的,我的網際網路連接約為 550 MB/秒,當文件逐個下載時,它們的下載速度顯示為 150 kB/秒,相比之下這是微不足道的。因此,關於頻寬,一次下載多個文件是有意義的(至少我猜是這樣)

您能否告訴我如何執行其中一種潛在的替代方案:

  • 在下載文件之前先壓縮文件,希望單個大 zip 文件可以更快地下載
  • 我正在下載的文件.fits包含 3 個表格。我實際上只需要他們每個人的第一張桌子。因此,如果我只能wget訪問和下載第一個表(最好將所有第一個表附加到一個大文件/表中),那麼這也可以節省時間

Tnx 的任何建議或想法

您可以使用parallel. 它在大多數 Linux 發行版中都可用。

-jN表示將執行 N 個並行程序。您可以將其調整為類似-j8甚至更多。

cat url-list | parallel -j8 wget {}

或者

cat url-list | parallel -j8 wget ' ' {}

cat正在讀取帶有要下載的 URL 的文件。我的文件看起來很喜歡:

https://XXX/all/Packages/a/abrt-2.10.9-20.el8.x86_64.rpm
https://XXX/all/Packages/a/abrt-addon-vmcore-2.10.9-20.el8.x86_64.rpm
...

然後將輸出通過管道傳輸到負責旋轉多個 wget 的並行(-jN 決定多少)。是{}管道輸入線。

引用自:https://unix.stackexchange.com/questions/678915