Linux中的wget命令(详细指南)

567 阅读4分钟

wget是一个Linux命令行工具,用于检索和下载互联网上的文件。它使用诸如FTP、HTTP和HTTPS等协议来完成这些任务。在这篇文章中,我们讨论了常用的wget命令和选项。

目录:

  1. 简介
  2. 语法
  3. 命令
  4. 总结
  5. 参考文献

介绍

wget是一个Linux命令行工具,用于从互联网检索或下载文件。它使用诸如FTPHTTPHTTPS等协议来完成这些任务。

wget甚至可以在缓慢和不稳定的网络连接中工作,当我们失去连接时,我们可以从它停止的地方继续下载。它还被用于镜像网站。

语法

语法如下:

wget [OPTION] [URL]

命令:

要从一个网站下载一个文件,opengenus.org/notes.pdf,我们写。

wget https://opengenus.org/notes.pdf

对于无声的下载,我们使用*-q*选项:

wget -q https://opengenus.org/notes.pdf

如果我们想把文件下载到一个特定的目录中,我们写道:

wget -P ~/Documents/notes https://opengenus.org/notes.pdf

其中~/Documents/notes是我们指定的目录,也是下载的文件将被保存的地方。

我们还可以通过使用*-O*选项将下载的文件保存在一个不同的名称下:

wget -O newFile.pdf https:///www/url.com/notes.pdf

该命令将下载notes.pdf并将其保存为newFile.pdf

我们也可以通过将来源保存在一个文件中来下载多个文件,例如

vim urls.txt

输入以下网址:

https://www.url1.com/pdf
https://www.url2.com
https://www.url3.com/documents

为了获取这些文件,我们写道:

wget -i urls.txt

wget将从urls.txt中描述的三个urls中获取所有文件。

我们也可以选择把所有的urls写在命令本身,如下:

wget https://www.url1.com/pdf https://www.url2.com https://www.url3.com/documents

我们还可以使用通配符*从同一来源下载多个相同类型的文件,如下所示:

wget ftp://exampleserver/music/*.mp3

上述命令下载了所有以*.mp3*文件为扩展名的文件。

假设我们想继续进行其他工作,wget可以通过使用*-b*选项在后台工作,如下所示。

wget -b https:///www/url.com/files

我们可以定义一个日志文件,与下载有关的信息将被保存在那里,也就是在它在后台工作的时候:

wget -b info.log https:///www/url.com/files

我们还可以通过使用*-o*选项将信息记录到一个文件中:

wget https:///www/url.com/files -o info.log

假设我们在下载过程中被打断了,我们可以使用*-c*选项来恢复下载,如下图:

wget -c https:///www/url.com/image.iso

我们还可以通过使用*-limit-rate*选项来限制下载速度,如下所示:

wget --limit-rate=128k https:///www/url.com/image.iso

上述命令以128kbs的速度下载文件。
速度可以用k表示千字节,m表示兆字节,g
表示千兆字节。

一个远程资源可能被配置为阻止wget用户代理来绕过这种情况,我们可以使用*-U*选项来模拟一个不同的浏览器,如下所示:

wget --user-agent="Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36" http://wget-forbidden.com/

其中我们定义用户代理为*'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36'* 。

我们也可以通过ftp协议下载,其中ftp服务器有密码保护,我们写道:

wget --ftp-user=USERNAME --ftp-password=PASSWORD ftp://ftp.example.com/filename.zip

其中*'USERNAME'是实际用户名的占位符,'PASSWORD'*是实际密码。

要从受密码保护的HTTP服务器上下载文件,我们写道:

wget --http-user=USERNAME --http-password=PASSWORD http://http.example.com/filename.zip

镜像一个网站包括通过下载html、css和javascript以及网站的内部链接来创建一个网站的本地副本。我们使用*-m*选项:

wget -m https://www.mirrorwebsite.com

假设我们希望能够浏览下载的镜像,我们使用*-k选项将链接转换为适合浏览的链接,并使用-p*选项下载所有文件以显示html页面:

wget -mkp https://www.mirrorwebsite.com

我们也可以这样写:

wget -rpEHk --restrict-file-names=windows -D mirrorwebsite.com -np https://www.mirrorwebsite.com

其中

  • -r, --递归意味着下载整个网站
  • -p, --page-requisites,获取所有资产,如html、css和js
  • -E, --adjust-extension, 用必要的扩展名保存文件,例如.html
  • -H, --span-hosts, 从网站外包括必要的资产。
  • -k, --convert-links,更新链接,使其在本地版本中仍然有效。
  • --restrict-file-names=windows, 修改文件名,使它们也能在windows环境下工作。
  • -D, --domains https:www.mirrorwebsite.com, 这样wget就不会跟踪这个域外的链接
  • -np, --no-parent, 这样wget就不会跟踪通过的目录之外的链接。

如果我们想通过HTTPS协议下载文件并忽略SSL证书检查,我们使用*--no-check-certificate*选项。

wget --no-check-certificate https://domain-with-invalid-ssl.com

摘要

我们使用wget工具来下载文件,恢复中断的下载,镜像网站,控制下载速度等。

wget是一个非交互式的网络下载器,不需要用户与之交互,因此使它对shell脚本很有用。

参考资料

  1. 执行命令wget --helpman wget,查看其手册页面。
  2. curl命令