GNU Wget 是一个用于从 Web 下载文件的命令行应用程序。使用 Wget,你可以使用 HTTP、HTTPS 和 FTP 协议下载文件。Wget 提供了许多选项,允许你下载多个文件、恢复下载、限制带宽、递归下载、在后台下载、镜像网站等等。
本文
wget
通过实际示例和最常用选项的详细说明展示了如何使用该命令。
安装 Wget
代码语言:javascript复制目前大多数 Linux 发行版都预装了 wget 软件包。
要检查你的系统上是否安装了 Wget 软件包,请打开你的控制台,键入
wget
,然后按 Enter。如果你安装了 wget,系统会打印wget: missing URL
。否则,它将打印
> wget command not found
如果
wget
未安装,你可以使用发行版的包管理器轻松安装它。
在 Ubuntu 和 Debian 上安装 Wget
代码语言:javascript复制> sudo apt install wget
在 CentOS 和 Fedora 上安装 Wget
代码语言:javascript复制> yum install wget -y
Wget 命令语法
代码语言:javascript复制在讨论如何使用该
wget
命令之前,让我们先回顾一下基本语法。该
wget
应用程序的表达式采用以下形式:
> wget [options] [url]
复制
options
- Wget 选项url
- 要下载或同步的文件或目录的 URL。
如何下载文件 wget
代码语言:javascript复制在最简单的形式中,当不带任何选项使用时,
wget
会将 [url] 中指定的资源下载到当前目录。在以下示例中,我们正在下载 Linux 内核 tar 存档:
> wget https://rumenz.com/static/v/v.mp4
image-20211012220109912
从上图中可以看出,
wget
首先解析域的 IP 地址,然后连接到远程服务器并开始传输。在下载过程中,会
wget
在文件名、文件大小、下载速度和预计完成下载时间旁边显示进度条。下载完成后,你可以在当前工作目录中找到下载的文件 。要关闭输出,请使用该
-q
选项。如果文件已经存在,
wget
将.N
在文件名的末尾添加(数字)。
以不同的名称保存下载的文件
代码语言:javascript复制要以不同的名称保存下载的文件,请传递
-O
后跟所选名称的选项:
> wget -O rumenz.mp4 https://rumenz.com/static/v/v.mp4
将文件下载到特定目录
代码语言:javascript复制默认情况下,
wget
会将下载的文件保存在当前工作目录中。要将文件保存到特定位置,请使用以下-P
选项:
> wget -P /tmp/rumenz https://rumenz.com/static/v/v.mp4
上面的命令告诉
wget
将v.mp4
文件保存到/tmp/rumenz
目录中。
限制下载速度
代码语言:javascript复制要限制下载速度,请使用该
--limit-rate
选项。默认情况下,速度以字节/秒为单位。附加k
千字节、m
兆字节和g
千兆字节。以下命令将下载 Go 二进制文件并将下载速度限制为 1MB:
> wget --limit-rate=1m https://golang.org/dl/go1.17.2.linux-amd64.tar.gz
当你不想
wget
消耗所有可用带宽时,此选项很有用。
恢复下载
代码语言:javascript复制你可以使用该
-c
选项继续下载。如果在下载大文件期间连接断开,这将非常有用,你可以继续上一个下载而不是从头开始下载。在以下示例中,我们将继续下载
go1.17.2.linux-amd64.tar.gz
文件:
> wget -c https://golang.org/dl/go1.17.2.linux-amd64.tar.gz
如果远程服务器不支持恢复下载,
wget
将从头开始下载并覆盖现有文件。
后台下载
代码语言:javascript复制要在后台下载,请使用该
-b
选项。在以下示例中,我们在后台下载go1.17.2.linux-amd64.tar.gz
文件:
> wget -b https://golang.org/dl/go1.17.2.linux-amd64.tar.gz
默认情况下,输出被重定向到
wget-log
当前目录中的文件。要查看下载状态,请使用以下tail
命令:
tail -f wget-log
更改 Wget 用户代理
代码语言:javascript复制有时在下载文件时,远程服务器可能会设置为阻止 Wget User-Agent。在这种情况下,要模拟不同的浏览器,请传递
-U
选项。
> wget --user-agent="Mozilla/0 (X11; Linux x86_64; rv:0) Gecko/20100101 Firefox/0" http://wget-forbidden.com/
上面的命令将模拟 Firefox 60 从
wget-forbidden.com
下载多个文件
代码语言:javascript复制如果你想一次下载多个文件,请使用该
-i
选项后跟上包含要下载的 URL 列表的本地或外部文件的路径。每个 URL 都需要在单独的行上。以下示例显示了如何使用文件中指定的 URL 下载
v.ogg
和v.mp4
文件:
> wget -i rumenz.txt
代码语言:javascript复制> cat rumenz.txt
https://rumenz.com/static/v/v.ogg
https://rumenz.com/static/v/v.mp4
通过FTP下载
代码语言:javascript复制要从受密码保护的 FTP 服务器下载文件,请指定用户名和密码,如下所示:
> wget --ftp-user=FTP_USERNAME --ftp-password=FTP_PASSWORD ftp://ftp.example.com/filename.tar.gz
创建网站的镜像
代码语言:javascript复制要使用 来创建网站的镜像
wget
,请使用该-m
选项。这将通过关注和下载所有内部链接以及网站资源(JavaScript、CSS、图像)来创建网站的完整本地副本。
> wget -m https://example.com
代码语言:javascript复制如果要使用下载的网站进行本地浏览,则需要向上述命令传递一些额外的参数。
> wget -m -k -p https://example.com
该
-k
选项将导致wget
转换下载文档中的链接,使其适合本地查看。该-p
选项将告诉wget
下载显示 HTML 页面所需的所有文件。
跳过证书检查
代码语言:javascript复制如果要通过 HTTPS 从具有无效 SSL 证书的主机下载文件,请使用以下
--no-check-certificate
代码语言:javascript复制> wget --no-check-certificate https://domain-with-invalid-ss.com
下载到标准输出
代码语言:javascript复制在下面的示例中,
wget
将安静地 ( flag-q
) 下载最新的 WordPress 版本并将其输出到 stdout ( flag-O -
) 并将其通过管道传输到tar
应用程序,应用程序会将存档解压缩到/var/www
目录中。
> wget -q -O - "http://wordpress.org/latest.tar.gz" | tar -xzf - -C /var/www
相关文章
Linux之wget命令