CentOS 5/6下安裝Axel插件加速yum下載
- 2019 年 10 月 29 日
- 筆記
axel插件是基於yum下的一個多執行緒下載插件,通過打開多個HTTP/FTP連接來將一個文件進行分段下載,從而達到加速下載的目的。對於下載大文件,該工具特別有用。可用於CentOS、RHEL、Fedora等使用yum的Linux發行版。暫時找不到rpm包,只能編譯安裝。使用Axel可以在低速網路環境里提高數倍的下載速度。

axel 是Linux 命令行下多執行緒的下載工具,支援斷點續傳,速度通常情況下是Wget的幾倍
官方主頁:http://axel.alioth.debian.org/
×××:
1 |
# curl -O https://alioth.debian.org/frs/download.php/3015/axel-2.4.tar.gz |
---|
編譯安裝:
123456 |
# tar -xvf axel-2.4.tar.gz && cd axel-2.4# ./configure –prefix=/usr/local/axel# make && make install 導出axel執行路徑# echo 'PATH=/usr/local/axel/bin:$PATH' > /etc/profile.d/axel.sh && source /etc/profile |
---|
添加axel man手冊查找路徑
12 |
# vim /etc/man.config MANPATH /usr/local/axel/share/man |
---|
常用選項:
1234 |
-n : 指定執行緒數-o : 指定另存為目錄-s : 指定每秒的最大比特數-q : 靜默模式 |
---|
Axel插件加速yum下載:
12345 |
# wget https://github.com/crook/yum-axelget/archive/v1.0.5.tar.gz # tar -xvf v1.0.5 # cd yum-axelget-1.0.5/# cp axelget.conf /etc/yum/pluginconf.d/# cp axelget.py /usr/lib/yum-plugins/ |
---|
補充:
下載配置文件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,cleanOnException,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,Skip plugin!" % (po.repo.id,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 axel yum install yum-presto yum install yum-fastestmirror yum install yum-metadata-parser yum install yum-downloadonly yum install yum-priorities
原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者資訊和本聲明。否則將追究法律責任。http://werewolftj.blog.51cto.com/1606482/1415174。原作者:ilove_vc