wget下载与多个同时连接

我正在使用wget下载网站内容,但wget一个接一个地下载文件。

如何使用4个并发连接来下载wget?

使用aria2:

aria2c -x 16 [url] # | # | # | # ----> the number of connections 

http://aria2.sourceforge.net

我喜欢它 !!

Wget不支持多个套接字连接,以加速下载文件。

我想我们可以做得比gmarian回答好一点。

正确的方法是使用aria2

 aria2c -x 16 -s 16 [url] # | | # | | # | | # ---------> the number of connections here 

我发现(可能) 一个解决scheme

在从一台服务器下载几千个日志文件的过程中,我突然需要在BSD中进行一些严重的multithreading下载,最好是使用Wget,因为这是我能想到的最简单的方式。 有一点四处张望,把我引向了这个小块头:

 wget -r -np -N [url] & wget -r -np -N [url] & wget -r -np -N [url] & wget -r -np -N [url] 

只要重复wget -r -np -N [url]就可以得到所需的线程…现在给出这个不是很漂亮,而且确实有更好的方法来做到这一点,但是如果你想要快速和肮脏的东西,它应该做诀窍…

注意:选项-N使得wget只下载“更新”的文件,这意味着它不会覆盖或重新下载文件,除非它们的时间戳在服务器上发生变化。

由于GNU并行还没有提到,让我换一种方式:

 cat url.list | parallel -j 8 wget -O {#}.html {} 

另一个可以做到这一点的程序是axel

 axel -n <NUMBER_OF_CONNECTIONS> URL 

Ubuntu的手册页 。

我强烈build议使用httrack。

例如: httrack -v -w http://example.com/

它将默认使用8个同时连接的镜像。 Htrack有很多select在哪里玩。 看一看。

wget无法下载多个连接,而是可以尝试用户的其他程序,如aria2。

正如其他海报所提到的,我build议你看看aria2 。 从版本1.16.1的Ubuntu手册页:

aria2是一个用于下载文件的工具。 支持的协议是HTTP(S),FTP,BitTorrent和Metalink。 aria2可以从多个来源/协议下载文件,并尝试利用您的最大下载带宽。 它支持从HTTP(S)/ FTP和BitTorrent同时下载文件,而从HTTP(S)/ FTP下载的数据则上传到BitTorrent群。 使用Metalink的块校验和,aria2在下载像BitTorrent这样的文件时自动validation数据块。

您可以使用-x标志来指定每个服务器的最大连接数(默认值:1):

 aria2c -x 16 [url] 

如果同一个文件在多个位置可用,您可以select从所有位置下载。 使用-j标志为每个静态URI指定最大并行下载数(默认值:5)。

 aria2c -j 5 [url] [url2] 

看看http://aria2.sourceforge.net/了解更多信息。; 对于使用信息来说,手册页是真正的描述性的,并且在底部具有使用示例。 在线版本可以在http://aria2.sourceforge.net/manual/en/html/README.htmlfind。;

一个新的(但尚未发布)的工具是Mget 。 它已经有很多Wget的选项,并附带一个库,允许您轻松地将(recursion)下载embedded到您自己的应用程序中。

回答你的问题:

mget --num-threads=4 [url]

UPDATE

Mget现在是作为Wget2开发的,有许多bug修复和更多function(例如HTTP / 2支持)。

--num-threads现在是--max-threads

尝试pcurl

http://sourceforge.net/projects/pcurl/

使用curl而不是wget,并行下载10段。

他们总是说这取决于,但是当涉及到网站镜像最好存在httrack 。 这是超快速和容易的工作。 唯一的缺点是所谓的支持论坛,但你可以使用官方文档find你的方式。 它具有GUI和CLI接口,它支持cookies只是阅读文档这是最好的(可以使用这个工具,你可以下载整个networking在你的硬盘上)

 httrack -c8 [url] 

默认情况下,同时连接的最大数量限制为8,以避免服务器过载

make可以很容易并行化(例如make -j 4 )。 例如,下面是一个使用wget并行下载文件的简单Makefile

 BASE=http://www.somewhere.com/path/to FILES=$(shell awk '{printf "%s.ext\n", $$1}' filelist.txt) LOG=download.log all: $(FILES) echo $(FILES) %.ext: wget -N -a $(LOG) $(BASE)/$@ .PHONY: all default: all