
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

使用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

从文件读取下载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

使用wget -c断点续传
wget命令的另一个重要功能是从其离开的位置继续下载。 特别是在大文件中,下载可能会在%98完成后中断,这是一场噩梦。 提供了-c选项,可以继续下载而无需从头开始。
$ wget -c http://ftp.gnu.org/gnu/wget/wget-1.19.tar.gz

从屏幕截图中可以看到,文件的下载部分在下载栏中显示为+加号。 此外,还有关于重命名长度和已经下载的长度(行开始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

使用wget –limit -rate限速下载
当你执行wget的时候,它默认会占用全部可能的宽带下载。但是当你准备下载一个大文件,而你还需要下载其它文件时就有必要限速了
$ wget --limit-rate=50K http://ftp.gnu.org/gnu/wget/wget-1.19.tar.gz

正如我们在左下角看到的,带宽限制为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

指定HTTP用户名和密码**(Specify HTTP Username and Password)**
像前面的示例一样,我们可以指定HTTP用户名和密码。 我们将使用–http-user指定HTTP用户名,并使用–http-password作为HTTP密码。

伪装代理名称下载
有些网站能通过根据判断代理名称不是浏览器而拒绝你的下载请求。不过你可以通过–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

从屏幕截图中可以看到,有一条消息表示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

下载特定文件类型
在下载多个文件或镜像站点时,我们可能只希望下载特定文件或文件扩展名。 可以使用-A和扩展名或文件名的一部分来指定。 在此示例中,我们只想下载.txt文件。
$ wget -A '.txt' --mirror https://www.poftut.com

不下载特定的文件类型
在下载多个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

设置下载大小限制
设置限制总下载文件大小的另一个不错的选择是-Q 。 在示例中,我们将下载大小设置为2 MB 。 此设置对单文件下载无效。 这将对站点的递归或镜像产生影响。
$ wget -Q5m https://www.poftut.com
使用wget –reject过滤指定格式下载
下载一个网站,但你不希望下载图片,可以使用以下命令:
wget --reject=gif ur
显示版本信息
可以使用–version选项获取有关wget命令的版本信息。
$ wget --version
