GNU Wget 是一个命令行程序,用于从 Web 站点下载文件。Wget 可以让您可以使用HTTP,HTTPS和 FTP 协议下载文件。

wget 命令提供了许多选项,允许您下载多个文件,恢复下载,限制速度,递归下载,在后台下载,镜像网站等等。

在本教程中,我们将向你说明如何在 Linux 使用 wget 命令下载文件,以 wget 命令常见的实例介绍 wget 的用法。

安装 wget

wget 命令现已预安装在大多数 Linux 发行版,要检查系统是否已安装 wget。请按快捷键 CTRL+ALT+T 打开终端,运行wget命令。

如果已安装wget,终端打印错误消息 wget: missing URL,否则打印消息 wget command not found。

如果你的计算机运行的是基于 Debian 的 Linux 发行版。例如 Linux mint,Ubuntu。请运行命令 sudo apt install wget 安装 wget。

如果你的计算机运行的是基于 RedHat 的 Linux 发行版。例如 CentOS,Fedora。请运行命令 sudo yum install wget 安装wget。

sudo apt install wget
sudo yum install wget

wget 命令详解

在介绍如何使用 wget 命令之前,让我们先回顾一下基本语法。wget 命令语法形式是wget [options] [url]

options wget 命令的选项,可选参数。url 远程服务器 URL,也是可选参数。

在不指定任何参数与选项运行 wget 命令时,wget 命令下载 URL 指向的文件资源到当前目录。

在下载过程中,wget 会显示进度条以及文件名,文件大小,下载速度和完成下载的预计时间。

如果不需要这些 wget 命令的信息输出,可以使用 -q 选项关闭,该选项经常用于在 Shell 脚本的编程。

下载完成后,可在当前工作目录中找到下载的文件。如果当前目录存在同名文件,wget 命令将在文件名末尾追加数字,不会覆盖已存在的文件。

wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.17.2.tar.xz

wget 命令指定保存文件的名称

要以不同的名称保存 wget 下载的文件,在 wget 可以有两种方式做到此操作,一种是使用 -O 选项。

另一种是将 wget 下载的文件写入到标准输出,然后使用标准输出重定向符号 > 写入到文件中。

通常在使用 wget 下载文件时,Linux 系统管理员也会指定 -c 选项下载文件,这可以使得你在下载断开连接时,可以恢复下载。

wget -cO myfreax.com https://www.myfreax.com/
wget -cO - https://www.myfreax.com/ > myfreax.com

wget 命令指定保存目录

要指定不同目录保存下载的文件,请使用 wget 命令的 -P 选项,后跟要保存文件的目录。

目录的路径可以是相对路径或者绝对路径。如果指定目录不存在,wget 命令将会创建该目录。

还有一点值得一提的是,wget 命令的 -P 选项是真的只能指定保存的目录,要同时指定保存文件的目录和名称请使用  -O 选项。

通常在使用 wget 下载文件时,Linux 系统管理员也会指定 -c 选项下载文件,这可以使得你在下载断开连接时,可以恢复下载。

wget -cP /home/myfreax/test https://www.myfreax.com/

wget 命令限制下载速度

要限制下载速度,请使用 wget 命令的 --limit-rate 选项,选项值的默认单位是字节,也可以指定单位 千字节 k 和兆字节 m。

--limit-rate 选项不仅接受整数,也可以接受一个浮点数,例如 --limit-rate=2.5k 是合法的值。

请注意,wget 通过是采用休眠适当的时间来实现限制网络速度,从而使 TCP 传输以减慢到大约指定的速率。

然而在下载文件并不是真的会以非常准确速度下载,因为达到这种平衡需要一些时间,所以如果限制速率不能很好地工作,请不要感到惊讶。

wget --limit-rate=1m url

wget 命令断点续传/恢复下载

如果您在下载大文件期间断开连接,则无需重新开始下载,可以使用 wget 命令的 -c 选项恢复上一次的下载。

也可以在第一次下载文件时直接指定 -c 选项,当下载大文件断开连接时,直接使用之前的命令即可恢复下载。

也可以创建 wget 命令的别名,这样就可以不必每次使用下载文件时重复指定 -c 选项,这是一个好的习惯。

但有一点值得注意点是,wget 命令的恢复下载需要服务器端支持断点续传,否则wget 会重新开始下载文件。

wget -c url

wget 命令后台下载

wget 命令 -b 选项允许你在后台下载文件。这在下载大文件时非常有用。在后台下载时。

wget 命令的下载状态,也就是 wget 命令的标准输出将会被重定向到当前目录的 wget-log 文件。

要查看 wget 命令的下载进度等信息,可以运行 tail 命令 tail -f wget-log 查看wget 命令的下载状态。

wget -cb url
tail -f wget-log

wget 命令下载 FTP 服务器文件

wget 命令除了支持 HTTP 协议之外,还支持 FTP 协议文件下载,以及列出 FTP 服务器的文件。

要从受密码保护的 FTP 服务器下载文件时,您需要指定 FTP 用户名和密码。使用wget 命令的 --ftp-user--ftp-password 选项。

wget --ftp-user=FTP_USERNAME --ftp-password=FTP_PASSWORD ftp://ftp.example.com/filename.tar.gz

wget 命令下载多个文件

如果要一次下载多个文件,可以有两种方式,一种是直接指定多个 URL 在单个命令。另一种是使用wget 命令的 -i 选项指定包含 URLS 的文件。

要使用 wget 命令的 -i 选项,请在后面指定要下载包含 URL 的文件。在此文件的每个 URL 都需要独占一行。

例如命令 wget -i linux-distros.txt 下载 linux-distros.txt 文件包含的 URL 资源。

wget URL1 URL2 
wget -i linux-distros.txt
http://mirrors.edge.kernel.org/archlinux/iso/2018.06.01/archlinux-2018.06.01-x86_64.iso
https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.4.0-amd64-netinst.iso
https://download.fedoraproject.org/pub/fedora/linux/releases/28/Server/x86_64/iso/Fedora-Server-dvd-x86_64-28-1.1.iso
linux-distros.txt

wget 命令下载并解压与标准输出

这是非常节省时间的高级技巧,它允许你一边下载一边解压。除了解压之外还可以做你任何想做的事,只要管道右侧的命令允许从标准输入读取数据即可。

要做到边下载边解压,需要使用 wget 命令 -q 选项关闭下载状态的标准输出,然后组合使用 wget 命令 -O 选项,指定标准输出作为文件。

在 wget 当使用连字符 - 作为文件时,则使用标准输出作为写入的文件,最后通过管道 | 传递给 tar 命令。

tar 将 wget 命令下载文件解压缩到指定目录。 -C 选项指定写入的目标目录,参数 - 选项表示从标准输入读取数据。

wget -q -O - "http://wordpress.org/latest.tar.gz" | tar -xzf - -C /var/www

wget 命令指定用户代理 User-Agent

你应该遇到在使用不同浏览器时,有的浏览器可以下载,或者某个浏览器不能下载的情况。或者根据访问者的设备和浏览器,提供的不同页面内容。

这是因为服务器程序根据用户代理User-Agent 进行区分用户的设备类型,从而确定返回不同的内容或者阻止你的下载与访问。

为了避免服务器根据访问者的 User-Agent 用户代理提供不同内容。请使用 wget 命令的  -U 选项指定 User-Agent 用户代理。

wget --user-agent="Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" http://wget-forbidden.com/

结论

至此,您应该对最常见的 wget 选项有一个很好的理解,并且能够使用 wget 载多个文件,恢复下载,根据您的需要组合 wget 选项。