在本文中,我们将学习怎么使用wget从行完成常见的下载任务。
安装wget
默认情况下,大多数Linux发行版都安装了wget。要检测您的系统上是否安装了它,请在您的终端上键入并按Enter。若果未安装,则会显示“commandnotfound”错误。使用以下相应的将其安装到您的系统上。wget
对于基于Ubuntu/Debian的系统,请使用:
sudo apt updatesudo apt install wget
对于CentOS/RHEL系统,请使用:
sudo yum install wget
macOS
wget以Homebrew包的方式提供,因而请抵达Homebrew页面并根据说明进行安装。完成此操作后,您可以使用以下安装wget:
brew install wget
Windows
wget是msys2的一部份,msys2是一个致力提供一组类似Unix的命令行工具的项目。转入msys2主页并依照页面上的说明进行安装。之后,打开msys2窗口并键入:
pacman -S wget
如今,您可以通过MSYS2访问wget命令。
下载带有URL的文件
假如你有特定文件的链接,你可以用wget下载它,只需提供URL作为其参数,如同这样:
wget //releases.ubuntu.com/18.04/ubuntu-18.04-desktop-amd64.iso
假如运行上述命令,它将显示进度信息,比如当前下载速率和下载的文件量:
wget从URL的最后一部份推测出一个文件名,并下载到您的当前目录中。因而,在我们的示例中,文件将保存到。ubuntu-18.04-desktop-amd64.iso
假如有多个文件,您可以一个接一个地指定它们:
wget
请注意,仅当文件可通过URL直接访问时,wget才有效。有时,您会碰到难以直接通过链接下载的文件-比如登陆后可以访问的文件。您可以通过多种方法绕开这种限制,我们将在本文前面讨论。
通过FTP下载文件
Wget的工作方法与FTP相同—您提供FTPURL作为参数,如下所示:
wget ftp://ftp.example.com/ubuntu/ubuntu-18.04-desktop-amd64.iso
有时,FTP文件可能会遭到用户名和密码的保护。你可以像这样将它们传递给wget:
wget --ftp-user=booleanworld --ftp-password=passw0rd
自定义输出文件名和目录
正如我们之前听到的,wget会推测文件名并下载到你的当前目录。倘若要将文件保存到其他目录或以其他名称储存,可以使用开关。诸如,倘若要将下载内容保存到file,请运行:-OUbuntu.iso
wget -O Ubuntu.iso
您也可以通过这些方法修改目录。比如ubuntu opera 无法,要将下载内容另存为下的文件,请运行:Ubuntu.iso/media/sdb1/Software
wget -O /media/sdb1/Software/Ubuntu.iso
有时,你可能想要指定一个目录,但让wget找出文件名。您可以使用开关执行此操作。假如要在该目录下保存文件,请使用:-P/media/sdb1/Software
wget -P /media/sdb1/Software
恢复中断的下载
下载可能会因网路状况不佳而中断,或则由于您在wget仍在下载文件时按Ctrl+C自动中断了下载。您可以使用wget的开关恢复中断的下载:-c
wget -c
倘若您已下载到自定义目录或文件,则应将和/开关组合在一起,如下所示:-c-P-O
wget -c -O
倘若您使用的是and,请勿必提供正确的URL。否则,您最终会得到两个不同文件的部份组合,使其难以使用。据悉,个别服务器不容许您恢复文件下载。(您可以通过查看进度条来判定服务器是否支持恢复。若果在初始下载期间,进度条来回联通而不是从左往右联通,则服务器不容许恢复。在这些情况下,将从头开始重新下载文件。-O-c
限制下载速率
假如要下载大文件,则可能须要控制下载速率,便于留出额外的带宽来浏览Web。您可以使用开关执行此操作。诸如,要将下载速率限制为512KB/s,请使用:--limit-rate
wget --limit-rate=512k
同样,您可以使用后缀表示以MB/s为单位的限制。m
在后台下载文件
默认情况下,wget在前台下载文件,这可能并不适宜每种情况。诸如,您可能希望通过SSH在您的服务器上下载文件。并且,您不希望保持SSH联接打开并等待文件下载。要在后台下载文件,您可以使用如下选项:-b
wget -b
当您运行此命令时,wget将告诉您将下载日志保存到何处。此文件一般命名为,或类似名称:wget-logwget-log.1
稍后,倘若您想监控下载状态,可以使用以下命令来实现:
tail -f wget-log
您可以随时按Ctrl+C停止查看进度。并且,下载进度将照常在后台继续进行。
通过不良的网路联接下载文件
倘若您的互联网联接不稳定,下载一般会失败,或则以特别慢的速率发生。默认情况下,wget会重试下载最多20次,以防出现问题。并且,在非常糟糕的Internet联接上,这可能还不够。倘若您发觉下载速率平缓且错误频繁,您可以运行:
wget -t inf --waitretry=3 --timeout=10 --retry-connrefused
首先,我们将尝试次数(开关)设置为。假如wget在下载文件时遇见问题,它将按照须要无限次尝试以完成下载。之后linux系统命令,我们习惯于将每次重试之间的延后设置为3秒。-tinf--waitretry
接出来,我们使用开关将网路超时设置为10秒。假如wget超过10秒没有收到服务器的回复,则假设联接已关掉。这样做有助于wget重新发出网路恳求以获取文件。--timeout
最后,我们使用了switch。一般,当服务器未运行时,会出现“connectionrefused”错误。并且,它也可能发生在不可靠的网路联接上,此开关告诉wget重试下载,以防收到联接被拒绝错误。--retry-connrefused
以递归方法下载文件
到目前为止,我们早已了解了怎样使用wget下载特定文件。有时,下载网站的相关部份更有用。因此,Wget具有“递归下载”功能。在此模式下,wget会下载初始文件,保存该文件,之后扫描该文件以查找链接。之后,它会下载每位链接,保存这种文件,并从中提取链接。默认情况下ubuntu opera 无法,此过程最多持续五次。并且,您可以按照须要降低或减轻此限制(称为“递归深度”)。
比如,要递归下载中文维基百科的页面,请使用:
wget -r //en.wikipedia.org/
这种文件将保存在具有站点名称的目录中。在我们的事例中,内容将保存到名为.
要控制“recursiondepth”,请使用flag.假若您希望将其设置为自定义值,比如7,请使用:-l
wget -r -l 7 //en.wikipedia.org/
您也可以使用替代数字。这促使wget检索网站的所有内容,具有无限的递归深度。inf
默认情况下,wget会下载它在递归模式下找到的所有文件。倘若您只对个别类型的文件感兴趣,则可以使用(accept)选项进行控制。诸如,倘若您想从Wikipedia下载PNG和JPEG图象,请使用:-A
wget -r //en.wikipedia.org/ -A png,jpg,jpeg
这将从Wikipedia下载所有文件(最多5级),但会删掉任何不以extensions或.同样,您也可以使用开关拒绝个别文件。比如,要保存Wikipedia中除PDF文档之外的所有文件,请使用:pngjpgjpeg-R
wget -r //en.wikipedia.org/ -R pdf
转换下载文件中的链接
以递归形式下载文件时,wget会下载文件并按原貌保存它们。下载的网页仍将包含指向该网站的链接,这意味着您不能将此副本用于离线使用。辛运的是linux命令,wget有一个链接转换功能——它将网页中的链接转换为本地链接。要使用此功能,请按如下方法使用switch:-k
wget -k -r //en.wikipedia.org/
设置焦段和用户代理字符串
HTTP顾客端(比如浏览器和wget等工具)发送一个“用户代理字符串”作为HTTP康泰时的一部份,用于标示顾客端。许多网站站长通过配置其服务器来制止此字符串中包含“wget”的恳求,因而制止wget。要解决此问题,您可以用自定义字符串覆盖wget的用户代理字符串;诸如您的浏览器使用的那种。要了解浏览器的用户代理,请转入等网站。从页面中复制用户代理,并使用开关运行wget:-U
wget -U ""
比如,倘若您使用的是Mac,则命令将如下所示:
wget -U "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"
倘若您是测试网站功能的开发人员,则可能须要告诉wget传递其他HTTP焦段。您可以使用开关执行此操作。诸如,要发送值为123的康泰时,请运行以下命令:--headerX-Foo
wget --header "X-Foo: 123"
假如要设置多个自定义焦段,您可以按照须要多次重复切换。--header
本文原创地址://lrxjmw.cn/rhsywmlhgjwc.html编辑:刘遄,审核员:暂无