“五分钟学命令系列”之二十一《wget命令》

一、wget都支持什么协议的下载

wget支持HTTP、HTTPS和FTP协议的下载,其中也包括通过HTTP代理的下载。

二、躲开robots.txt全禁

使用“–execute 选项加参数”,它和把参数放到.wgetrc里的效果是一样的。你使用–execute robots=off就可以躲开robots.txt的全禁了

三、-nd选项

即–no-directories。当我们下载远程的数据时,可以要求wget只下载文件,不下载文件夹,所有下载的文件都平铺在当前目录下。

PS:如果下载到不同路径的同名文件的话,那用-nd岂不是会造成同名文件覆盖的问题?”。答案是不会的,因为wget在下载文件时,如果当前目录下有同名文件,则会默认在新下载的文件后加上“.1”、“.2” …等标识,以示区别。

四、-x选项

即–force-directories。这个选项和–no-directories是完全相反的。–no-directories是要求绝 对不能下载和创建任何文件夹,同时所有文件都平铺在当前目录中。而–force-directories选项则要求处处都要有文件夹,即使是wget -x http://www.yangfannie.com/home/robots.txt这样下载单独普通文件的命令,也会在当前目录下创建www.yangfannie.com/home目录结构,然后将robots.txt文件下载到www.yangfannie.com/home里面。

五、-r选项

这个选项用于下载远程的文件夹,但是情况没有那么简单,对于ftp协议下载来讲,你如果使用如下命令下载

wget -r ftp://my.test.server:/home/img

PS:实际在当前目录下会生成my.test.server/home/img目录结构,可见直接使用-r选项,默认会创建一域名和绝对路径组成的目录结构的

六、-nH选项

即–no-host-directories。在第五点我们已经知道了在使用wget -r命令下载目录时,默认会创建一个my.test.server文件夹的。使用-nH选项就是来禁止这种默认行为。

PS:当你用wget -r -nH ftp://my.test.server:/home/img命令下载数据时,会在当前目录下创建home/img目录结构,看,my.test.server文件夹已经不见了。

七、–protocol-directories选项

作用是先创建一个以协议名为名称的文件夹

wget -r –protocol-directories ftp://my.test.server:/home/img

PS:会创建如下目录结构ftp/my.test.server/home/img。这个选项,对于那些希望通过协议类型来区分数据的同学比较有用

八、–cut-dirs=number选项

它表示下载数据时,在本地创建目录时,忽略多少层目录结构

只用-r选项 -> ftp.yangfannie.com/pub/test/

加上-nH选项 -> pub/test/

加上-nH –cut-dirs=1选项 -> test/

加上-nH –cut-dirs=2选项 -> .

加上–cut-dirs=1选项 -> ftp.yangfannie.com/test/

九、-P选项

即–directory-prefix=prefix,所设置的这个prefix路径,则是用来代替当前目录的,所有本应下载到当前目录的数据都会被下载到prefix所设置的目录中去。

十、-t选项

即–tries=number,用于设置wget下载时重试的次数,当设置为0(数字零)或inf时表示无限次重试。默认的重试次数是20次。

十一、-o选项

即–output-file=logfile,wget运行过程中输出到标准输出的内容都会被写到所设置的logfile文件中。

十二、-O选项

即–output-document-file,表示wget下载的所有文件的内容会被依次追加写到所设置的file文件中,而不会创建原本的文件。在下载单独文件时使用-O选项,可以避免wget下载同名文件时默认写到“.1”后缀文件中的问题。

十三、-N选项

即–timestamping,表示开启时间戳机制,wget会下载远程时间戳更新的文件。

十四、-nc选项

即–no-clobber选项,在同一个目录中,如果一个文件被多次下载,使用-nc命令会拒绝下载同一文件(即使文件内容是更新的了)

十五、-c选项

即–continue选项,这就是“断点续传”。无论你之前使用哪个下载工具下载了一半的文件,都可以用wget来继续下载此文件。

其实wget的此断点续传策略是有隐患的,因为如果远程文件的开头部分被进行了修改,wget在进行断点续传时是意识不到这一点的,它只会傻傻的从已传文件大小之后的部分继续下载。所以使用-c选项断点续传之后,务必进行md5校验。

十六、–limit-rate=amount选项

作用是用于限速。例如:–limit-rate=20k将会限制速度在20KB/s。

PS:wget实现限速的原理是在一次网络读取动作之后sleep一个特定时间段,以让平均的网络读速度降到限制值,这个策略最终会使TCP传输速度降到限制值左右。所以在传输超小文件时,可能无法达到限速的作用。

十七、-w选项

即–wait=seconds选项,用于设置wget每两个请求之间间隔的秒数。可以降低远程服务器的负载。你除了可以直接设置秒数,还可以加上m表示分钟、h表示小时、d表示天。

十八、–waitretry=seconds选项

用于设置请求重试秒数。wget采用的是线性递增等待的方式,如果你设置的是10秒,那么第一次请求失败后,会等待1秒;第二次请求失败会等待2秒;直到最后达到10秒等待时间为止。所以当到达最后一次时,时间已经过了1+2+…+10=55秒。

weinxin
聂扬帆博客
一个分享IT运维相关工作经验和实战技巧的个人博客

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: