包含 15 个很棒的示例的终极 Wget 下载指南

举报
Tiamo_T 发表于 2021/11/08 09:32:50 2021/11/08
【摘要】 wget实用程序是从 Internet 下载文件的最佳选择。wget 几乎可以处理所有复杂的下载情况,包括大文件下载、递归下载、非交互式下载、多文件下载等, 在本文中,让我们使用 15 个很棒的 wget 示例来回顾如何将wget用于各种下载场景。

wget实用程序是从 Internet 下载文件的最佳选择。wget 几乎可以处理所有复杂的下载情况,包括大文件下载、递归下载、非交互式下载、多文件下载等,

在本文中,让我们使用 15 个很棒的 wget 示例来回顾如何将wget用于各种下载场景。


1. 使用 wget 下载单个文件

以下示例从 Internet 下载单个文件并存储在当前目录中。

$ wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2

下载时,它会显示一个进度条,其中包含以下信息:

  • 下载完成百分比(例如 31% 如下所示)
  • 到目前为止下载的总字节数(例如 1,213,592 字节,如下所示)
  • 当前下载速度(例如 68.2K/s 如下图)
  • 剩余下载时间(例如 eta 34 秒,如下所示)

正在下载:

$ wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
保存到:`strx25-0.9.2.1.tar.bz2.1'

31% [==================> 1,213,592 68.2K/s eta 34s

下载完成:


$ wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
Saving to: `strx25-0.9.2.1.tar.bz2'

100%[======================>] 3,852,374   76.8K/s   in 55s    

2009-09-25 11:15:30 (68.7 KB/s) - `strx25-0.9.2.1.tar.bz2' saved [3852374/3852374]

2. 使用 wget -O 下载并使用不同的文件名存储

默认情况下,wget 将从最后一个正斜杠之后的最后一个单词中选择文件名,这可能并不总是合适的。

错误:以下示例将下载并存储名称为:download_script.php?src_id=7701 的文件

$ wget http://www.vim.org/scripts/download_script.php?src_id=7701

即使下载的文件是 zip 格式,它也会存储在文件中,如下所示。

$ls
download_script.php?src_id=7701

正确:要更正此问题,我们可以使用 -O 选项将输出文件名指定为:

$ wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701

3. 使用 wget –limit-rate 指定下载速度/下载速率

在执行 wget 时,默认情况下它会尝试占用全部可能的带宽。当您在生产服务器上下载大文件时,这可能是不可接受的。因此,为了避免这种情况,我们可以使用 –limit-rate 来限制下载速度,如下所示。

在下面的例子中,下载速度限制为 200k

$ wget --limit-rate=200k http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2

4. 使用 wget -c 继续不完整的下载

使用 wget -c 选项重新启动中途停止的下载,如下所示。

$ wget -c http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2

当您启动一个非常大的文件下载但在中间中断时,这非常有用。您可以使用选项 -c 从中断的位置开始下载,而不是再次开始整个下载

注意:如果下载在中途停止,当您在没有选项 -c 的情况下再次重新启动下载时,wget 将自动将 .1 附加到文件名,因为以前名称的文件已经存在。如果 .1 的文件已经存在,它会在最后下载 .2 的文件。

5. 使用 wget -b 在后台下载

对于大量下载,请使用 wget 选项 -b 将下载置于后台,如下所示。

$ wget -b http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
Continuing in background, pid 1984.
Output will be written to `wget-log'.

它将启动下载并将 shell 提示返回给您。您始终可以使用 tail -f 检查下载状态,如下所示。

