Wget 是在*inx 系统中常用的命令行下载工具。Linux 中的版本是 GNU Wget,它是 GNU 计划的一部分,名字是“World Wide Web”和“Get”的缩写,暗示了软件的主要功能。目前它支持通过 HTTP、HTTPS 和 FTP 这三个最常见的 TCP/IP 协议协议下载文件。

由于 Wget 是非交互式的命令行工具,一旦开始运行,就无需用户的操作,所以它非常适合于在脚本中使用,也可用于定时执行的程序中。 Wget 可以跟踪 HTML 页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构。这又常被称作”递归下载”。在递归下载的时候,Wget 遵循 Robot Exclusion 标准(/robots.txt),Wget 还会检查文件的时间戳,避免重复下载。Wget 可以在下载的同时,将链接转换成指向本地文件,以方便离线浏览。 Wget 在带宽很窄的情况下和不稳定网络中有很强的适应性。如果是由于网络的原因下载失败,Wget 会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次连到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。 Wget 还具有如下特点:

  • 支持多种操作系统,包括类 unix 操作系统和 Windows 系统
  • 支持代理服务器、HTTP cookies 等
  • 支持 HTTP 链接保持,加快从一个服务器连续下载多个文件的速度
  • 使用 GPL 协议发布,且可免费下载

当然,Wget 的功能也是有限的,主要的问题如支持的协议还不够多。流行的流媒体协议 mms 和 rtsp 也没有得到支持,还有广泛使用各种的 P2P 协议也没有涉及。

使用方法

Wget 最基本的用法很简洁:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 下载 example.com 的首页并且保存为 "index.html"
wget http://www.example.com/

# 下载Wget的源代码
wget ftp://ftp.gnu.org/pub/gnu/wget/wget-latest.tar.gz

# 下载example.com首页的所有内容
wget -r -l 0 http://www.example.com/

# 断点续传未下载完的大文件
wget -c http://example.com/really-big-file.iso

Wget 还有一些奇技淫巧:

1
wget -r -np -nd http://example.com/packages/

上面的命令可以下载 http://example.com/packages 目录下的所有文件。其中-np表明不遍历父目录,-nd 表示不在本机重新创建目录结构。 –accept也很有用:

1
wget -r -np -nd --accept=iso http://example.com/centos-5/i386/

上面的命令表示只下载后缀为 iso 的文件。也可以使用通配符做为参数值,这时 Wget 将把其当做一个模式串,下载所有文件名与之匹配的串。 –reject–accept恰好相反,表明不下载哪些文件。 下载一个 URL 列表文件中的所有文件

1
wget -i filename.txt

提示

这里的列表文件也可以是一个 HTML 文档,Wget 会下载其中的链接,如果是相对链接,基地址可以用 –base 参数说明。

为一个网站做镜像,把链接转成本地链接:

1
wget -m -k (-H) http://www.example.com/

-H 参数会允许 Wget 跨站点下载文件,请按需使用。 参考  http://linux-wiki.cn/wiki/Wget