linux下的wget命令实现断点下载

转载链接:
http://man.linuxde.net/wget
https://www.cnblogs.com/cindy-cindy/p/6847502.html
wget命令用来从指定的URL下载文件。wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。

命令格式:
wget [参数列表] [目标软件、网页的网址]

-a<日志文件>:在指定的日志文件中记录资料的执行过程;
-A <后缀名>:指定要下载文件的后缀名,多个后缀名之间使用逗号进行分隔;
-R <后缀名>:指定拒绝下载的后缀名,多个后缀名之间使用逗号进行分隔;
-b:进行后台的方式运行wget;
-B<连接地址>:设置参考的连接地址的基地地址;
-c:继续执行上次终端的任务;
-C<标志>:设置服务器数据块功能标志on为激活,off为关闭,默认值为on;
-d:调试模式运行指令;
-D<域名列表>:设置顺着的域名列表,域名之间用“,”分隔;
-e<指令>:作为文件“.wgetrc”中的一部分执行指定的指令;
-h:显示指令帮助信息;
-i<文件>:从指定文件获取要下载的URL地址;
-l<目录列表>:设置顺着的目录列表,多个目录用“,”分隔;
-L:仅顺着关联的连接;
-r:递归下载方式;
-nc:文件存在时,下载文件不覆盖原有文件;
-nv:下载时只显示更新和出错信息,不显示指令的详细执行过程;
-q:不显示指令执行过程;
-nh:不查询主机名称;
-v:显示详细执行过程;
-V:显示版本信息;
--passive-ftp:使用被动模式PASV连接FTP服务器;
--follow-ftp:从HTML文件中下载FTP连接文件。

1.下载单个文件

wget http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz

从网络下载一个文件并保存在当前目录,在下载的过程中会显示进度条,包含(下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间)。

2.指定下载文件的文件名
wget默认会以最后一个符合”/”的后面的字符来命令,对于动态链接的下载通常文件名会不正确。
错误:下面的例子会下载一个文件并以名称download.php?id=1080保存

wget http://www.centos.bz/download?id=1 

即使下载的文件是zip格式,它仍然以download.php?id=1080命令。
正确:为了解决这个问题,我们可以使用参数-O来指定一个文件名:

wget -O download.zip http://www.centos.bz/download.php?id=1080 

3.限速下载
当你执行wget的时候,它默认会占用全部可能的宽带下载。但是当你准备下载一个大文件,而你还需要下载其它文件时就有必要限速了。

wget –limit-rate=300k http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz

4.断点续传
使用wget -c重新启动下载中断的文件:

wget -c http://cn.wordpress.org/http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz 

对于我们下载大文件时突然由于网络等原因中断非常有帮助,我们可以继续接着下载而不是重新下载一个文件。需要继续中断的下载时可以使用-c参数。
5.后台下载
对于下载非常大的文件的时候,我们可以使用参数-b进行后台下载

wget -b http://www.linuxde.net/testfile.zip

查看下载进度:

tail -f wget-log

6.伪装代理名称下载
有些网站能通过根据判断代理名称不是浏览器而拒绝你的下载请求。不过你可以通过–user-agent参数伪装。

wget --user-agent="Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16" http://www.linuxde.net/testfile.zip

7.测试下载链接
当你打算进行定时下载,你应该在预定时间测试下载链接是否有效。我们可以增加–spider参数进行检查。

wget --spider URL

如果下载链接正确,将会显示:

Spider mode enabled. Check if remote file exists.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Remote file exists and could contain further links,
but recursion is disabled -- not retrieving.

保证了下载能在预定的时间进行,但当你给错了一个链接,将会显示如下错误:

wget --spider url
Spider mode enabled. Check if remote file exists.
HTTP request sent, awaiting response... 404 Not Found
Remote file does not exist -- broken link!!!

8.增加重试次数
如果网络有问题或下载一个大文件也有可能失败。wget默认重试20次连接下载文件。如果需要,你可以使用--tries增加重试次数。

wget --tries=40 URL

9.下载多个文件
将多个多个文件放在.txt文件中例如:
urls.txt:

url1
url2
url3

执行:

wget -i urls.txt

10.下载一个完整的网站,即当前页面所依赖的所有文件

wget --mirror -p --convert-links -P ./LOCAL URL
  • --mirror镜像选项,包括-N(不需要重新下载文件除非比本地文件新),-r(递归下载),-l inf(递归下载的深度为无穷大),--no-remove-listing(不删除‘.listing’文件)
  • -p:下载展示HTML页面所需要的全部文件,包括图片等。
  • --convert-links:下载后的的HTML和css中的链接都指向本地的文件
  • -P <指定目录>:保存所有的文件到指定目录

11.实现FTP下载
可以使用wget来完成ftp链接的下载。
使用wget匿名ftp下载:

wget ftp-url

使用wget用户名和密码认证的ftp下载:

wget --ftp-user=USERNAME --ftp-password=PASSWORD url

猜你喜欢

转载自blog.csdn.net/winycg/article/details/81174180