wget是GNU/Linux下的一个非交互式(non-interactive)网络下载工具,支持HTTP、HTTPS与FTP协议,并能够指定HTTP代理服务器。虽然wget命令与curl命令相比支持的协议并不多,且只能下载不能上传,其自身还是有一些很出色的特性的。例如,
与很多下载工具不同,wget的下载任务可以在用户登出、断开连接的情况下在后台继续运行。当用户是远程登录到主机操作且有大量资源需要下载时,这个特性非常实用。
wget能够将网站服务器上的HTML、XHTML、CSS等文件全部下载下来,并在本地创建与服务器同样的目录结构,以及将下载网页中的链接转换为本地链接。这样一来,就可以实现网站页面的本地浏览。所以,用wget下载线上的软件文档非常方便。
wget支持断点续传,因而适用于网速较慢和连接不稳定的环境。
wget命令的控制参数比较多,下面对其中较为常用的部分予以介绍。
-c
:执行断点续传。-i file_name
:可以将所有需要下载的链接都放入文件file_name
中,然后wget则可以批量执行下载任务。-r
:执行递归下载。-l recursion_level
:指定递归下载的目录深度。-l 0
则为不限制深度。-np
:递归下载时不要上升到父目录,即只限定在指定的网站目录内下载。-H
:递归下载时如果页面依赖外部网站资源,使该选项则可以对其下载。-t retry_times
:指定当连接中断时重新尝试连接的次数。-t 0
则为无限次尝试重连。-N
:保留下载文件的时间戳。-p
:令wget下载HTML页面需要加载的所有相关文件,包括图片、声音、样式单等。-k
:令wget在下载任务结束后,将文件中的链接转为本地链接,从而适于本地页面浏览。--proxy-user
与--proxy-password
:指定代理服务器的用户名与密码。代理服务器的地址则可以在环境变量http_proxy
或ftp_proxy
中设定。--no-remove-listing
:在从FTP下载文件的过程中不移除包含远端服务器目录与文件列表信息的.listing
临时文件。该文件可用于核验是否完成了对所有文件的下载。-m
:该选项适用于完整地镜像一个站点。其等价于-r -N -l inf --no-remove-listing
,即含义为:无限深度递归下载,保留源文件的时间戳,并保留.listing
文件。
将上述参数进行有机组合,则可以实现我们期望的任何下载任务了。例如,使用如下命令下载整个网站用于本地浏览。
$ wget -c -r -l 0 -t 0 -p -np -k -H https://plus.maths.org/content/
本文对wget命令的介绍就到这里。感兴趣的朋友可以在自己的GNU/Linux系统上尝试一下。Windows用户亦可以在Cygwin下运行wget。