Linux下Wget的用法

Wget可以下载http和ftp网站文件,小命令但功能强,它的参数很多,但常用的不多。
一. 下载整个网站:

wget mirror [ convert-links] http://www.xiaokyun.com/

或短写参数:

wget -m [-k] http://www.xiaokyun.com

mirror或-m:镜像整个网站,它与“-r -l inf -N”这三个参数一起用效果相同
recursive或-r:以递归方式抓取
level=depth或-l depth:递归的深度,缺省最大值为5,0或inf表示无限多
timestamping或-N:时间戳,不知道有什么用
convert-links或-k:在全部下载完成之后,修改已下载页面中的链接,如果链接所指向的文件也下在本地了,就指向这个文件,否则,就指向http上原来的文件
二. 其它有用的参数:
tries=number 或 -t number:指定连接失败时重试次数,0或inf表示无限重试,缺省值为20。但如果遇到“连接被拒绝”或“文件没找到(404)”之类的错误,则不重试
output-document=file或-O file:指定输出文件名。比如:wget http://www.xiaokyun.com/index.html -O abc.htm 将以abc.htm保存文件
no-clobber或-nc:通常在遇到下下来的文件重名,wget将为后下的文件加上‘.1’,‘.2’等加以区分。如果用了这个参数,则一旦后下的文件将与先下的同名,将不再下载后下的文件而保留先下的不变
no-directories或-nd:保存文件时,即使原来不在一起的文件,也不创建文件夹,所有文件全放在当前目录下
page-requisites或-p:下载html文件时,把与它有关的图片,声音,脚本等相关文件一同下下来
* 所有参数都可以根据需要灵活搭配,不是固定的
三. 例子:
1,最简单的用法:

wget http://www.xiaokyun.com/sample.tar.gz

2,指定输出文件名:

wget http://www.xiaokyun.com -O xiaokyun.htm

3,下载html版的‘linux设备驱动’整站:

wget mirror http://www.deansys.com/doc/ldd3/index.html
OR
wget -mk -w 20 http://www.xiaokyun.com/

-w 20代表间隔20秒下载一个文件,这样可以避免网站的访问过于频繁。-m 是镜像
同时也可以使用其他的一些参数:-c 是继续传送 , -p 是下载媒体文件,比如图片, -q 是安静模式, -b 是后台运行
4,批量下载filename.txt 中所有链接

wget -i filename.txt

使用curl / wget命令上传下载FTP

curl可以在shell下轻松上传下载ftp上的文件,相比ftp命令更具有优势,因为它能在单命令条件下,下载或者上传一个ftp文件,甚至可以删除文件。

下面看实例:

1、列出ftp服务器上的目录列表:

curl ftp://www.xiaokyun.com/ --user name:passwd
curl ftp://www.xiaokyun.com/ –u name:passwd #简洁写法
curl ftp://name:passwd@www.xiaokyun.com #简洁写法2

2、只列出目录,不显示进度条

curl ftp://www.xiaokyun.com –u name:passwd -s

3、下载一个文件:

curl ftp://www.xiaokyun.com/size.zip –u name:passwd -o size.zip

4、上载一个文件:

curl –u name:passwd -T size.mp3 ftp://www.xiaokyun.com/mp3/

5、从服务器上删除文件(使用curl传递ftp协议的DELE命令):

curl –u name:passwd ftp://www.xiaokyun.com/ -X 'DELE mp3/size.mp3'

6、另外curl不支持递归下载,不过可以用数组方式下载文件,比如我们要下载1-10.gif连续命名的文件:

curl –u name:passwd ftp://www.xiaokyun.com/img/[1-10].gif –O #O字母大写

7、要连续下载多个文件:

curl –u name:passwd ftp://www.xiaokyun.com/img/[one,two,three].jpg –O #O字母大写

8、wget下载文件:

用户账户:xiaokyun
用户密码:123456
ftp下载

wget ftp://xiaokyun:123456@www.xiaokyun.com/xxx.zip

http下载

wget --http-user=xiaokyun --http-passwd=123456 http://www.xiaokyun.com/xxx.zip

9、wget参数:

wget的参数较多,但大部分应用只需要如下几个常用的参数:
-r 递归;对于HTTP主机,wget首先下载URL指定的文件,然后(如果该文件是一个HTML文档的话)递归下载该文件所引用(超级连接)的所有文件(递归深度由参数-l指定)。对FTP主机,该参数意味着要下载URL指定的目录中的所有文件,递归方法与HTTP主机类似。
-N 时间戳:该参数指定wget只下载更新的文件,也就是说,与本地目录中的对应文件的长度和最后修改日期一样的文件将不被下载。
-m 镜像:相当于同时使用-r和-N参数。
-l 设置递归级数;默认为5。-l1相当于不递归;-l0为无穷递归;注意,当递归深度增加时,文件数量将呈指数级增长。
-t 设置重试次数。当连接中断(或超时)时,wget将试图重新连接。如果指定-t0,则重试次数设为无穷多。
-c 指定断点续传功能。实际上,wget默认具有断点续传功能,只有当你使用别的ftp工具下载了某一文件的一部分,并希望wget接着完成此工作的时候,才需要指定此参数。

使用举例:

wget -m -l4 -t0 http://www.xiaokyun.com/

将在本地硬盘建立http://www.xiaokyun.com/的镜像,镜像文件存入当前目录下一个名为www.xiaokyun.com的子目录中(你也可以使用-nH参数指定不建立该子目录,而直接在当前目录下建立镜像的目录结构),递归深度为4,重试次数为无穷(若连接出现问题,wget将坚韧不拔地永远重试下去,知道任务完成!)

另外一些使用频率稍低的参数如下:
-A acclist / -R rejlist:
这两个参数用于指定wget接受或排除的文件扩展名,多个名称之间用逗号隔开。例如,假设我们不想下载MPEG视频影像文件和.AU声音文件,可使用如下参数:
-R mpg,mpeg,au

其它参数还有:
-L 只扩展相对连接,该参数对于抓取指定站点很有用,可以避免向宿主主机的其他目录扩散。例如,某个人网站地址为:http://www.xiaokyun.com/~ppfl/,使用如下命令行:

wget -L http://www.xiaokyun.com/~ppfl/

则只提取该个人网站,而不涉及主机www.xiaokyun.com上的其他目录。

-k 转换连接:HTML文件存盘时,将其中的非相对连接转换成为相对连接。
-X 在下载FTP主机上的文件时,排除若干指定的目录

另外,下面参数用于设置wget的工作界面:
-v 设置wget输出详细的工作信息。
-q 设置wget不输出任何信息。

原文:http://hi.baidu.com/leejun_2005/blog/item/873f9aedfe83943b63d09feb.html

参考: http://bolg.malu.me/html/2011/1239.html
http://fanqiang.chinaunix.net/a6/b9/20020514/060201225.html