| 
                         原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。http://www.jb51.cc/article/p-ghhjxsll-bcx.html。原作者:ilove_vc  
   
axel插件是基于yum下的一个多线程下载插件,通过打开多个HTTP/FTP连接来将一个文件进行分段下载,从而达到加速下载的目的。对于下载大文件,该工具特别有用。可用于CentOS、RHEL、Fedora等使用yum的Linux发行版。暂时找不到rpm包,只能编译安装。使用Axel可以在低速网络环境里提高数倍的下载速度。  
   
   
axel 是Linux 命令行下多线程的下载工具,支持断点续传,速度通常情况下是Wget的几倍  
官方主页:http://axel.alioth.debian.org/  
   
源码下载:  
 
编译安装:  
 
 
   
添加axel man手册查找路径  
 
   
   
常用选项:  
 
 
Axel插件加速yum下载: 
 
   
补充:  
下载配置文件axelget.conf与axelget.py到yum里:  
cd /etc/yum/pluginconf.d/ wget http://cnfreesoft.googlecode.com/svn/trunk/axelget/axelget.conf  
也可以自己编辑,全文如下:  
[main] enabled=1 onlyhttp=1 enablesize=54000 cleanOnException=1  
cd /usr/lib/yum-plugins/ wget http://cnfreesoft.googlecode.com/svn/trunk/axelget/axelget.py  
from yum.plugins import PluginYumExit,TYPE_CORE,TYPE_INTERACTIVE from urlparse import urljoin import os,time  
requires_api_version = '2.3' plugin_type = (TYPE_CORE,TYPE_INTERACTIVE)  
enablesize=300000 trymirrornum=-1 maxconn=10 httpdownloadonly=False cleanOnException=0  
def init_hook(conduit): global enablesize,trymirrornum,maxconn,cleanOnException,httpdownloadonly enablesize = conduit.confInt('main','enablesize',default=30000) trymirrornum = conduit.confInt('main','trymirrornum',default=-1) maxconn = conduit.confInt('main','maxconn',default=10) httpdownloadonly=conduit.confBool('main','onlyhttp',default=False) cleanOnException=conduit.confInt('main','cleanOnException',default=0) return  
def predownload_hook(conduit): global enablesize,httpdownloadonly preffermirror="" PkgIdx=0 TotalPkg=len(conduit.getDownloadPackages()) for po in (conduit.getDownloadPackages()):  PkgIdx+=1  if hasattr(po,'pkgtype') and po.pkgtype == 'local':  continue  totsize = long(po.size)  ret = False  if totsize <= enablesize:  conduit.info(2,"Package %s download size %d less than %d,Skip plugin!" % (po.repo.id,totsize,enablesize))  continue  else:  conduit.info(2,"[%d/%d]Ok,we will try to use axel to download this big file:%d" % (PkgIdx,TotalPkg,totsize))  local = po.localPkg()  if os.path.exists(local):  if not os.path.exists(local+".st"):   fstate=os.stat(local)   if totsize == fstate.st_size:   conduit.info(2,"Target already exists,skip to next file!")   continue  localall = "%s %s" % (local,local+".st")  rmcmd = "rm -f %s" % (localall)  curmirroridx = 0  conduit.info(2,"Before we start,clean all the key files")  os.system(rmcmd)  connnum = totsize / enablesize  if connnum*enablesize<totsize:  connnum+=1  if connnum > maxconn:  connnum = maxconn  mirrors=[]  mirrors[:0]=po.repo.urls  if preffermirror != "":  mirrors[:0] = [preffermirror]  for url in mirrors:  if url.startswith("ftp://") and httpdownloadonly:   print "Skip Ftp Site:",url   continue  if url.startswith("file://"):   print "Skip Local Site:",url   continue  curmirroridx += 1  if (curmirroridx > trymirrornum) and (trymirrornum != -1):   conduit.info(2,"Package %s has tried %d mirrors,trymirrornum))   break  remoteurl = "%s/%s" % (url,po.remote_path)  syscmd = "axel -a -n %s %s -o %s" % (connnum,remoteurl,local)  conduit.info(2,"Execute axel cmd:n%s" % syscmd)  os.system(syscmd)  time.sleep(2)  if os.path.exists(local+".st"):   conduit.info(2,"axel exit by exception,let's try another mirror")   if cleanOnException:   conduit.info(2,"because cleanOnException is set to 1,we do remove key file first")   os.system(rmcmd)   continue  elif not os.path.exists(local):#this mirror may not update yet   continue  else:   ret = True   preffermirror=url   break  if not ret:  conduit.info (2,"try to run rm cmd:%s" % rmcmd)  os.system(rmcmd)  
最后确认 /etc/yum.conf中plugins=1  
4 测试并安装yum-fastestmirror插件 yum install -y yum-fastestmirror 注:axel插件也可以当独立下载工具来使用。当成独立下载工具使用时,适用于绝大部分Linux发行版。 使用参数如下: 一般使用:axel url(下载文件地址); 限速使用:加上 -s 参数,如 -s 10240,即每秒下载的字节数,这里是 10 Kb; 限制连接数:加上 -n 参数,如 -n 5,即打开 5 个连接。  
yum install axelyum install yum-prestoyum install yum-fastestmirroryum install yum-metadata-parseryum install yum-downloadonlyyum install yum-priorities                         (编辑:莱芜站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |