wget 命令示例

在本教程中,我们将通过实际示例和最常见的 wget 选项的详细介绍来向您展示如何使用 wget 命令。

什么是 wget ?

GNU wget 是一个命令行的实用程序,用于从 Web 下载文件。使用 wget ,您可以使用 HTTP , HTTPS 和 FTP 协议下载文件。 wget 提供了许多选项,允许您下载多个文件,下载断点续传,限制带宽,递归下载,在后台下载,镜像网站等等。

安装 wget

wget 包现已预装在大多数 Linux 发行版上。

要检查系统上是否安装了 wget 软件包,请打开控制台,键入 wget ,然后按 Enter 键。如果安装了 wget ,系统将打印 wget: missing URL ,否则将打印 wget command not found

如果未安装 wget ,您可以使用发行版的软件包管理器轻松安装它。

  • 在 Ubuntu 和 Debian 上安装 wget

    sudo apt install wget
    
  • 在 CentOS 和 Fedora上 安装wget

    sudo yum install wget
    

wget 命令语法

在介绍如何使用 wget 命令之前,让我们先回顾一下基本语法。

wget 实用程序表达式采用以下形式:

wget [options] [url]
  • options- wget 选项
  • url - 要下载或同步的文件或目录的 URL 。

如何使用 wget 下载文件

在没有任何选项的情况下使用它是最简单的形式, wget 会将 [url] 中指定的资源下载到当前目录。

在以下示例中,我们正在下载 Linux 内核 tar 存档:

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

从上图中可以看出, wget 首先解析域名的 IP 地址,然后连接到远程服务器并开始传输。

在下载过程中, wget 会显示进度条以及文件名,文件大小,下载速度和完成下载的预计时间。下载完成后,您可以在当前工作目录中找到下载的文件。

要关闭 wget 的输出,请使用 -q 标志。

如果文件已存在, wget 将在文件名末尾添加 .N (数字) 。

使用 wget 命令下载文件并保存为不同的名称

要以不同的名称保存下载的文件,请传递 -O 选项后跟所选名称:

wget -O latest-hugo.zip https://github.com/gohugoio/hugo/archive/master.zip

上面的命令将来自 GitHub 的最新 hugo zip 文件保存为 latest-hugo.zip, 而不是原始名称。

使用 wget 命令将文件下载到特定目录

默认情况下, wget 会将下载的文件保存在当前工作目录中。要将文件保存到特定位置,请使用以下 -P 选项:

wget -P /mnt/iso http://mirrors.mit.edu/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1804.iso

通过上面的命令,我们告诉 wget 将 CentOS 7 iso 文件保存到 /mnt/iso 目录中。

如何使用 wget 限制下载速度

要限制下载速度,请使用该 --limit-rate 选项。该值可以用字节表示,而 k 后缀则是千字节, m 后缀是兆字节。

以下命令将下载 Go 二进制文件并将下载速度限制为 1mb

wget --limit-rate=1m https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz

当您不希望 wget 消耗所有可用带宽时,此选项很有用。

如何让 wget 下载支持断点续传

您可以使用该 -c 选项启用断点续传。如果您的连接在下载大文件时丢失,不需要从头开始下载,而是可以继续接着上一个文件重新下载。

在以下示例中,我们将继续下载 Ubuntu 18.04 iso 文件:

wget -c http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso

如果远程服务器不支持恢复下载, wget 将从头开始下载并覆盖现有文件。

如何使用 wget 在后台下载

要在后台下载,请使用该 -b 选项。这在下载大文件时很有用。在以下示例中,我们将在后台下载 OpenSuse iso 文件:

wget -b https://download.opensuse.org/tumbleweed/iso/openSUSE-Tumbleweed-DVD-x86_64-Current.iso

默认情况下,输出将重定向到 wget-log 当前目录中的文件。要检查下载的状态,您可以使用 tail -f wget-log

如何更改 wget 下载中 User-Agent

有时在下载文件时,远程服务器设置可以为阻止 wget 用户代理。在这种情况下,通过传递 -U 选项来模拟不同的浏览器。

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

上面的命令将模拟 Firefox 60 请求页面 wget-forbidden.com

如何使用 wget 下载多个文件

如果要一次下载多个文件,请使用 -i 选项,后跟包含要下载的 URL 列表的本地或外部文件的路径。每个 URL 都需要在一个单独的行上。

在下面的示例中,我们使用文件中指定的 URL 下载 Arch Linux , Debian 和 Fedora iso linux-distros.txt 文件:

wget -i linux-distros.txt

文件 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

如果指定 - 为文件名,则将从标准输入中读取 URL 。

使用 wget 命令下载 FTP 文件

要从受密码保护的 FTP 服务器下载文件,您需要指定用户名和密码,如下所示:

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

使用 wget 命令创建网站镜像

要使用 wget 创建网站镜像,请使用 -m 选项。这将通过下载和下载所有内部链接以及网站资源 ( JavaScript , CSS ,图像) 来创建网站的完整本地副本。

wget -m https://example.com

如果要使用下载的网站进行本地浏览,则需要向上面的命令传递一些额外的参数。

wget -m -k -p https://example.com

选项 -k 标志将使 wget 转换下载文档中的链接以使其适合本地查看,并且选项 -p 标志将告诉 wget 下载用于显示 HTML 页面的所有必要文件。

如何使用 wget 跳过证书检查

如果要从具有无效 SSL 证书的主机通过 HTTPS 下载文件,请使用 --no-check-certificate 标志:

wget --no-check-certificate https://domain-with-invalid-ss.com

如何使用 wget 下载到标准输出

在下面的示例中, wget 将安静地 (选项 -q ) 下载并将最新的 WordPress 版本输出到 stdout ( flag -O -) 并将其传送到 tar 实用程序,该实用程序将存档解压缩到 /var/www 目录。

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

结论

到目前为止,您应该对最常见的 wget 选项有一个很好的理解,并且您应该能够使用 wget 下载多个文件,断点续传下载,镜像网站等,还可以根据您的需要组合 wget 选项。

如果您想了解有关 wget 的更多信息,请访问 GNU wget 手册页面。