在本博文中我们将学习一下wget这个工具。wget可以使用HTTP、HTTPS、和FTP等常见网络协议来从万维网(WWW)获取文件(从它的名字来源也可以看出 World Wide Web Get -> wget)。wget是一个在GUN GPL协议下免费的软件,可以安装在任意Unix-like系统,Windows系统也有它的移植版本。它是一个非交互式命令行工具。Wget的主要特点是它的鲁棒性(稳健性),故而它可以在低速或者不稳定的网络连接中正常使用。为防止网络问题,wget支持断点下载,也就是可以自动接着上次未完成的地方接着下载。同时,wet支持递归下载,它会一只尝试下载文件,直至文件被完全遍历。
一般unix-like系统都自带这个软件。首先,检查一下你的系统中是否有安装在你的系统中,可以使用下面命
$wget --version
GNU Wget 1.15 在 linux-gnu 上编译。
如果wget没有安装在你的系统中,ubuntu可以用下面的命令安装:
$sudo apt-get install wget
使用YUM管理的linux系统可以使用下面的命令下载安装:
$yum -y install wget
Windows系统可以到http://ftp.gnu.org/gnu/wget/下载wget的二进制文件,并将该文件的路径添加到系统path变量中。
下面是十个常用的功能示例
1.单文件下载
这个命令将会下载单个文件并将其存储在当前目录下。它在下载的过程中还会显示下载进度、文件大小、下载速度、日期时间。
$ wget http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz
--2016-05-03 14:12:56-- http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz
正在解析主机 ftp.gnu.org (ftp.gnu.org)... 208.118.235.20
正在连接 ftp.gnu.org (ftp.gnu.org)|208.118.235.20|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 446966 (436K) [application/x-gzip]
正在保存至: “wget-1.5.3.tar.gz”
100%[======================================>] 446,966 9.23KB/s 用时 43s
2016-05-03 14:13:40 (10.1 KB/s) - 已保存 “wget-1.5.3.tar.gz” [446966/446966])
2.给下载的文件起个不同的名字
使用-O
(大写)选项,可以给下载的文件起个不同的名字。这里,我们把给下载的文件起个wget.zip的名字
$ wget -O wget.zip http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz
--2016-05-03 15:56:59-- http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz
正在解析主机 ftp.gnu.org (ftp.gnu.org)... 208.118.235.20
正在连接 ftp.gnu.org (ftp.gnu.org)|208.118.235.20|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 446966 (436K) [application/x-gzip]
正在保存至: “wget.zip”
100%[======================================>] 446,966 4.03KB/s 用时 3m 10s
2016-05-03 16:00:09 (2.30 KB/s) - 已保存 “wget.zip” [446966/446966])
3.使用HTTP协议和FTP协议下载多个文件
这里我们看一下通过一条wget命令使用HTTP协议和FTP协议下载多个文件
wget http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz ftp://ftp.gnu.org/gnu/wget/wget-1.10.1.tar.gz.sig
4.从文见读取URL
你可以在一个文本文件中存储多个URL,使用-i
选项来下载他们对应的资源文件。下面我们已经在wget目录下创建了存储有多条URL的的tmp.txt。
tmp.txt中的内容如下:
http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz
ftp://ftp.gnu.org/gnu/wget/wget-1.10.1.tar.gz.sig
命令如下:
wget -i tmp.txt
5.继续未完成的下载
在下载较大的文件的过程中,可能会由于种种原因我们会中断下载,我们可以使用-c
选项来支持断点续传,这样在下载中断之后重新开启下载任务的时候就可以接着上次未完成的部分接着下载。注意,如果不加上-c
这个选项,wget会在文件名的末尾加上.1这样的扩展名,下次重启下载任务的时候会重新下载这个文件:
wget -c http://cdimage.ubuntu.com/ubuntukylin/releases/16.04/release/ubuntukylin-16.04-desktop-amd64.iso
6.在有.1这样的文件名存在的情况下下载文件
如果你不开启-c
选项,wget将会给文件加上一个.1后缀。如果.1后缀的存在,就加一个.2后缀:
如先不开启-c
下载一个文件,重断操作
wget http://cdimage.ubuntu.com/ubuntukylin/releases/16.04/release/ubuntukylin-16.04-desktop-amd64.iso
--2016-05-03 16:35:42-- http://cdimage.ubuntu.com/ubuntukylin/releases/16.04/release/ubuntukylin-16.04-desktop-amd64.iso
正在解析主机 cdimage.ubuntu.com (cdimage.ubuntu.com)... 91.189.88.39
正在连接 cdimage.ubuntu.com (cdimage.ubuntu.com)|91.189.88.39|:80...
已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 1548091392 (1.4G) [application/x-iso9660-image]
正在保存至: “ubuntukylin-16.04-desktop-amd64.iso”
0% [ ] 5,854,495 1.20MB/s 剩余 23m 32s
再不开启-c
下载相同的文件
$ wget http://cdimage.ubuntu.com/ubuntukylin/releases/16.04/release/ubuntukylin-16.04-desktop-amd64.iso
--2016-05-03 16:36:11-- http://cdimage.ubuntu.com/ubuntukylin/releases/16.04/release/ubuntukylin-16.04-desktop-amd64.iso
正在解析主机 cdimage.ubuntu.com (cdimage.ubuntu.com)... 91.189.88.39
正在连接 cdimage.ubuntu.com (cdimage.ubuntu.com)|91.189.88.39|:80...
已连接
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 1548091392 (1.4G) [application/x-iso9660-image]
正在保存至: “ubuntukylin-16.04-desktop-amd64.iso.1”
这样的下载结果如下:
$ ls -a
. ubuntukylin-16.04-desktop-amd64.iso
.. ubuntukylin-16.04-desktop-amd64.iso.1
7.在后台下载文件
如果开启-b
选项,其后加上日志输出文件的地址,可以将下载任务放置在后台。像下面这个例子,日志文件将被写入/wget/log.txt
文件:
wget -b /wget/log.txt http://cdimage.ubuntu.com/ubuntukylin/releases/16.04/release/ubuntukylin-16.04-desktop-amd64.iso
8.限制下载速度
使用-limit-rate=100k
这样的选项,下载速度将被限制在100k,后面可以加上日志输出文件地址。像下面这个例子,日志文件将被写进/wget/log.txt
文件:
wget -c --limit-rate=100k /wget/log.txt
9.使用username(用户名)和password(密码)下载有限制的FTP、HTTP资源
开启--http-user=用户名
,--http-password=密码
或者--ftp-user=用户名
,--ftp-password=密码
选项,你可以有密码限制的http、ftp网站:
$ wget --http-user=narad --http-password=password http://mirrors.hns.net.in/centos/6.3/isos/x86_64/CentOS-6.3-x86_64-LiveDVD.iso
$ wget --ftp-user=narad --ftp-password=password ftp://ftp.iinet.net.au/debian/debian-cd/6.0.5/i386/iso-dvd/debian-6.0.5-i386-DVD-1.iso
10.查看wget版本号和帮助
查看wget版本号:
$ wget --version
或
$ wget -V
查看wget帮助文档:
$ wget --help
或
$ wget -h