技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> Linux --> 其实你不懂wget的心-05

其实你不懂wget的心-05

浏览:2922次  出处信息

    上篇文章,给了大家不少误会,对于明白原理的朋友,不说自明;但对于不太精通Linux系统原理的朋友,上一篇的表述方法刚刚好。

    今天我们继续了解wget的心,看看还有哪些体贴的功能,我们平时没有接触到的。

    1 -t选项

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

    不过wget也不是在什么情况下都会傻傻的重试的,例如在发生“connection refused”或“not found”时,wget会立即退出,不会进行重试。

    2 -o选项

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

    3 -O选项

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

    4 -N选项

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

    5 -nc选项

    即-no-clobber选项。

    在同一个目录中,如果一个文件被多次下载,那么wget的处理方式会取决于几个重要选项,这其中就包括了-nc选项。

    当多次下载同一个文件时,本次文件会被覆盖,或者被重写,或者被保护,这都是有可能的。

    当使用wget多次下载同一个文件,且不使用-N,-nc或-r时,那么wget会默认在第二次下载时自动在文件名后加上“.1”后缀,第三次下载时加上“.2”后缀,以此类推。

    但当我们使用了-nc选项时,wget不会使用“.1/.2”的策略,而是拒绝下载同一文件(即使文件内容是更新的了)。这个功能用于有的网页被同时指向了很多遍,那么使用-nc可以避免多次下载。

    当使用wget且使用-r选项,但不使用-N选项或-nc选项时,重新下载同名文件时,当远程文件的修改时间是更新的了,那么wget会选择覆盖当前目录已有的老文件,此时使用-nc可以禁止wget这样做。(但当远程文件的修改时间并不新,那么wget就会拒绝下载。)

    当使用wget且使用-N选项时,是否下载同名文件,完全取决于远程文件和本地文件的时间戳以及文件大小。-nc选项是不允许和-N选项同时设置的。如果你同时使用了-N和-nc选项,会得到这样的错误提示“Can’t timestamp and not clobber old files at the same time.”

    6 -c选项

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

    wget -c ftp://sunsite.doc.ic.ac.uk/ls-lR.Z

    当前目录已有一个ls-lR.Z文件存在,wget将假定这是一个下载了一半的文件,然后提取本地文件的文件大小,并根据此值请求从远程文件的相应文件大小处开始继续下载。

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

    7 -limit-rate=amount选项

    此选项适用于限速的,将速度限制在amount bytes/second, 当然也可以用单位k/m来表示,例如-limit-rate=20k将会限制速度在20KB/s。

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

    8 -w选项

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

    9 -waitretry=seconds选项

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

建议继续学习:

  1. wget 的使用    (阅读:4447)
  2. 其实你不懂wget的心-01    (阅读:3543)
  3. 其实你不懂wget的心-04    (阅读:3328)
  4. 其实你不懂wget的心-02    (阅读:2805)
  5. 其实你不懂wget的心-03    (阅读:2648)
  6. wget 自动发送用户名密码    (阅读:2532)
  7. wget中文使用手册    (阅读:2231)
  8. Linux下同时wget多个文件    (阅读:2291)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1