连上互联网后,我们几乎无时无刻不在做下载的工作。看新闻,看电影,玩网络游戏,更新软件等等...
下载其本质就是把文件从远程的服务器搬到本地。目前主流三种下载:HTTP/HTTPS下载,FTP下载以及P2P(Peer to Peer对等网络)/P2SP(Peer to Server and to Peer,整合了P2S与P2P技术)下载。
web浏览器自带的下载多为HTTP/HTTPS下载,FTP下载站点则会提供FTP下载,而专业的下载工具(如:迅雷、QQ旋风、电驴)为P2P/P2SP下载。
前两种方式严格划分Server与Client,Client只能从Server下载数据,一旦Server出问题,下载就不通了。
P2P方式则将进入下载网络的机器既视为Client,也视为Server,你在使用P2P下载资源的同时,也在为其他人提供该资源的下载服务。
不同的P2P下载工具支持的具体通讯协议有差异,比较有名的协议有:BitTorrent
linux下命令行下载工具,采用HTTP/HTTPS/FTP方式下载,支持断点续传;当前也有windows下的wget版本;以及带图形界面的gwget版本。wiki 【en chs】
例:wget -r -np -nd http://files.cnblogs.com/kekec // 下载kekec目录中的所有文件。其中,-np 的作用是不遍历父目录,-nd 表示不在本机重新创建目录结构
例:wget -r -np -nd --accept=rar http://files.cnblogs.com/kekec // 下载kekec目录中所有rar文件。也可以指定多个扩展名(用逗号分隔)
例:wget -i downTask.txt // 批量下载downTask.txt中的所有目标文件
例:wget -c http://files.cnblogs.com/kekec/renamex.rar // -c 选项的作用为断点续传
例:wget -m -k http://www.cnblogs.com/kekec
例:wget -m -H http://www.cnblogs.com/kekec // 镜像整个网站,wget将对链接进行转换。如果网站中的图像是放在另外的站点,可使用 -H 选项
例:wget.exe -P "F:\wget\test" -c http://files.cnblogs.com/kekec/renamex.rar // 下载renamex.rar到F:\wget\test目录中
例:wget.exe -O "F:\wget\test\renamex.rar.wget" -c http://files.cnblogs.com/kekec/renamex.rar // 下载renamex.rar到F:\wget\test目录中,并重命名为renamex.rar.wget
----------------------------
-r 递归下载整个网址内容
-l 2 递归下载2层级内的子目录内容
-nc 不要覆盖已经存在的文件
-N 只下载比本地新的文件
--limit-rate=300k 限制速度为300k
--reject=gif 排除gif文件
wget只能处理利用用户名/密码方式限制访问的网站,可以利用两个参数:
--http-user=用户
--http-passwd=密码
对于需要证书做认证的网站,就只能利用其他下载工具了,例如curl。
如果用户的网络需要经过代理服务器,那么可以让wget通过代理服务器进行文件的下载。
此时需要在当前用户的目录下创建一个.wgetrc文件。文件中可以设置代理服务器(http的代理服务器和ftp的代理服务器):
http-proxy = 192.168.2.15:8080
ftp-proxy = 192.168.2.15:8080
如果代理服务器需要密码则使用:
--proxy-user=用户
--proxy-passwd=密码
--proxy=on/off 开启或关闭代理。
----------------------------
linux下命令行文件传输工具(上传与下载),支持HTTP/HTTPS/FTP等协议,支持断点续传与分段下载。wiki 【en chs】
例:curl -o mypage.html www.cnblogs.com // 下载博客园的主页,并保存为mypage.html
例:curl -x 60.28.206.85:8088 -o mypage.html www.cnblogs.com // 设置代理ip与端口号进行下载
例:curl -O http://files.cnblogs.com/kekec/time.swf // 下载time.swf文件
例:curl -O -C - http://files.cnblogs.com/kekec/time.swf // 自动断点续传下载time.swf文件
注:断点续传的参数是-C, 要自动续传的话要使用"-C -", 否则需要手工指定断点的字节位置
例:curl -O -C - ftp://user:[email protected]:21/swf/time.swf // ftp方式下载time.swf文件(自动断点续传)
例:curl -T -C - time.swf ftp://user:[email protected]:21/swf/ // ftp方式上传time.swf文件(自动断点续传)
例:curl "http://www.baidu.com/s?wd=curl" // get方式提交数据
例:curl -d "birthyear=1995&press=OK" www.hotmail.com/when/junk.cgi // post方式提交数据
更多请参考:linux curl 命令详解,以及实例 curl命令
linux下命令行下运行、多协议、多来源下载工具(HTTP/HTTPS、FTP、BitTorrent、Metalink);windows下的aria2c
例:aria2c http://example.org/mylinux.iso // 直接下载
例:aria2c -c http://example.org/mylinux.iso // 直接下载(断点续传)
例:aria2c -s 10 http://example.org/mylinux.iso // 10 个线程下载
例:aria2c http://a/f.iso ftp://b/f.iso // 从多个地址下载
例:aria2c --check-certificate=false https://example.org/mylinux.iso // 下载https协议的文件
例:aria2c --http-proxy=127.0.0.1:8123 http://test.com/test.zip // 通过http代理下载文件
例:aria2c -i uri.txt // 下载uri.txt文件中的链接内容
更多请参考:Aria2c 使用举例 aria2常用命令
linux下命令行多线程HTTP/FTP下载工具,自动断点续传。windows下的axel
例:axel -s 1024 http://files.cnblogs.com/kekec/time.swf // 以1KB的最高速度下载
例:axel -n 10 http://files.cnblogs.com/kekec/time.swf // 开10个连接数进行下载
例:axel -o /home/me.swf http://files.cnblogs.com/kekec/time.swf // 指定文件的本地保存路径
例:axel -q http://files.cnblogs.com/kekec/time.swf // 安静模式,不输出信息
eDonkey2000 emule easyMule (电驴)
windows下能与迅雷、旋风等专业下载工具相媲美的软件,源代码开放。wiki【chs1 chs2】
站点:VeryCD电驴下载大全