|
Axel plug-in is based on a multi-threaded download the plug under the yum, by opening multiple HTTP / FTP connection to download a file segment, so as to achieve the purpose of accelerating download. For downloading large files, this tool is especially useful. Available for CentOS, RHEL, Fedora and other Linux distributions use yum. I could not find the rpm package, only compiler installation. Use Axel can increase download speeds several times in slow network environment.
1 Download axel widget rpm package
Download http://pkgs.repoforge.org/axel/
If you then use http://pkgs.repoforge.org/axel/axel-2.4-1.el5.rf.x86_64.rpm to centos 5 64-bit systems
If http://pkgs.repoforge.org/axel/axel-2.4-1.el6.rf.x86_64.rpm is centos 6 64-bit systems
2 Install the rpm package rpm -ivh http://pkgs.repoforge.org/axel/axel-2.4-1.el6.rf.x86_64.rpm
You can directly run the installation command
yum install axel
3 and download the configuration file axelget.conf axelget.py to yum in:
cd /etc/yum/pluginconf.d/
wget http://cnfreesoft.googlecode.com/svn/trunk/axelget/axelget.conf
You can also edit their own, reads as follows:
[Main]
enabled = 1
onlyhttp = 1
enablesize = 54000
cleanOnException = 1
cd / usr / lib / yum-plugins /
wget http://cnfreesoft.googlecode.com/svn/trunk/axelget/axelget.py
You can also edit their own, reads as follows:
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
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)
Final confirmation /etc/yum.conf in plugins = 1
4 Test and install yum-fastestmirror widget
yum install -y yum-fastestmirror
NOTE: axel widget can also function as an independent download tool. Download as a standalone tool when applied to most Linux distributions.
Use the following parameters:
General Use: axel url (Download file address);
Limit use: add -s parameter, such as -s 10240, that is the number of bytes per second download, here are 10 Kb;
Limit the number of connections: add -n parameters, such as -n 5, it opens 5 connections.
yum install axel
yum install yum-presto
yum install yum-fastestmirror
yum install yum-metadata-parser
yum install yum-downloadonly
yum install yum-priorities |
|
|
|