$ tail -f wget-log
Saving to: `strx25-0.9.2.1.tar.bz2.4'

     0K .......... .......... .......... .......... ..........  1% 65.5K 57s
    50K .......... .......... .......... .......... ..........  2% 85.9K 49s
   100K .......... .......... .......... .......... ..........  3% 83.3K 47s
   150K .......... .......... .......... .......... ..........  5% 86.6K 45s
   200K .......... .......... .......... .......... ..........  6% 33.9K 56s
   250K .......... .......... .......... .......... ..........  7%  182M 46s
   300K .......... .......... .......... .......... ..........  9% 57.9K 47s

此外,请务必查看我们之前关于如何有效使用 tail 命令查看多个文件的多尾文章

6. 使用 wget –user-agent 屏蔽用户代理并像浏览器一样显示 wget

某些网站可以通过识别用户代理不是浏览器来禁止您下载其页面。因此,您可以使用 –user-agent 选项屏蔽用户代理,并像浏览器一样显示 wget,如下所示。

$ wget --user-agent="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092416 Firefox/3.0.3" URL-TO-DOWNLOAD

7. 使用 wget –spider 测试下载 URL

当您要进行预定下载时,您应该检查下载是否会在预定时间正常进行。为此,请完全从计划中复制该行,然后添加 –spider 选项进行检查。

$ wget --spider 下载地址

如果给出的 URL 是正确的,它会说

$ wget --spider download-url
Spider mode enabled. Check if remote file exists.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Remote file exists and could contain further links,
but recursion is disabled -- not retrieving.

这样可以确保下载将在预定的时间成功。但是当您提供错误的 URL 时,您将收到以下错误。

$ wget --spider download-url
Spider mode enabled. Check if remote file exists.
HTTP request sent, awaiting response... 404 Not Found
Remote file does not exist -- broken link!!!

您可以在以下情况下使用蜘蛛选项:

  • 在安排下载之前检查。
  • 以特定时间间隔监控网站是否可用。
  • 检查书签中的页面列表,并找出哪些页面仍然存在。

8. 使用 wget –tries 增加重试尝试的总数

如果互联网连接有问题,并且下载文件很大,则下载可能会失败。默认情况下 wget 重试 20 次以使下载成功。

如果需要,您可以使用 –tries 选项增加重试次数,如下所示。

$ wget --tries=75 DOWNLOAD-URL

9. 使用 Wget -i 下载多个文件 / URL

首先,将所有下载文件或 URL 存储在一个文本文件中:

$ cat > download-file-list.txt
URL1
URL2
URL3
URL4

接下来,使用 -i 选项将 download-file-list.txt 作为参数提供给 wget,如下所示。

$ wget -i download-filelist.txt

10. 使用 wget –mirror 下载完整的网站

以下是当您要下载完整网站并可供本地查看时要执行的命令行。

$ wget --mirror -p --convert-links -P ./LOCAL-DIR WEBSITE-URL
  • –mirror : 打开适合镜像的选项。
  • -p :下载正确显示给定 HTML 页面所需的所有文件。
  • --convert-links : 下载后,将文档中的链接转换为本地查看。
  • -P ./LOCAL-DIR :将所有文件和目录保存到指定目录。

11. 使用 wget –reject 在下载时拒绝某些文件类型

您找到了一个有用的网站,但不想下载图片,您可以指定以下内容。

$ wget --reject=gif 要下载的网站

12. 使用 wget -o 将消息记录到日志文件而不是 stderr

当您希望将日志重定向到日志文件而不是终端时。

$ wget -o download.log 下载地址

13. 使用 wget -Q 超过一定大小时退出下载

如果您想在超过 5 MB 时停止下载,您可以使用以下 wget 命令行。

$ wget -Q5m -i FILE-WHICH-HAS-URLS

注意:当您下载单个 URL 时,此配额不会生效。这与配额大小无关,当您指定单个文件时,所有内容都会被下载。此配额仅适用于递归下载。

14. 使用 wget -r -A 仅下载某些文件类型

您可以在以下情况下使用它:

  • 从网站下载所有图像
  • 从网站下载所有视频
  • 从网站下载所有 PDF 文件
$ wget -r -A.pdf http://url-to-webpage-with-pdfs/

15. 使用 wget 进行 FTP 下载

您可以使用 wget 执行 FTP 下载,如下所示。

使用 Wget 进行匿名 FTP 下载

$ wget ftp-url

使用带有用户名和密码验证的 wget 进行 FTP 下载。

$ wget --ftp-user=USERNAME --ftp-password=PASSWORD DOWNLOAD-URL
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。