首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用wget同时下载多个文件?

如何使用wget同时下载多个文件?
EN

Unix & Linux用户
提问于 2021-11-24 17:08:32
回答 1查看 3.3K关注 0票数 2

我正在用wget从包含我需要下载的文件的URL的csv文件下载330 k科学文件。所以,我使用的命令是

代码语言:javascript
运行
复制
wget -i all_the_urls.csv

我的文件all_the_urls.csv看起来像这样

代码语言:javascript
运行
复制
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/秒,当文件下载1乘1,他们的下载速度显示为150 kB/秒,这是微不足道的比较。因此,关于带宽,一次下载多个文件是有意义的(至少我想是这样的)。

您还能告诉我如何执行以下一种可能的备选方案:

  • 在下载文件之前将其压缩,希望单个大型zip文件能够更快地下载。
  • 我正在下载的文件是.fits,包含3个表。实际上,我只需要第一张桌子在每一张。因此,如果我可以使wget访问并只下载第一个表(最好将所有第一个表附加到一个大文件/表中),那么这也可以节省时间。

任何建议或想法

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2021-11-24 17:19:42

您可以使用parallel。它可以在大多数Linux发行版中使用。

-jN意味着N个并行程序将运行。您可以将其调到类似于-j8或更多的内容。

代码语言:javascript
运行
复制
cat url-list | parallel -j8 wget {}

或者另一种

代码语言:javascript
运行
复制
cat url-list | parallel -j8 wget ' ' {}

cat正在读取带有要下载的URL的文件。我的档案看起来很像:

代码语言:javascript
运行
复制
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决定了多少)。{}是管道输入行。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/678915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档