Linux 下载文件中存储的多个url

Linux 下载文件中存储的多个url,linux,performance,Linux,Performance,我有一个txt文件,其中包含所有图像的url。 每个url都位于新行上 我想下载所有的网址。我搜索了网页,发现带有-I选项的wget命令很有用,但我无法区分是每个链接打开一个连接然后下载,还是只打开一个连接并下载所有文件 我想问的要点是,我需要一个工具/程序/任何可以超高速下载所有这些图像的东西 txt文件有数百万个图像链接,因此当我尝试使用uget工具时,它的速度相对较慢,而且无法加载所有图像。因此,建议一些以闪电般的速度下载的方法?您需要的是并行性。如果单个线程不能足够快地下载文件,则需要多

我有一个txt文件,其中包含所有图像的url。 每个url都位于新行上

我想下载所有的网址。我搜索了网页,发现带有
-I
选项的
wget
命令很有用,但我无法区分是每个链接打开一个连接然后下载,还是只打开一个连接并下载所有文件

我想问的要点是,我需要一个工具/程序/任何可以超高速下载所有这些图像的东西


txt文件有数百万个图像链接,因此当我尝试使用
uget工具时,它的速度相对较慢,而且无法加载所有图像。因此,建议一些以闪电般的速度下载的方法?

您需要的是并行性。如果单个线程不能足够快地下载文件,则需要多个线程。虽然限制因素可能是您的Internet连接带宽,但在这种情况下,没有任何帮助

您是否想过手动将文件拆分为十个或一百个部分,然后使用十个或一百个
uget
进程从每个文件下载URL?这将是一个简单的黑客添加并行下载过程

当然,您可以使用Python或Java来开发一个软件,为您启动多个线程并处理URL,但是您需要熟悉线程编程,在这两种情况下,将文件拆分为多个并启动多个
uget
进程可能更简单,因为开发软件需要很多时间,您可能无法在以后使用该软件来节省时间

服务器是否由您控制?一台或多台服务器?如果所有图像都在一台服务器上,而不是由您控制,我会考虑不要在服务器上放置太多的负载。
我以前也遇到过类似的问题,在这种情况下,我使用Java代码下载图像,只有一个线程。此外,我在下载图像之间放置了有意的睡眠呼叫,以避免服务器加载过多。所以,我不想要表现;我不想给服务器增加太多负载。在这种情况下,只有一台服务器,它不是由我控制的。

您也可以执行for循环。 如果存储URL的文件名为urlfile.txt,则可以执行

# for in i `cat urlfile.txt` ; do ; wget -i $i ; done

Excellet anwer,但我没有一个文件我有很多文件有数百万个链接,所以不可能断开,其次它没有回答每个请求都单独处理或仅通过单个连接(例如,使用一个线程)处理的问题,这些文件是什么格式的?每个URL一行?如果您有例如5个文件,并且希望以3个线程下载,您可以尝试将这些文件连接在一起:cat file1.txt file2.txt file3.txt file4.txt file5.txt>fileall.txt,然后将fileall.txt拆分回filenew1.txt、filenew2.txt和filenew3.txt,然后将uget与filenew1.txt一起使用,filenew2.txt和filenew3.txt我不知道uget是使用每个进程一个连接还是每个请求一个连接下载文件,但是如果您想要性能,由于使用多个执行线程,您无论如何都需要多个连接。无论如何,如果您想快速下载文件,最好选择一个快速想出的解决方案,在选择解决方案之前,不要无休止地分析解决方案的属性。我也做过类似的工作,但问题是每次wget超出范围时,都会创建新连接并终止以前的连接,这会很慢吗?