Linux wget 命令 – Linux 下载命令

Linux wget 命令是一个命令行实用程序,用于通过 HTTP、HTTPS 和 FTP 协议从 Internet 下载文件。 wget 命令通常在大多数 Linux 发行版上默认可用,但如果您尚未安装它,可以使用您的发行版的包管理器下载它。

基于 Ubuntu/Debian 的发行版:(apt 和 apt-get 之间的区别)

sudo apt install wget 

Fedora-基于发行版:

sudo dnf install wget OR sudo yum install wget 

基于 Red Hat 的发行版:

sudo rpm install wget 

基于 Arch Linux 的发行版

sudo pacman -S wget 

Linux wget 功能和用法

Linux 中的 wget 命令具有以下特性,使其对脚本非常有用:

  • 可以在后台下载文件
  • 允许轻松恢复中断的下载
  • 可以镜像网站以进行本地浏览
  • 您可以抓取网页以查找损坏的链接
  • 还有很多…

wget 命令的基本语法是:

wget <URL> 

在 Linux 中使用 wget 命令下载文件

有什么比自己动手学习更好的方法呢? 让我们从 官方 Debian 下载页面。 在下面的命令中,我正在下载 Debian 10 的网络安装 ISO。

wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.3.0-amd64-netinst.iso 
下载

Linux wget 命令所做的第一件事是查找并解析 URL。 之后,它会向您显示有关它连接到哪个服务器以下载文件的详细信息。 最后,文件下载进度以及速度和预计到达时间。

如果没有任何选项,wget 命令将简单地根据服务器提供的文件名下载文件。 但是如果你想下载文件并用不同的名字保存,你可以使用 -O 选项。

wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.3.0-amd64-netinst.iso -O debian.iso 

Linux wget 命令选项

既然您知道如何下载文件并了解 wget 命令的功能,那么让我们实际看看如何使用 Linux 中 wget 命令提供的选项。

1. 使用 wget 恢复中断的下载

wget -c 选项允许我们通过重复相同的命令来继续或恢复中断的下载。 看看下面的例子:

wget -c https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.3.0-amd64-netinst.iso 

在上述下载过程中,如果网络断开或键盘中断导致下载停止,您可以在保存部分下载文件的目录中重复相同的命令。

Linux wget 命令将从中断处继续下载。 这在不稳定的网络上特别有用,您只需重新运行 wget 命令即可恢复下载而不会丢失进度。

2.关闭wget输出

因此,在大多数情况下,输出是不必要的。 但是我们怎样才能避免得到那个输出呢? 与 Linux 中的大多数命令一样,wget 命令也为我们提供了一个使输出静默的选项。

wget -q <URL> OR  wget -nv <URL> 

-q command 代表 quiet ,它将消除所有输出。 这 -nv option 代表 non-verbose 并且只会显示需要显示的消息(完成通知或错误)。

但是上述命令选项存在一个问题。 进度条也被隐藏了。 根据您的使用情况,这可能很好,但我喜欢显示它。

如何使用 Linux wget 使除进度条之外的所有输出静音?

wget 命令为我们提供了另一种选择 --show-progress--progress=bar:force.

如果您的系统有最新的 wget 命令,您可以仅使用 show progress 选项来获取进度条。 如果您使用的是旧版本,则可能还需要添加 progress=bar:force 选项。 让我们使用与上面相同的示例并添加我们的新选项。

wget  -q --show-progress https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.3.0-amd64-netinst.iso 
仅使用 wget 命令显示进度条

3. 使用 wget 下载多个 URL

您不限于一次只能下载一个文件,还可以通过简单地指定文件中的所有 URL(每行一个 URL)来下载多个文件。

我们将使用 -i 将带有 URL 列表的文件传递给 wget 命令的选项。

wget -i <file name> 

所有文件现在将开始下载。 您可以将此命令选项与上面的命令选项结合使用以使输出静默。

4. 使用 wget 下载整个网站

好的,我们在介绍中谈到了下载和保存整个网站,并说这是该命令的功能之一。 让我们现在学习如何去做。

wget 命令为我们提供了一个简洁的命令选项来下载或“镜像”整个网站。 这 -m 选项(镜像的缩写)与配对时 -k 选项,将下载的 HTML 文件中的链接更改为指向本地页面,您可以获得完整的离线网页。 这 -p 选项还将包括页面要求,如图像和其他媒体,使其成为一个完全离线的网站供您使用。

要下载网站,请运行以下命令:

wget -mk -p <URL> 

该命令开始一一下载网站的所有页面。 因此,在处理具有数十万页的网站时,请确保不要让此命令无人看管。

5. 使用 wget 抓取网站以获取 404 链接

当您拥有一个网站并且只想遍历整个网站以查找任何可以替换的损坏链接时,此功能特别有用。

有一个命令选项 --spider 它将逐页、逐个 URL 地爬取网站,并找出任何可解决 404 错误的链接。 我们还将利用 -r (递归 URL 抓取)和 -l(递归爬取级别)选项,使我们的爬虫继续通过链接进行爬取。

此外,我们将添加一个额外的命令选项 -o (小写字母 o)将 wget 输出保存在此处指定的日志文件中。

wget -r -l 10 --spider www.google.com -o google.log 

如果你运行上面的命令,你几乎可以期望它永远运行,因为谷歌拥有大量的链接。 我只是让它运行了几秒钟,命令生成了一个 1 MB 的文本文件(顺便说一句,对于基本的文本文件来说这是巨大的)。

6.在后台运行下载

如果您正在运行需要大量时间的多文件下载,则将终端保持在后台是没有意义的。 相反,您可以在后台使用 wget 命令传递 -b.

wget -b https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.3.0-amd64-netinst.iso 
wget后台下载wget后台下载

如果您希望阻止 wget 命令在后台下载文件,该命令将快速为您提供可以终止的进程 ID。

结论

Linux wget 命令可以用于很多目的,而不仅仅是下载文件,我相信您现在已经了解了这个看似简单的命令的潜力。 探索命令选项,您将了解使用此命令可能实现的许多事情。

不要忘记 Linux 中的 man 命令总是可以帮助您使用这些命令 --help 选项。