我正在使用 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 的文件。我的文件看起来很喜欢:然后将输出通过管道传输到负责旋转多个 wget 的并行(-jN 决定多少)。是
{}
管道输入线。