使用wget命令在命令行下下载资源

什么是wget?

wget是一个命令行实用程序,它从Internet检索文件并将它们保存到本地文件系统。任何可以通过HTTP或FTP协议访问的文件都能利用wget进行下载wget提供了许多选项,它们允许用户自主设置文件的下载方式和保存方式。wget还具有递归下载功能,允许您递归式地下载一组链接资源。

使用wget

wget命令使用以下基本语法:

wget [OPTIONS] [URL]

如果在没有选项的情况下,wget则会将指定地址([URL])的文件下载到当前目录:

wget https://www.linode.com/docs/assets/695-wget-example.txt
--2018-05-18 19:40:17-- https://www.linode.com/docs/assets/695-wget-example.txt
Resolving www.linode.com (www.linode.com)... 2600:3c00::12, 2600:3c00::32, 2600:3c00::22, ...
Connecting to www.linode.com (www.linode.com)|2600:3c00::12|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 522 [text/plain]
Saving to: ‘695-wget-example.txt.1’

695-wget-example.txt.1 100%[=================================================================================================================>] 522 --.-KB/s in 0s

2018-05-18 19:40:17 (67.7 MB/s) - ‘695-wget-example.txt.1’ saved [522/522]

这将在Linode Docs网站上下载示例文件。您可以使用以下命令查看该文件的内容cat

cat 695-wget-example.txt
This is an example resource for the `wget` document
, located
in the Linode Docs.

There are four lines of random characters at the end of this file.

y7tWn6zZRFAX1cXyQzzSBhTDC+/SpN/RezhI2acW3qr3HGFDCM7PX9frUhna75wG
6lOvibL5/sHTKP8N7tRfszZq1MaGlmpeEQN1n5afK6Awh0rykc5FMn2xb3jf0klF
wVPjuxsptT/L05K6avRI81Edg2+8CkS8uA16u+bXqRn1BBQutRvxwrWwrKuP10pR
uCf3HehndIeRghOAmXPc61cfUrHZ+MEqXYmSoKw4E0hI7GWXkwAyByCFPBVB9Fbe

示例

利用标准输出格式下载内容

-O选项控制wget写入下载文件的位置和名称。例如将文件example.txt下载并保存到mydir目录:

wget -O mydir/example.txt https://www.linode.com/docs/assets/695-wget-example.txt

如果你在命令wget -O - 中指定文件名为-wget将会把下载的文件输出到终端。添加-q标志以禁止状态输出:

wget -q -O - https://www.linode.com/docs/assets/695-wget-example.txt
This is an example resource for the `wget` document
, located
in the Linode Docs.

There are four lines of random characters at the end of this file.

y7tWn6zZRFAX1cXyQzzSBhTDC+/SpN/RezhI2acW3qr3HGFDCM7PX9frUhna75wG
6lOvibL5/sHTKP8N7tRfszZq1MaGlmpeEQN1n5afK6Awh0rykc5FMn2xb3jf0klF
wVPjuxsptT/L05K6avRI81Edg2+8CkS8uA16u+bXqRn1BBQutRvxwrWwrKuP10pR
uCf3HehndIeRghOAmXPc61cfUrHZ+MEqXYmSoKw4E0hI7GWXkwAyByCFPBVB9Fbe

查看HTTP头

要查看附加到资源的HTTP头信息,请使用-S选项。http头信息通常有助于诊断Web服务器配置问题。

wget -S https://www.linode.com/docs/assets/695-wget-example.txt
--2018-05-18 20:19:30-- https://www.linode.com/docs/assets/695-wget-example.txt
Resolving www.linode.com (www.linode.com)... 2600:3c00::22, 2600:3c00::12, 2600:3c00::32, ...
Connecting to www.linode.com (www.linode.com)|2600:3c00::22|:443... connected.
HTTP request sent, awaiting response...
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 18 May 2018 20:19:30 GMT
Content-Type: text/plain
Content-Length: 522
Connection: keep-alive
Vary: Accept-Encoding
Last-Modified: Thu, 19 Apr 2018 23:17:41 GMT
ETag: "5ad92395-20a"
Accept-Ranges: bytes
Strict-Transport-Security: max-age=31536000
X-Frame-Options: DENY
Length: 522 [text/plain]
Saving to: ‘695-wget-example.txt.5’

695-wget-example.txt.5 100%[=================================================================================================================>] 522 --.-KB/s in 0s

2018-05-18 20:19:30 (75.1 MB/s) - ‘695-wget-example.txt.5’ saved [522/522]

如果要仅查看标头,请像以前一样添加-q选项以禁止状态输出:

wget -Sq https://www.linode.com/docs/assets/695-wget-example.txt
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 18 May 2018 19:42:16 GMT
Content-Type: text/plain
Content-Length: 522
Connection: keep-alive
Vary: Accept-Encoding
Last-Modified: Thu, 19 Apr 2018 23:17:38 GMT
ETag: "5ad92392-20a"
Accept-Ranges: bytes
Strict-Transport-Security: max-age=31536000
X-Frame-Options: DENY

