0%

linux多线程下载

linux多线程下载

一般情况,在 Linux 下我们习惯于用 wget 下载,但该工具的缺点就是无法进行多线程下载,所以往往有时候速度不够快。
这里介绍的 Axel,是 Linux 下一款不错的 HTTP 或 FTP 高速下载工具。支持多线程下载、断点续传,且可以从多个地址或者从一个地址的多个连接来下载同一个文件,适合网速不给力时多线程下载以提高下载速度。需要注意的是,该软件只有命令行界面。

QQ群:397745473

axel

CentOS 7安装Axel

目前yum官方源上没有Axel,我们无法通过yum直接进行安装,但是我们可以通过安装epel第三方源然后后yum安装axel下载工具

1
yum install axel

CentOS 6安装Axel:

32位CentOS 6执行下面命令:

1
2
wget -c http://mirrors.sohu.com/dag/redhat/el6/en/i386/rpmforge/RPMS/axel-2.4-1.el6.rf.i686.rpm
rpm -ivh axel-2.4-1.el6.rf.i686.rpm

64位CentOS 6执行下面命令:

1
2
wget -c http://mirrors.sohu.com/dag/redhat/el6/en/x86_64/rpmforge/RPMS/axel-2.4-1.el6.rf.x86_64.rpm
rpm -ivh axel-2.4-1.el6.rf.x86_64.rpm

Debian/Ubuntu安装Axel:

1
apt-get install axel

Axel命令使用方法:

1
2
3
4
5
6
7
8
9
axel 参数 文件下载地址
比较常用可选参数:
-s 设置最大下载速度,如果限制到512KB/s,则填写512000
-n 指定连接数
-o 指定另存为目录,或者指定的目录+文件名
-H 指定header
-U 指定useragent
-q 静默模式
-a 更改默认进度条样式
1
2
3
4
5
6
7

axel [OPTIONS] url1 [url2] [url…]
-n x 指定线程数(x 必须为大于 0 的数字)
-o x 指定另存为目录(x 必须为本地目录)
-s x 指定下载速度(x 必须为大于 0 的数字,单位是 bytes/s)
-q 静默模式,无任何输出信息
-V 软件版本

Axel 在下载过程中如果遇到中断的话,在原来的目录再次执行相同的下载命令即可恢复下载进度。

这里列出我最喜欢使用的一个命令,具有很强的实用性

1
Axel -n 线程个数 -a -v -U 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1 Safari/605.1.15' -o '目录/目标文件名' 目标URL

两个细节

  1. 用户代理问题

    有些网站需要模拟请求头的 User-agent 从而能够解析 URL。

那么请求头又从哪里获得呢?这可难不住我们,模拟一个 User-Agent 请求头就可以解决了。User-Agent 可以直接复制浏览器 -> 开发者模式(F12或者 cmd + option + i) -> 网络-> 请求头 -> User-Agent 比如我的就是 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1 Safari/605.1.15。

​ 2.目录问题

  指定的目录需要是已存在的目录,命令行的程序通常都并不会新建目录。

多线程下载一篇论文并保证在后台进行,即使退出该终端也没有关系

1
nohup Axel -n 10 -U 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1 Safari/605.1.15' -o 'paper.pdf' http://www.aclweb.org/anthology/W03-0429 >OutFile.out 2>&1 &

解决Too many redirects问题

使用 axel 报 Too many redirects 错误?

Too many redirects-重定向过多
原因是你的 axel 版本太低了!(包括yum install axel的安装)
所以你就看我咋安装就 ok 了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#下载源码包
wget -O axel-2.16.1.tar.gz https://file.idait.cn/axel-2.16.1.tar.gz
#解压
tar xzvf axel-2.16.1.tar.gz
#进入目录
cd axel-2.16.1/
#检查编译
./configure --prefix=/usr/local/axel
make && make install
#报错请安装 gcc 工具 不报错请忽略
yum groupinstall "Development tools"
#axel 执行路径
echo 'PATH=/usr/local/axel/bin:$PATH' > /etc/profile.d/axel.sh
#使文件生效
. /etc/profile

解决卡住在初始化时不动问题

如果yum install axel无法正常运行,可以尝试以下手动方法安装:

1
2
3
4
5
6
7
8
9
wget 'http://www.ha97.com/code/axel-2.4.tar.gz'
tar -xf axel-2.4.tar.gz
cd axel-2.4
yum -y install gcc
./configure
make && make install

默认安装路径是/usr/local/bin/axel,再加一个下述链接即可:
ln -s /usr/local/bin/axel /usr/bin/axel

QQ群:397745473

欢迎关注我的其它发布渠道