linux wget实现断点下载整个文件目录

wget介绍

wget 可以跟踪HTML页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构。这又常被称作”递归下载”。在递归下载的时候,wget 遵循Robot Exclusion标准(/robots.txt). wget可以在下载的同时,将链接转换成指向本地文件,以方便离线浏览。

wget 非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性.如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用

简单实例

wget -t 0 -T 120 -np -c -r ftp://xxx:xxx@xxx.com/xxx
其中“np”表示不跟随链接,只下载指定目录及子目录里的东西;
-c 表示启动断点续传,其实下目录及子目录有-r就可以搞定,
图省事的话就用映像用的-m参数,即:
wget -m -np ftp://xxx:xxx@xxx.com/xxx

实例

下载下载192.168.1.168首页并且显示下载信息Linux wget -d http://192.168.1.168下载192.168.1.168首页并且不显示任何信息wget -q http://192.168.1.168下载filelist.txt中所包含的链接的所有文件wget -i filelist.txt

下载到指定目录wget -P/tmp ftp://user:passwd@url/file把文件file下载到/tmp目录下。Linux wget是一个命令行的下载工具。对于我们这些 Linux 用户来说,几乎每天都在使用它。下面为大家介绍几个有用的 Linux wget 小技巧,可以让你更加高效而灵活的使用 Linux wget。

* $ wget -r -np -nd http://example.com/packages/这条命令可以下载 http://example.com 网站上 packages 目录中的所有文件。其中,-np 的作用是不遍历父目录,-nd 表示不在本机重新创建目录结构。

* $ wget -r -np -nd --accept=iso http://example.com/centos-5/i386/与上一条命令相似,但多加了一个 --accept=iso 选项,这指示Linux wget仅下载 i386 目录中所有扩展名为 iso 的文件。你也可以指定多个扩展名,只需用逗号分隔即可。

* $ wget -i filename.txt此命令常用于批量下载的情形,把所有需要下载文件的地址放到 filename.txt 中,然后 Linux wget就会自动为你下载所有文件了。

* $ wget -c http://example.com/really-big-file.iso这里所指定的 -c 选项的作用为断点续传。

* $ wget -m -k (-H) http://www.example.com/该命令可用来镜像一个网站,Linux wget将对链接进行转换。如果网站中的图像是放在另外的站点,那么可以使用 -H 选项。

下面我们继续了解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秒。

时间: 2024-10-25 09:57:02

linux wget实现断点下载整个文件目录的相关文章

linux wget 命令用法详解(附实例说明)

来源:http://www.jb51.net/LINUXjishu/86326.html Linux wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到本地服务器.如果我们使用虚拟主机,处理这样的事务我们只能先从远程服务器下载到我们电脑磁盘,然后再用ftp工具上传到服务器.这样既浪费时间又浪费精力,那不没办法的事.而到了Linux VPS,它则可以直接下载到服务器而不用经过上传这一步.wget工具体积小

新手求解答一下-linux系统下怎么下载歌曲

问题描述 linux系统下怎么下载歌曲 求大神详细说下,万分感谢急急急急急急急急急急急急急急急急急急急急急急急急急 解决方案 如果有gui图形界面,比如ubuntu,打开firefox或者浏览器,输入网址,下载即可. 如果没有图形界面,可以用wget命令行下载.不过下载了也没法听. 解决方案二: 1.有X window,直接用浏览器下载 2.没有X window,用wget命令下载 4.有X window,有wine,可以考虑wine安装Windows的听歌软件客户端(不推荐) 解决方案三: 用

Android原生实现多线程断点下载实例代码

各位父老乡亲,我单汉三又回来了,今天为大家带来一个用原生的安卓写的多线程断点下载Demo. 通过本文你可以学习到: SQLite的基本使用,数据库的增删改查. Handler的消息处理与更新UI. Service(主要用于下载)的进阶与使用. 原生的json文件解析(多层嵌套). RandomAccessFile的基本使用,可以将文件分段. 基于HttpURLConnection的大文件下载. 上面内容结合,实现多线程,断点下载. Demo是在TV上运行的,图片显示的问题不要纠结了. 文件下载的

Android实现多线程断点下载的方法

  本文实例讲述了Android实现多线程断点下载的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69

多线程-android 多个文件,每个文件都使用断点下载,线程是否会太多

问题描述 android 多个文件,每个文件都使用断点下载,线程是否会太多 我现在想使用文件的断点下载功能,每个文件可以分成几断,使用线程下载,如果存在多个文件都是用线程下载的话,线程有点多,怎样才是一个合适的方法 解决方案 可以试试线程池,或者做一个自己控制的线程队列 解决方案二: 线程池,或者就用AsyncTask,里面用的就是线程池.

ttp onnection- 多线程断点下载报异常Unexpected and of file from

问题描述 多线程断点下载报异常Unexpected and of file from 这个是我的读取文件的代码 URL url=new URL(webAddr); //根据网络资源创建URL对象 httpConnection=(HttpURLConnection)url.openConnection(); //创建 打开的连接对象 httpConnection.setRequestProperty("User-Agent", "NetFox"); String sp

使用NSURLConnection实现大文件断点下载

使用NSURLConnection实现大文件断点下载 由于是实现大文件的断点下载,不是下载一般图片什么的.在设计这个类的时候本身就不会考虑把下载的文件缓存到内存中,而是直接写到文件系统. 要实现断点下载,需要满足1个条件,那就是,必须要服务器支持断点下载.   实现的思路是这样子的: 1.  第一次会获取到被下载文件的总大小(服务器提供这个值) 下载文件总大小 = 期望从服务器获取文件的大小 + 本地已经下载的文件的大小 2.  设置请求的缓存策略为不会读取本地中已经缓存的数据(NSURLReq

如何通过云存储实现大文件的断点下载和上传

背景 对象存储 OSS是面向海量非结构化数据对象的存储服务.随着云计算的普及和飞速增长,越来越多的开发者把他们的应用建筑在了 OSS之上.OSS对外提供的是RESTful形式的接口,其最重要的特点之一是无状态性(statelessness),即OSS服务器不会保持除了单次请求之外的,任何与其通信的客户端的通信状态.因此对于断点续传这样有状态功能的实现,关键点在于如何在客户端完成状态维护 . 本文将以Python为例,介绍通过OSS是实现大文件的断点下载和断点上传的. 具体操作步骤 (一)在OSS

java-多线程加上断点下载多个文件文件出现问题了

问题描述 多线程加上断点下载多个文件文件出现问题了 package cn.com.sinosoft.sfjy.util; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io.RandomAccessFile; import jav