wget命令详解(断点续传,批量下载)

2021-08-18   


1 wget具备的功能有:
(1)支持断点下传功能
(2)同时支持FTP和HTTP下载方式
(3)支持代理服务器
(4)设置方便简单
(5)程序小,完全免费

2 wget用法:
wget虽然功能强大,但是使用起来还是比较简单的,基本的语法是:
wget [参数列表] URL地址

下面就结合具体的例子来说明一下wget的用法:
2.1 下载整个http或者ftp站点:

wget http://example.com/url

这个命令可以将http://example.your.url/here 首页下载下来。使用-x会强制建立服务器上一模一样的目录,如果使用-nd参数,那么服务器上下载的所有内容都会加到本地的当前目录

wget -r http://example.com/url

这个命令会按照递归的方法,下载服务器上所有的目录和文件,实质就是下载整个网站。这个命令一定要小心使用,因为在下载的时候,被下载网站指向的所有地址 同样会被下载,因此,如果这个网站引用了其他网站,那么被引用的网站也会被下载下来!基于这个原因,这个参数不常用。可以用-l number参数来指定下载的层次。例如只下载两层,那么使用-l 2

wget -m http://example.com/url

如果想要制作镜像,那你可以使用-m参数,wget会自动判断合适的参数来制作镜像站点。此时,wget会登录到服务器上,读入robots.txt并按robots.txt的规定来执行

2.2 断点续传
当文件特别大或者网络特别慢的时候,往往一个文件还没有下载完,连接就已经被切断,此时就需要断点续传。wget的断点续传是自动的,只需要使用-c参数:

wget -c http://example.com/url

使用断点续传要求服务器支持断点续传。-t参数表示重试次数,例如需要重试100次,那么就写-t 100,如果设成-t 0,那么表示无穷次重试,直到连接成功。-T参数表示超时等待时间,例如-T 120,表示等待120秒连接不上就算超时

2.3 批量下载
如果有多个文件需要下载,那么可以生成一个文件,把每个文件的URL写一行,例如:

[root@localhost ~]#vim download.txt
    http://url_1
    http://url_2
    https://url_3
    https://url_4
    ……
[root@localhost ~]#wget -i download.txt

这样就会把download.txt里面列出的每个URL都下载下来,如果列的是文件就下载文件;如果列的是网站,那么就会下载首页

2.4 选择性的下载
可以指定让wget只下载一类文件,或者不下载什么文件

wget -m –reject=png https://www.liuzehe.top/upload/……

以上命令表示下载https://www.liuzehe.top/upload/……下的文件,但是忽略png类型的文件

  • –accept=Type 可以接受的文件类型
  • –reject=Type 拒绝接受的文件类型

2.5 密码和认证
如果使用wget下载只能使用用户名/密码方式限制访问的网站,那么可以利用两个参数:

  • –http-user=USER设置HTTP用户
  • –http-passwd=PASS设置HTTP密码

对于需要证书做认证的网站,就只能利用其他下载工具了,例如curl

2.6 利用代理服务器进行下载
如果用户的网络需要经过代理服务器,那么可以让wget通过代理服务器进行文件的下载。此时需要在当前用户的目录下创建一个.wgetrc文件来读取自定义设置。文件中可以设置代理服务器:

http-proxy = 1.2.3.4:80       #表示http代理服务器的IP和端口
ftp-proxy = 1.2.3.4:80        #表示ftp代理服务器的IP和端口
use_proxy = on                #表示使用代理服务器下载,off为关闭

如果代理服务器需要密码则命令如下:

wget –proxy-user=USER –proxy-passwd=PASSWORD URL

这样就讲URL理的文件下载到代理服务器上了。如果不想创建这个文件,也可以直接使用-e选项指定

wget -–proxy=on  -e http-proxy = 1.2.3.4:80 –proxy-user=USER –proxy-passwd=PASSWORD URL

2.7 wget一些常用选项介绍:

-V                        #version 显示软件版本号然后退出
-h                        #help 显示软件帮助信息
-e                        #execute=COMMAND 相当于执行一个 “.wgetrc”里的命令
-o                        #output-file=FILE 将软件输出信息保存到文件FILE里
-a                        #append-output=FILE 将软件输出信息追加到文件FILE里
-b                        #让wget在后台运行,记录文件写在当前目录下”wget-log”文件中
-d                        #debug 显示输出信息
-q                        #quiet 不显示输出信息
-i                        #input-file=FILE 从FILE文件中取得URL
-t                        #tries=NUMBER 重试下载次数(0表示无穷次)
-O                        #output-document=FILE 下载文件保存为别的文件名
-nc                       #no-clobber 不要覆盖已经存在的文件
-np                       #只下载目标站点指定目录及其子目录的内容
-N                        #timestamping 只下载比本地存在的文件新的文件
-T                        #timeout=SECONDS 设置超时时间
-w                        #[number of seconds]:在两次尝试之间等待多少秒,比如“-w 100”表示两次尝试之间等待100秒
-Y                        #proxy=on/off 关闭代理
-nd                       #no-directories 不建立目录
-x                        #force-directories 强制建立目录
–http-user=USER           #设置HTTP访问登录用户
–http-passwd=PASS         #设置HTTP访问密码
–proxy-user=USER          #设置代理服务器登录用户
–proxy-passwd=PASS        #设置代理服务器密码
-r                        #recursive 下载整个网站、目录(小心使用)
-l                        #level=NUMBER 下载层次
-A                        #accept=Type 可以接受的文件类型
-R                        #reject=Type 拒绝接受的文件类型
-D                        #domains=example.com 可以接受的域名为example.com
–exclude-domains=LIST     #拒绝域名为LIST提供的文件
-L                        #relative 下载关联链接
–follow-ftp               #只下载FTP链接
-H                        #span-hosts 可以下载外面的主机
-nH                       #不创建以目标主机域名为目录名的目录,将目标主机的目录结构直接下到当前目录下
-I                        #include-directories=LIST 允许的目录
-X                        #exclude-directories=LIST 拒绝的目录
-Q                        #[byetes]:限制下载文件的总大小最多不能超过多少,比如“-Q 2k”表示不能超过2K字节,“-Q 3m”表示最多不能超过3M字节,如果数字后面什么都不加,缺省是以字节为单位,比如“-Q 200”表示最多不能超过200字节

wget还有很多有用的功能,大家可以去挖掘……

Q.E.D.