验证请求

如果您下载的文件需要HTTP身份验证,可以使用--http-user--http-password选项传递用户名和密码:

wget --http-user=[USERNAME] --http-password=[PASSWORD] [URL]

除非Web服务器提示,wget不会发送身份验证信息。使用--auth-no-challenge选项强制wget在任何情况下发送身份验证凭据。

接受自签名证书

要在受自签名SSL证书保护的站点上下载文件,请指定--no-check-certificate选项。虽然信息仍然是加密的,但证书的真实性无法确认。

递归下载文件

-r选项允许wget搜索下载的文件内容以获取指向其他资源的链接,然后下载这些资源。这对于创建静态网站的备份或可用资源的快照非常有用。还有许多其他选项可用于控制递归下载的行为。

wget -r -l 3 -k -p -H https://example.com/

选项-r -l 3 -k -p -H具有以下功能:

  • -r 启用递归下载。
  • -l 3允许wget下载3层以内深度的链接。使用0进行无限递归下载。
  • -k转换下载资源中的链接以指向本地下载的文件。生成的“镜像”将不会链接到原始源。
  • -p强制wget下载当前页面的所有链接资源,包括脚本和CSS文件。
  • -H允许递归下载网络上链接到其他主机的资源。除非特别指定,否则wget只会下载原始域中指定的主机上的资源。

后台下载

如果您不想wget占用终端进程,请使用-b选项来设置后台下载。

wget -b https://www.linode.com/docs/assets/695-wget-example.txt
Continuing in background, pid 953.
Output will be written to ‘wget-log’.

输出将写入wget-log供您稍后查看:

cat wget-log

避免冗余的下载

wget 有许多旨在通过避免冗余操作来节省带宽的选项。

  • -nc全称为“no clobber”,wget如果发现下载的文件会覆盖现有文件,则不会下载该文件。
  • -Nwget选项使得wget如果发现本地计算机上存在同名的较新文件,则不会下载文件。
  • -c允许wget继续下载之前中途停止下载的文件。

速率限制

如果需要控制wget的带宽使用量,可以使用--limit-rate=[RATE]选项指定下载带宽 。[RATE]除非附加k指定以千字节/秒为单位,否则以字节/秒为单位。

wget --limit-rate=3k https://linode.com

此命令下载1285786486.tar.gz文件,速率限制为每秒不超过3千字节。用于限制下载速率的方法对于较大的文件比快速完成的小型文件更有效。

本文的版权归 魔法少女伊莉雅 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏伪君子的梦呓

下载 Jekyll,并使用它在本地搭建一个博客

1584
来自专栏IMWeb前端团队

前端资源版本控制的那些事儿

本文作者:IMWeb 李冬冬 原文出处:IMWeb社区 未经同意,禁止转载 先来个最原始的页面,比如下面的index.html中,引入了css和js资...

4856
来自专栏云计算教程系列

如何在Ubuntu 14.04上使用Pydio托管文件共享服务器

随着云的采用增加,越来越多的数据被远程存储。从音乐到图片再到个人文档,很多人都将文件上传到他们不管理的服务器上。如果您希望将文件保存在您控制的服务器上,则可以使...

3820
来自专栏杨建荣的学习笔记

zabbix中配置dg的监控(r6笔记第62天)

在zabbix中有了orabbix的辅助,监控效率大大提高,但是因为orabbix是基于jdbc的方式,有些监控还是有一些限制。 比如dataguard的检查,...

2994
来自专栏运维

系统重启后ngix reload不生效原因分析

这是一种比较少见,困扰我很久的问题,虽然这个问题很简单,但是找到根本原因还是费了不少时间,现在把分析过程分享如下。

912
来自专栏西安-晁州

Docker下redis的主从、持久化配置

Docker下redis的主从、持久化配置 redis是k-v型nosql数据库,支持字符串(string)、列表(list)、集合(set)、散列(hash)...

58210
来自专栏向治洪

java http缓存

HTTP/1.1中缓存的目的是为了在很多情况下减少发送请求,也即直接返回缓存;同时在许多情况下可以不需要发送完整响应。前者减少了网络回路的数量,挺高响应速度,H...

2337
来自专栏云计算教程系列

给你的数据库加一道缓存:Redis入门教程

Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库。 本教程将会教你如何在Ubuntu 18.04 上安装、配置Red...

2410
来自专栏蓝天

Redis-3.2.9集群配置(redis cluster)

本文参考官方文档而成:http://redis.io/topics/cluster-tutorial。经测试,安装过程也适用于redis-3.2.0。

3442
来自专栏FreeBuf

如何在安卓移动终端进行一次渗透实验?

下面的实验将通过使用一个虚拟Android系统作为实验主体来进行展示。在这个实验中,通过使用虚拟Android系统,模拟移动终端的操作,来帮助我们逐步实现使用一...

3396

扫码关注云+社区

领取腾讯云代金券