本文主要介绍GNU Wget实用程序及其在在FreeBSD操作系统下的安装过程,并对几个最常用的下载功能进行了说明,主要包括以下几个方面:
- GNU Wget概述
- Wget程序安装
- Wget常用功能
1 GNU Wget概述
GNU Wget是一个免费的实用程序,方便用户以非交互方式下载文件,支持HTTP、HTTPS和FTP协议,也可以通过HTTP代理进行检索。
(1)非互式
Wget是非交互式的,这意味着它可以在后台工作,下载过程中不需要用户登录,也不需要用户介入。用户启动Wget任务后即可断开与系统的连接,留下Wget默默地完成工作,这在传输大量数据或者执行耗时较长的任务时提供了极大的便利。
(2)递归下载
Wget可以跟踪HTML、XHTML和CSS页面中的链接,以创建远程网站的本地版本,从而完全重新创建原始网站的目录结构。这有时被称为“递归下载”。当然,Wget会尊重机器人排除标准(/robots.txt)。用户还可以指示Wget将下载文件中的链接转换为指向本地文件,以便脱机查看。
(3)站点镜像
当通过FTP检索时,可以使用文件名通配符匹配和目录的递归镜像。Wget可以读取HTTP和FTP服务器提供的时间戳信息,并将其存储在本地。因此,Wget可以查看远程文件自上次检索以来是否发生了变化,如果有,则自动检索新版本。这使得Wget适合于FTP站点和主页的镜像。
(4)断点续传
Wget被设计为对缓慢或不稳定的网络连接的健壮性。如果由于网络问题导致下载失败,它将继续重试,直到检索到整个文件。如果服务器支持重传,它将指示服务器从上次停止的地方继续下载。
(5)代理服务
Wget支持代理服务器,它可以减轻网络负载,加快检索速度,并提供防火墙后的访问。Wget默认使用被动FTP下载,主动FTP是一个选项。
(6)功能丰富
Wget内置丰富的功能,大多数功能都可以可以通过命令行选项或通过初始化文件进行配置。
(7)免费使用
GNU Wget是一个*软件。这意味着每个人都可以根据*软件基金会发布的GNU通用公共许可证条款使用它、重新分发它和/或修改它,更多的功能请参见GNUWget的官网说明。
2 Wget程序安装
在FreeBSD操作系统中安装Wget非常简便。可以通过Potrs手工编译来安装,也可以通过pkg来安装编译好的二进制程序包。
以root用户在命令行中输入pkg install wget,然后按照提示操作即可安装编译好的Wget程序。
3 Wget常用功能
安装完后,运行 wget --help 命令查看程序帮助。
从帮助信息中可以看出,Wget最简单的使用方式为在wget命令后面直接跟要下载的URL网络地址,那就随便找个地址输入一下看看吧。
同时,也会发现wget中可以设置的参数非常多,大体上分为启动参数、日志与输入文件、下载参数、目录参数、HTTP选项、HTTPS选项、FTP选项、FTPS选项、递归下载选项、递归接受、拒绝选项等等。如此数量的参数看着都让人头大,好在日常应用中涉及的参数不太多,下面结合常用的几个下载场景,对涉及到的选项进行简要说明。
(1)断点续传选项
短格式:-c
长格式:--continue’
断点续传是下载过程中最常用的功能,可以从以前下载的断点处继续下载而不是重新从头来过。这个参数常用于网络不稳定或者耗时较长的大文件下载,命令格式如下:
wget --continue http://localhost/index.html
(2)不生成主机前缀文件夹
短格式:-nH
长格式:--no-host-directories
在下载多个文件时,Wget会解析URL中的目录结构自动生成文件存储结构,默认会从主机开始生成文件夹。这个选项告诉Wget不要从主机以后生成文件夹,不要生成这个主机文件夹,命令格式如下:
wget --no-host-directories http://localhost/index.html
(3)调整扩展名
短格式:-E
长格式:--adjust-extension
如果下载的文件类型为“application/xhtml+xml”或“text/html”而URL却没有以正则表达式“\.[Hh][Tt][Mm][Ll]?”结尾时,这个选项会给文件名加下“.html”后缀,以保证文件类型的正确。这种方式在需要镜像一个网页文件不以html结尾的网站时会起到很大的作用。命令格式如下:
wget --adjust-extension http://localhost/index.html
(4)压缩下载
长格式:--compression=type
压缩下载选项只有一种长格式,用来选择传输过程中的压缩类型,可选项为“auto”、“gzip”和“none”。
如果“auto”或者“gzip”被定义,Wget会请求服务器使用gzip格式压缩这个文件。如果服务器压缩了这个文件,并在响应中加入了相应的“Content-Encoding”头域,接收到的文件将会被自动解压缩。
如果“none”被定义,Wget不会请求服务器压缩这个文件。这也是默认的压缩选项。
命令格式如下:
wget --compression=auto http://localhost/index.html
(5)设置用户代理字符串
短格式:-U agent-string
长格式:--user-agent=agent-string
这个选项设置发送给HTTP服务器的“User-Agent”头字段。HTTP协议允许浏览器通过“User-Agent”头域字段识别自己。服务器也可以通过这个字段来区分“WWW”软件,并进行客户追踪等。Wget通常使用“Wget/version”字符串来标记自己。然而,一些站点可能实施了根据用户代理信息来调整服务输出的策略,可能会拒绝向看起来不像是浏览器的的客户提供信息。此选项允许更改由Wget发布的用户代理头部行。当然,如非必要,最好要使用这个选项。命令格式如下:
wget --user-agent=“FireFox 91.0” http://localhost/index.html
(6)下载所有文件夹
短格式:-r
长格式:--recursive
此选项开启递归下载,因认的树深度为5,如果要自定义树深度可以用以下参数。
短格式:-l depth
长格式:--level=depth
此选项设置递归搜索的子文件夹的深度,这避免下载较深的目录,此选项默认值为5,设置为“-l 0”或“-l inf”代表无限深度。
命令格式如下:
wget -r -l 0 http://localhost/index.html
(7)网站镜像
短格式:-m
长格式:--mirror
此选项用于网站镜像下载。此选项打开了无限深度递归下载和时间戳比较,并且保持FTP目录列表显示,实际上相当于“-r -N -l inf --no-remove-listing”其中“-N”为“--timestamping”选项的短格式,用于比对文件的时间戳,只有文件修改时间变化了的文件才会下载。命令格式如下:
wget -r -N -l inf http://localhost/index.html
wget --mirror http://localhost/index.html
(8)下载页面所有资源
短格式:-p
长格式:--page-requisites
此选项导致Wget去下载为显示这个页面所有必要的文件和资源,包括内联图像、声音、引用的样式表等,以保证离线时能正确地显示页面。通常,当下载单个HTML页面时,不会下载正确显示它所需的任何必要的文档。将“-r”和“-l”一起使用会有所帮助,但是由于Wget通常不区分外部文档和内联文档,因此通常不会下载这些缺少需求的“叶子文档”。下载页面所有资源命令格式如下:
wget --page-requisites http://localhost/index.html
(9)下载整个网站
Wget甚至可以用来下载一个完整的站点,自动转换页面链接以支持离线浏览。使用的选项如下:
--mirror:开启镜像所需要的所有选项。
--no-parent:在递归检索时,永远不要提升到父目录,只下载当前目录结构下的文件。
--convert-links:将所有链接转换成本地链接以便离线浏览。
--page-requisites:下载内联CSS样式文件、图片等所有必需的文件。
命令格式如下:
wget --mirror --no-parent --convert-links --page-requisites http://localhost/
wget --recursive --level=inf --timestamping --no-parent --convert-links --page-requisites http://localhost/