wget命令

![image.png](https://img-blog.csdnimg.cn/img_convert/b8c09e942da1e9cafc93980c1942ad9c.png#clientId=udbf26541-49b7-4&crop=0&crop=0&crop=1&crop=1&errorMessage=unknown error&from=paste&id=u3d4656af&margin=[object Object]&name=image.png&originHeight=502&originWidth=807&originalType=url&ratio=1&rotation=0&showTitle=false&size=114646&status=error&style=none&taskId=u069bf907-1442-486c-a1bb-185b5999beb&title=)
wget 命令
Linux提供了不同的工具来通过不同类型的协议(例如HTTP,FTP,HTTPS等)下载文件。wget是用于通过命令行界面下载文件的最受欢迎的工具。 Wget受Linux,BSD,Windows,MacOSX支持。 Wget具有丰富的功能集,其中一些可以列出

  • Resume downloads继续下载
  • Multiple file download single command多文件下载单个命令
  • Proxy support代理支持
  • Unattended download无人值守下载

简单下载

wget命令最常见的用法是不提供任何选项或参数(下载URL除外)。 我们将仅使用wget提供下载URL。

$ wget http://ftp.gnu.org/gnu/wget/wget-1.19.tar.gz

![image.png](https://img-blog.csdnimg.cn/img_convert/c031c0e24bec60c032c6f23aecb80c16.png#clientId=udbf26541-49b7-4&crop=0&crop=0&crop=1&crop=1&errorMessage=unknown error&from=paste&id=u95961b3f&margin=[object Object]&name=image.png&originHeight=139&originWidth=780&originalType=url&ratio=1&rotation=0&showTitle=false&size=25640&status=error&style=none&taskId=u3caee5be-14b4-4068-870b-163f737bd08&title=)

使用wget -O下载并以不同的文件名保存

wget默认会以最后一个符合”/”的后面的字符来命名,对于动态链接的下载通常文件名会不正确
下面的例子会下载一个文件并以名称download.aspx?id=1080保存,即使下载的文件是zip格式,它仍然以download.php?id=1080命令:

wget http://www.minjieren.com/download?id=1

为了解决这个问题,我们可以使用参数-O来指定一个文件名:

wget -O wordpress.zip http://www.minjieren.com/download.aspx?id=1080

下载多个文件

wget的另一个有用功能是使我们能够下载多个文件。 我们将在一个命令中提供多个URL。 该文件将被下载并按照URL中的名称命名。 不需要明确的选项规范。 我们只是通过用空格分隔URL来连续提供URL。 网址数量没有限制

$ wget http://ftp.gnu.org/gnu/wget/wget-1.19.tar.gz http://ftp.gnu.org/gnu/wget/wget-1.18.tar.gz

![image.png](https://img-blog.csdnimg.cn/img_convert/3149b09f63a92ecfbbcb48bcba8a020f.png#clientId=udbf26541-49b7-4&crop=0&crop=0&crop=1&crop=1&errorMessage=unknown error&from=paste&id=u79e072e7&margin=[object Object]&name=image.png&originHeight=375&originWidth=820&originalType=url&ratio=1&rotation=0&showTitle=false&size=61113&status=error&style=none&taskId=ucda96ad7-b6df-40d8-9bfe-8dff1ef5321&title=)

从文件读取下载URL

在前面的示例中,我们通过从like命令指定URL来下载了多个文件。 如果要下载100个URL,则可能难以管理。 另一种情况可能是,URL以纯文本格式逐行从外部提供。 在命令行中提供这些URL是一项艰巨且容易出错的工作。 希望wget具有仅指定文件名就可以逐行读取文件中URL的功能。 我们将使用-i选项逐行提供纯文本文件中的URL,该文件名为downloads.txt 。
downloads.txt文件内容 (downloads.txt File Content)

http://ftp.gnu.org/gnu/wget/wget-1.19.tar.gz 
http://ftp.gnu.org/gnu/wget/wget-1.18.tar.gz

然后我们将下载。 它有非常清晰的演示。

$ wget -i downloads.txt

![image.png](https://img-blog.csdnimg.cn/img_convert/64afe02ab3b17e337b3e28bf99726ad5.png#clientId=u33c6e570-d4f7-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u3814620d&margin=[object Object]&name=image.png&originHeight=377&originWidth=776&originalType=url&ratio=1&rotation=0&showTitle=false&size=58653&status=done&style=none&taskId=u434dd1b8-3c88-48b5-9761-371ce028899&title=)

使用wget -c断点续传

wget命令的另一个重要功能是从其离开的位置继续下载。 特别是在大文件中,下载可能会在%98完成后中断,这是一场噩梦。 提供了-c选项,可以继续下载而无需从头开始。

$ wget -c http://ftp.gnu.org/gnu/wget/wget-1.19.tar.gz

![image.png](https://img-blog.csdnimg.cn/img_convert/aa6a3c9d29737d6e4ac436ad288affe4.png#clientId=u33c6e570-d4f7-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=ua77138a5&margin=[object Object]&name=image.png&originHeight=170&originWidth=819&originalType=url&ratio=1&rotation=0&showTitle=false&size=31848&status=done&style=none&taskId=ud179144b-07a1-43f7-a7b1-9d9226aa15a&title=)
从屏幕截图中可以看到,文件的下载部分在下载栏中显示为+加号。 此外,还有关于重命名长度和已经下载的长度(行开始Lenght:… )的信息。还有诸如Partial Content信息

不覆盖现有文件

默认情况下,wget不会覆盖该文件。 如果发现下载的文件存在相同的文件名,则将.1附加到下载文件的末尾。 如果已准备就绪,则此.1递增。

使用wget -b后台下载

Wget作为下载的交互式过程开始。 在下载期间,wget进程仍然是前台进程。 但是在某些情况下,我们可能需要将wget发送到后台。 使用-b选项,wget命令将发送到后台。

$ wget -b http://ftp.gnu.org/gnu/wget/wget-1.19.tar.gz

![image.png](https://img-blog.csdnimg.cn/img_convert/746fb2f01c0f20323f80536b1bfdca4a.png#clientId=u33c6e570-d4f7-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=ue10c20d8&margin=[object Object]&name=image.png&originHeight=48&originWidth=801&originalType=url&ratio=1&rotation=0&showTitle=false&size=9879&status=done&style=none&taskId=ua627c7eb-bff4-4e7d-a953-3a52a9a6860&title=)

使用wget –limit -rate限速下载

当你执行wget的时候,它默认会占用全部可能的宽带下载。但是当你准备下载一个大文件,而你还需要下载其它文件时就有必要限速了

$ wget --limit-rate=50K http://ftp.gnu.org/gnu/wget/wget-1.19.tar.gz

![image.png](https://img-blog.csdnimg.cn/img_convert/0c069059a38a17417d081ef41319116f.png#clientId=u33c6e570-d4f7-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u1fd609f4&margin=[object Object]&name=image.png&originHeight=142&originWidth=838&originalType=url&ratio=1&rotation=0&showTitle=false&size=27419&status=done&style=none&taskId=ud0a87746-5be1-46e9-8b6f-e9d458370a6&title=)
正如我们在左下角看到的,带宽限制为50KB / s

指定FTP用户名和密码进行登录 (Specify FTP Username and Password For Login)

安全是当今的重要问题。 因此,FTP服务器不是那么安全,但是它们尝试实现一些安全步骤,例如用户名和密码。 wget可以将FTP身份验证与FTP用户名和密码一起使用。 我们将使用–ftp-user指定用户名,并使用–ftp-password指定FTP密码。

$ wget --ftp-user=anonymous --ftp-password=mypass ftp.gnu.org/gnu/wget/wget-1.19.tar.gz

![image.png](https://img-blog.csdnimg.cn/img_convert/86eda70195a2d848867907788c439eea.png#clientId=u33c6e570-d4f7-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u63ab81c4&margin=[object Object]&name=image.png&originHeight=136&originWidth=845&originalType=url&ratio=1&rotation=0&showTitle=false&size=27250&status=done&style=none&taskId=u99d8be14-5025-4a3d-8eb4-1a02ff6fb26&title=)

指定HTTP用户名和密码**(Specify HTTP Username and Password)**

像前面的示例一样,我们可以指定HTTP用户名和密码。 我们将使用–http-user指定HTTP用户名,并使用–http-password作为HTTP密码。
![image.png](https://img-blog.csdnimg.cn/img_convert/5daaaff5764d9bd33c7b861422c46fb2.png#clientId=u33c6e570-d4f7-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=ufd8ead91&margin=[object Object]&name=image.png&originHeight=104&originWidth=876&originalType=url&ratio=1&rotation=0&showTitle=false&size=23892&status=done&style=none&taskId=u93f77ec7-4def-4e64-b025-c0cdcc686c5&title=)

伪装代理名称下载

有些网站能通过根据判断代理名称不是浏览器而拒绝你的下载请求。不过你可以通过–user-agent参数伪装。

$ wget --user-agent="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092416 Firefox/39
" https://ftp.gnu.org/gnu/wget/wget-1.19.tar.gz

测试下载网址

wget的另一个有用功能是在下载URL之前先对其进行测试。 这将提供有关URL和文件状态的一些提示。 我们将使用–spider选项检查远程文件是否存在并可以下载。

$ wget --spider https://ftp.gnu.org/gnu/wget/wget-1.19.tar.gz

![image.png](https://img-blog.csdnimg.cn/img_convert/ff357b4d3ea803fd4d1503943824a480.png#clientId=u33c6e570-d4f7-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=ucba2e2e2&margin=[object Object]&name=image.png&originHeight=126&originWidth=818&originalType=url&ratio=1&rotation=0&showTitle=false&size=25357&status=done&style=none&taskId=u51025656-d3b6-404c-b9f0-e97e43808a1&title=)
从屏幕截图中可以看到,有一条消息表示Remote file exists. 在最后一行。 我们也可以不下载而获得文件的大小。
你可以在以下几种情况下使用spider参数:

  • 定时下载之前进行检查
  • 间隔检测网站是否可用
  • 检查网站页面的死链接

设置重试计数

在有问题的网络或下载服务器中,可能存在一些下载问题。 最知名的问题是短期内无法访问远程文件。 我们可以设置重试次数,该次数将尝试下载指定的时间。 可以使用带有重试计数的–tries选项
如果网络有问题或下载一个大文件也有可能失败。wget默认重试20次连接下载文件。如果需要,你可以使用–tries增加重试次数:

$ wget --tries=10 https://ftp.gnu.org/gnu/wget/wget-1.19.tar.gz

下载整个网站或蜘蛛网站

有多种工具可以下载整个站点,而仅提供主页URL。 wget也具有此功能。 此命令将搜寻并下载有关此URL和子页面的所有页面。 这将使站点可以脱机访问。 我们将使用–mirror下载整个站点,并使用-P参数提供下载位置。 在这里,我们要下载www.poftut.com及其子页面

$ wget --mirror https://www.poftut.com -P poftut.com

![image.png](https://img-blog.csdnimg.cn/img_convert/99ab7db6820400f412f9ff692eb13c50.png#clientId=u33c6e570-d4f7-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=ue05a0d2b&margin=[object Object]&name=image.png&originHeight=403&originWidth=851&originalType=url&ratio=1&rotation=0&showTitle=false&size=68786&status=done&style=none&taskId=ubcc108f3-e130-436a-81d8-fec2084b69a&title=)

下载特定文件类型

在下载多个文件或镜像站点时,我们可能只希望下载特定文件或文件扩展名。 可以使用-A和扩展名或文件名的一部分来指定。 在此示例中,我们只想下载.txt文件。

$ wget -A '.txt' --mirror https://www.poftut.com

![image.png](https://img-blog.csdnimg.cn/img_convert/9b9e0be48c9fe6961d22bd92480ed173.png#clientId=u33c6e570-d4f7-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=uc9d7514a&margin=[object Object]&name=image.png&originHeight=229&originWidth=820&originalType=url&ratio=1&rotation=0&showTitle=false&size=39769&status=done&style=none&taskId=uaa7f1739-5cd0-4a39-b234-5229a472830&title=)

不下载特定的文件类型

在下载多个URL或镜像站点时,会有很多我们不想下载的文件或太大而无法下载。 我们将通过提供扩展名或文件名来使用–reject选项。

$ wget --reject '.txt' --mirror https://www.poftut.com

记录到文件 (Log To File)

默认情况下,由wget创建的日志会打印到标准输出,这通常是我们使用的命令行界面。 但是,使用远程或作为批处理或后台进程,我们无法直接获取日志。 因此将日志写入文件是最好的解决方案。 我们将-o选项与日志文件名一起使用。

$ wget -o wget.log http://ftp.gnu.org/gnu/wget/wget-1.19.tar.gz

![image.png](https://img-blog.csdnimg.cn/img_convert/aa7d2de85578730501bb7bc4e0725da4.png#clientId=u33c6e570-d4f7-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=uedda3e4e&margin=[object Object]&name=image.png&originHeight=418&originWidth=827&originalType=url&ratio=1&rotation=0&showTitle=false&size=62762&status=done&style=none&taskId=ufe7b504a-d06c-465b-9152-1e3be41e670&title=)

设置下载大小限制

设置限制总下载文件大小的另一个不错的选择是-Q 。 在示例中,我们将下载大小设置为2 MB 。 此设置对单文件下载无效。 这将对站点的递归或镜像产生影响。

$ wget -Q5m https://www.poftut.com

使用wget –reject过滤指定格式下载

下载一个网站,但你不希望下载图片,可以使用以下命令:

wget --reject=gif ur

显示版本信息

可以使用–version选项获取有关wget命令的版本信息。

$ wget --version

![image.png](https://img-blog.csdnimg.cn/img_convert/3043cdc3efad1cf177ed3ce20dce14e2.png#clientId=u33c6e570-d4f7-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u329e21e7&margin=[object Object]&name=image.png&originHeight=356&originWidth=792&originalType=url&ratio=1&rotation=0&showTitle=false&size=53924&status=done&style=none&taskId=u3ebc9809-6710-4123-a3c2-eb72101b3e1&title=)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值