Wget命令用法和示例

时间:2020-03-21 11:47:32  来源:igfitidea点击:

我们都有在Windows操作系统中从Internet下载时使用下载管理器的习惯。
有几个不错的下载管理器,可用于Windows作为IDM,FDM等图形实用程序。
但是,如果我们在主要界面是没有图形X窗口的linux控制台的环境中工作,那又如何呢?

有相当多的基于Linux控制台的下载管理器。
我们在这篇文章中感兴趣的主题就是其中之一,称为WGET。

Wget是一个很棒的工具,可以从Internet下载文件。
wget是Linux系统管理员用于执行任务的非常老的工具。
Wget不仅仅是下载管理器...让我们了解它的一些功能。

Wget的主要功能在于其能够执行的递归下载。
就像我们在目录中递归执行某些操作一样,wget可以对超链接执行相同的操作。
Wget在脚本编写中非常有用,因为它是基于命令的,并且几乎可以执行任何操作。

Linux用户无需担心安装wget,因为它是一个相当老的工具,并且大多数发行版都包括了它。

让我们看看wget是如何工作的。

[root@theitroad ~]# wget
wget: missing URL
Usage: wget [OPTION]... [URL]...
Try `wget --help' for more options.

只需键入命令将不会给我们任何如上所示的内容,因为它需要至少一个url作为自变量进行下载。

例如,让我们从centos url下载dhcp软件包,如下所示。

[root@myvm1 ~]# wget http://mirror.centos.org/centos/5/os/i386/CentOS/dhcp-3.0.5-31.el5.i386.rpm
--11:56:14--  http://mirror.centos.org/centos/5/os/i386/CentOS/dhcp-3.0.5-31.el5.i386.rpm
Resolving mirror.centos.org... 64.251.25.238
Connecting to mirror.centos.org|64.251.25.238|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 893723 (873K) [application/x-rpm]
Saving to: `dhcp-3.0.5-31.el5.i386.rpm.3'
100%[=======================================>] 893,723      140K/s   in 6.6s
11:56:22 (133 KB/s) - `dhcp-3.0.5-31.el5.i386.rpm.3' saved [893723/893723]

现在,将下载文件并将其保存在运行wget命令的目录中。
在上述情况下,dhcp软件包保存在我的根目录的主目录中。

使用Wget进行整站镜像

wget中有一个选项可以在主目录中镜像一个远程,这意味着我们可以将整个下载到所需的文件夹中,然后从我们自己的文件夹中进行浏览。

--mirror

-m(mirror)

我们可以使用以上任一选项来镜像。

[root@theitroad ~]# wget -mrk in.yahoo.com
--20:26:55--  http://in.yahoo.com/
Resolving in.yahoo.com... 72.30.38.140, 2001:4998:c:401::c:9101, 2001:4998:c:401::c:9102
Connecting to in.yahoo.com|72.30.38.140|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Last-modified header missing -- time-stamps turned off.
--20:26:56--  http://in.yahoo.com/
Connecting to in.yahoo.com|72.30.38.140|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `in.yahoo.com/index.html'
 [              <=>                       ] 74,971      15.5K/s

这将需要很长时间,具体取决于站点的大小。

我在上面的命令中使用了-mrk选项。

-m我们已经知道镜像选项

-r递归获取所有链接

-k更改相对于我们的目录下载的所有链接。

使用Wget忽略Robot.txt

Robot.txt是一个文件,它指示搜索引擎爬网程序有关爬网程序可以访问的所有区域的内容。
在上述情况下,我们已经镜像了整个。
.Robot.txt文件告诉抓取工具忽略其中的文件或者路径。
Wget的镜像方式也与搜索引擎搜寻器相同,因此即使wget也无法访问robots.txt中拒绝的内容。

我们可以通过告诉wget忽略robots.txt来轻松地覆盖此设置,如下所示,

[root@theitroad ~]# wget -e robots=off -r -nc yahoo.com
--20:36:26--  http://yahoo.com/
Resolving yahoo.com... 72.30.38.140, 98.138.253.109, 98.139.183.24
Connecting to yahoo.com|72.30.38.140|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://www.yahoo.com/[following]

robots = off的-e选项会忽略所有robots.txt文件。

-nc选项将不会在目录中下载已经下载的文件。

指定可以使用Wget下载的文件类型

我们甚至可以指定可以使用wget从特定URL下载的文件类型。
可以如下所示进行。

[root@theitroad ~]# wget -e --robots=off -r --level=0 -nc --accept jpg,gif,bmp yahoo.com
--20:40:56--  http://yahoo.com/
Resolving yahoo.com... 72.30.38.140, 98.138.253.109, 98.139.183.24
Connecting to yahoo.com|72.30.38.140|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://www.yahoo.com/[following]

level = 0选项表示wget有关要下载的目录深度的信息。
在这种情况下,其值为0,这意味着它将下载途中找到的所有内容。

--accept指定可以下载的文件类型格式。

如何使用Wget从URL下载多个文件

下载多个文件与下载单个文件相同。
我们只需要为我们提供所需的URL,并在它们之间使用空格即可。

[root@theitroad ~]# wget http://mirror.centos.org/centos/5/os/i386/CentOS/dhcp-3.0.5-31.el5.i386.rpm http://www.google.com

使用Wget恢复下载

首先需要了解的是,恢复下载功能是服务器从文件下载位置提供的功能。

下载管理器是否支持继续下载并不重要。
如果服务器不支持继续下载,则恢复将失败。

可以通过在wget中使用-c选项来恢复已取消的下载。

[root@theitroad ~]# wget -c yahoo.com

将yahoo.com替换为我们从文件下载位置获取的URL。

使用Wget限制下载速度

如果我们有许多其他需要服务器上更多带宽的应用程序,则此限制wget中下载速度的选项将变得很方便。

因此,我们可以使用wget限制下载速度,如下所示。

[root@theitroad ~]# wget --limit-rate=100k yahoo.com

指定wget中URL的密码

我们可以为下载时需要身份验证的URL指定密码。
这可以通过以下选项来完成。

--http用户和--http密码

例如,假设xyz.com需要密码进行加密,那么可以按照以下步骤进行操作。

[root@theitroad ~]# wget --http-user=sarath --http-password=123456 xyz.com

使用WGET中的文件从不同的URL下载许多文件

当我们有大量URL时,建议不要使用空格将URL以空格分隔的方式使用命令行从不同的URL和许多URL下载文件。

我们可以创建一个文件名,然后将所有URL都添加到一行中,如下所示。

[root@theitroad ~]# cat mydownloadlist
First URl
Second URL
Third URL
[root@theitroad ~]# wget -i mydownloadlist