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

时间:2015-03-23 08:28:33

标签: linux performance

我有一个txt文件,其中包含图像的所有网址。 每个网址都在新的一行。

我想下载所有网址。我搜索了网页,发现带有wget选项的-i命令很有用,但我无法确定是否每个链接都打开一个连接,然后下载或只打开一个连接,所有文件都已下载。

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

txt文件有数百万的图像链接,所以当我尝试uget tool时,它比较慢,而且它无法加载所有图像。那么建议一些快速下载的方法吗?

2 个答案:

答案 0 :(得分:1)

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

您是否考虑过手动将文件拆分为十个或一百个,然后使用十个或一百个uget进程从每个文件下载URL?这对于在下载过程中添加并行性是一件容易的事。

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

服务器是否由您控制?一台或多台服务器?如果所有图像都在一台服务器上并且它不受您控制,我会考虑不要在服务器上施加太多负载。

我之前遇到过同样的问题,在这种情况下,我使用Java代码下载图像,只使用一个线程。此外,我在下载图像之间安排了故意的睡眠呼叫,以免加载服务器太多。所以,我不想要表现;我不想在服务器上加载太多负载。在那种情况下,只有一台服务器,它不受我控制。

答案 1 :(得分:-1)

你也可以做一个for循环。 如果您存储网址的文件名为urlfile.txt,则可以执行

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