wget是Linux下最可靠的下载工具,支持断点续传、认证下载和递归抓取。使用-c可续传大文件,–user与–password用于登录认证,结合-r、-np、-l等参数可实现网站镜像或目录下载,同时可通过–no-check-certificate跳过证书验证(需谨慎)。
在Linux命令行下,下载文件最核心、最可靠的工具,毫无疑问就是
wget
。它就像一个老兵,虽然界面朴素,但功能强大且久经沙场。无论你是想从一个简单的HTTP链接抓取文件,还是需要处理更复杂的认证、断点续传,甚至递归下载整个网站,
wget
都能胜任。它直接、高效,是每个Linux用户都应该掌握的技能,省去了图形界面操作的繁琐。
在Linux命令行中下载文件,
wget
的基本用法直接到令人发指:你只需要在终端输入
wget
,后面紧跟着你要下载文件的URL,回车,文件就开始下载了。比如,要下载一个名为
example.tar.gz
的文件,命令就是:
wget https://example.com/files/example.tar.gz
这看起来很简单,但实际操作中,我们总会遇到各种各样的情况。比如文件太大下载到一半断了,或者需要把文件保存到指定位置,甚至是从一个需要用户名密码的服务器下载。这时候,
wget
的各种参数就派上用场了。
如何用
wget
wget
下载大文件并断点续传,避免重复下载?
下载大文件时,最怕的就是网络中断或者下载到一半电脑关机。如果每次都要从头开始,那简直是噩梦。
wget
的
-c
参数(或
--continue
)就是为此而生。它能让
wget
检查本地是否已经存在同名文件,如果存在且未下载完成,就会尝试从上次中断的地方继续下载。
假设你正在下载一个几GB的虚拟机镜像:
wget -c https://example.com/large-image.iso
如果下载过程中断,你只需要再次运行相同的命令,
wget
就会自动检查本地
large-image.iso
文件的大小,然后从上次停止的地方接着下载。这大大提高了下载的效率和容错性,尤其是在网络环境不稳定的情况下,简直是救命稻草。我个人就无数次因为这个功能而避免了重复下载几个小时的痛苦。
下载受保护或需要认证的文件,
wget
wget
应该怎么处理?
有时候,我们要下载的文件并不是公开的,可能需要用户名和密码才能访问。
wget
提供了
--user
(或
-U
)和
--password
(或
-P
)参数来处理HTTP或FTP认证。
例如,从一个需要认证的FTP服务器下载文件:
wget --user=your_username --password=your_password ftp://ftp.example.com/private/document.pdf
这里需要注意的是,直接在命令行中输入密码可能会被历史记录下来,存在一定的安全风险。如果是在脚本中,或者对安全性有更高要求,可以考虑使用其他更安全的方式传递凭据,或者确保只有受信任的用户能访问该历史记录。
另外,如果你遇到HTTPS证书验证失败的情况(比如自签名证书,或者证书过期),
wget
可能会拒绝下载。在这种情况下,你可以使用
--no-check-certificate
参数来跳过证书验证。
wget --no-check-certificate https://internal.company.com/report.zip
我知道这听起来有点粗暴,因为它绕过了安全检查,但在某些内部测试环境,或者你知道来源可靠但证书又过期的情况下,这确实能帮你解燃眉之急。但请务必谨慎使用,确保你完全信任下载源,否则可能会带来安全隐患。
除了单个文件,
wget
wget
还能下载整个网站或指定目录吗?
wget
不仅仅是下载单个文件的好手,它在递归下载方面也异常强大,可以用来镜像整个网站或者下载网站的某个特定目录。这对于备份网站、离线浏览或者分析网站结构都非常有用。
要递归下载一个网站,你可以使用
-r
(
--recursive
)参数。但仅仅这样还不够,你可能还需要结合其他参数来控制下载的深度、文件类型、是否跟随外部链接等。
一个常用的组合是:
wget -r -np -l 1 --accept=pdf,doc,xls https://example.com/documents/
这里:
-
-r
:启用递归下载。
-
-np
(
--no-parent
):确保
wget
不会向上级目录递归,只在当前目录及其子目录中操作。
-
-l 1
(
--level=1
):设置递归下载的深度为1,意味着只下载当前目录下的文件和链接到的文件,不会再深入到子目录的子目录。如果你想下载整个网站,可以把这个值设置得更大,或者干脆不设(默认是无限深度,但要小心,可能会下载非常多的内容)。
-
--accept=pdf,doc,xls
:指定只下载
pdf
、
doc
和
xls
类型的文件。你也可以用
--reject
来排除某些文件类型。
通过这些参数的组合,
wget
能够非常灵活地完成各种复杂的下载任务,从简单的文件抓取到整个网站的镜像,它的功能远超许多人的想象。但请记住,在使用递归下载时,务必注意目标网站的
robots.txt
文件和使用条款,避免给服务器造成不必要的负担。
linux word 电脑 虚拟机 工具 pdf linux命令 continue 递归 private internal http https linux