什么是 Axel:
Axel 是一个轻量级的命令行下载加速器,支持多线程并发下载。通过将文件分成多个部分并同时下载,可以充分利用带宽,显著提高下载速度,特别是在下载大文件或网络延迟较高的情况下效果明显。
Axel 的主要优势:
- 多线程并发下载,充分利用带宽
- 支持断点续传
- 命令行界面,适合服务器环境
- 轻量级,资源占用少
- 支持 HTTP、HTTPS 和 FTP 协议
- 可以搜索和使用镜像服务器
应用场景:
- 下载大文件(如 ISO 镜像、数据库备份)
- 网络带宽充足但速度不理想
- 需要命令行批量下载
- 自动化下载脚本
无论您使用的是香港独立服务器、新加坡VPS还是其他地区的服务器,Axel 都能帮助您更快地下载文件。
系统要求:
适用系统版本:
- CentOS 6/7/8
- RHEL 6/7/8
- Rocky Linux 8/9
- AlmaLinux 8/9
- Debian 8/9/10/11
- Ubuntu 16.04/18.04/20.04/22.04
依赖要求:
- GCC 编译器(如果从源码编译)
- OpenSSL 开发库(支持 HTTPS)
安装 Axel
方法一:使用 RPMforge/EPEL 源安装(CentOS/RHEL)
由于官方的 RPMforge 源已经停止维护,现在推荐使用 EPEL 源或从其他可用源安装。
第一步:安装 EPEL 源(推荐)
CentOS 6:
yum install epel-release -y
或手动安装:
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
CentOS 7:
yum install epel-release -y
或手动安装:
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
CentOS 8 / Rocky Linux 8 / AlmaLinux 8:
dnf install epel-release -y
或
yum install epel-release -y
验证 EPEL 源安装:
yum repolist | grep epel
或
dnf repolist | grep epel
应该能看到 epel 相关的仓库信息。
第二步:从 EPEL 安装 Axel
yum install axel -y
或在 CentOS 8 上:
dnf install axel -y
验证安装:
which axel
输出应该显示:
/usr/bin/axel
检查版本:
axel --version
输出示例:
Axel version 2.17.11 (linux-gnu)
方法二:使用旧的 RPMforge 源(备用方法,适用于 CentOS 6)
如果 EPEL 源中没有 Axel,可以尝试使用旧的 RPMforge 源。但请注意,RPMforge 已经停止维护,链接可能失效。
对于 CentOS 6 (32位):
下载 rpmforge-release 包:
安装:
rpm -Uvh rpmforge-release-0.5.3-1.el6.rf.i686.rpm
对于 CentOS 6 (64位):
wget http://ftp.tu-chemnitz.de/pub/linux/dag/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm rpm -Uvh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
然后安装 Axel:
yum install axel -y
注意: 如果上述链接失效,可以搜索其他可用的 rpmforge 镜像站点。
方法三:从源码编译安装(适用于所有系统)
如果软件源中没有 Axel,可以从源码编译安装。这个方法适用于所有 Linux 发行版,包括在日本独立服务器或韩国VPS上运行的系统。
安装编译依赖:
CentOS/RHEL:
yum install gcc make openssl-devel -y
Ubuntu/Debian:
apt-get install gcc make libssl-dev -y
下载 Axel 源码:
访问 Axel 官方 GitHub 仓库: https://github.com/axel-download-accelerator/axel
下载最新版本:
cd /usr/local/src wget https://github.com/axel-download-accelerator/axel/releases/download/v2.17.11/axel-2.17.11.tar.gz
解压并编译:
tar -zxvf axel-2.17.11.tar.gz cd axel-2.17.11
配置编译选项:
./configure --prefix=/usr/local
编译:
make
安装:
make install
验证安装:
/usr/local/bin/axel --version
添加到系统路径(可选):
如果安装到 /usr/local,需要确保路径在 PATH 中:
echo 'export PATH=$PATH:/usr/local/bin' >> ~/.bashrc source ~/.bashrc
方法四:Ubuntu/Debian 系统安装
Ubuntu/Debian 可以直接从官方源安装:
更新软件包列表:
apt-get update
安装 Axel:
apt-get install axel -y
验证安装:
axel --version
Axel 基本用法
查看帮助信息:
axel --help
或
axel -h
输出会显示所有可用选项和用法说明。
基本命令格式:
axel [选项] [下载地址]
简单下载示例:
axel http://example.com/file.iso
这会使用默认设置(4 个线程)下载文件。
Axel 常用选项详解
1. 指定线程数(-n)
使用多个线程并发下载,这是 Axel 最重要的功能。
axel -n 10 http://example.com/largefile.zip
参数说明:
- -n [数字] - 指定同时打开的连接数(线程数)
- 默认值:4
- 推荐值:5-20(取决于带宽和服务器支持)
- 过多线程可能被服务器限制或封禁
最佳实践:
- 家庭宽带:5-10 个线程
- 企业网络:10-20 个线程
- 服务器下载:根据带宽调整
2. 限制下载速度(-s)
限制最大下载速度,避免占满带宽。
axel -s 102400 http://example.com/file.zip
参数说明:
- -s [数字] - 指定每秒下载最大字节数
- 单位:字节/秒(Bytes/s)
- 102400 = 100KB/s
- 1048576 = 1MB/s
常用限速示例:
限制为 500KB/s:
axel -s 512000 http://example.com/file.zip
限制为 2MB/s:
axel -s 2097152 http://example.com/file.zip
3. 指定输出文件名(-o)
自定义下载文件的保存名称。
axel -o myfile.zip http://example.com/file.zip
参数说明:
- -o [文件名] - 指定本地输出文件名
- 可以包含路径
指定完整路径:
axel -o /var/www/downloads/myfile.zip http://example.com/file.zip
4. 显示详细信息(-v 和 -a)
-v(详细模式):
打印更多状态和调试信息。
axel -v http://example.com/file.zip
-a(进度条模式):
显示更友好的进度条和信息。
axel -a http://example.com/file.zip
组合使用:
axel -n 10 -a http://example.com/file.zip
输出示例:
Initializing download: http://example.com/file.zip File size: 524288000 bytes Opening output file myfile.zip Starting download
[ 0%] .......... .......... .......... .......... [ 1.5MB/s] [ETA: 5:32]
5. 搜索镜像服务器(-S)
从多个镜像服务器同时下载,进一步提高速度。
axel -S 5 http://example.com/file.iso
参数说明:
- -S [数字] - 搜索镜像并从 X 个服务器下载
- Axel 会尝试查找该文件的镜像站点
注意: 这个功能依赖于文件在多个镜像站点的可用性,不是所有文件都支持。
6. 不使用代理(-N)
如果系统配置了代理但希望直接连接。
axel -N http://example.com/file.zip
7. 断点续传
Axel 默认支持断点续传。如果下载中断,重新执行相同命令即可继续下载:
axel -n 10 http://example.com/file.zip
Axel 会检测到未完成的下载并自动续传。
手动删除临时文件重新下载:
rm -f file.zip.st* axel -n 10 http://example.com/file.zip
8. 查看版本信息(-V)
axel -V
或
axel --version
实用下载示例
示例 1:基础多线程下载
使用 10 个线程下载文件:
axel -n 10 http://mirrors.kernel.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso
示例 2:限速下载
使用 10 个线程,限速 1MB/s:
axel -n 10 -s 1048576 http://example.com/largefile.zip
示例 3:指定保存位置和文件名
axel -n 10 -o /var/www/downloads/centos7.iso http://mirrors.kernel.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso
示例 4:显示详细进度信息
axel -n 10 -a http://example.com/file.zip
示例 5:下载并重命名
axel -n 8 -o ubuntu-22.04.iso https://releases.ubuntu.com/22.04/ubuntu-22.04.1-desktop-amd64.iso
示例 6:组合多个选项
使用 15 个线程,限速 2MB/s,显示进度,保存为自定义文件名:
axel -n 15 -s 2097152 -a -o mydownload.zip http://example.com/file.zip
示例 7:从多个镜像下载
axel -n 10 -S 3 http://mirror.example.com/linux.iso
示例 8:后台下载(配合 nohup)
nohup axel -n 10 http://example.com/hugefile.zip > axel.log 2>&1 &
查看下载进度:
tail -f axel.log
示例 9:批量下载脚本
创建下载列表文件 urls.txt:
http://example.com/file1.zip http://example.com/file2.zip http://example.com/file3.zip
批量下载脚本:
#!/bin/bash while read url; do axel -n 10 -a "$url" done < urls.txt
保存为 download.sh,添加执行权限:
chmod +x download.sh ./download.sh
性能优化建议
1. 选择合适的线程数
测试不同线程数的效果:
for i in 5 10 15 20; do echo "Testing with $i threads" time axel -n $i http://example.com/testfile.zip rm -f testfile.zip* done
选择速度最快的线程数。
2. 考虑服务器限制
有些服务器会限制单个 IP 的并发连接数:
- 如果线程过多可能被限速或封禁
- 从同一服务器下载多个文件时,总线程数不要过多
- 尊重服务器的 robots.txt 和使用条款
3. 带宽利用率
计算理论最大速度:
假设带宽为 100Mbps:
设置限速略低于最大速度:
axel -n 10 -s 12000000 http://example.com/file.zip
4. 使用镜像站点
对于开源软件,选择地理位置近的镜像站点。例如,在台湾独立服务器上下载 CentOS,选择台湾或日本的镜像会更快。
5. 网络质量优化
- 避开网络高峰期下载
- 使用有线连接而非 Wi-Fi
- 检查网络延迟:ping 服务器
与其他下载工具对比
Axel vs wget:
| 特性 | Axel | wget |
|---|---|---|
| 多线程 | 支持 | 不支持 |
| 断点续传 | 支持 | 支持 |
| 递归下载 | 不支持 | 支持 |
| 镜像下载 | 支持 | 不支持 |
| 速度 | 更快 | 较慢 |
| 功能丰富度 | 一般 | 丰富 |
Axel vs curl:
| 特性 | Axel | curl |
|---|---|---|
| 多线程 | 支持 | 不支持 |
| 协议支持 | HTTP/FTP | 多种协议 |
| API 测试 | 不适合 | 适合 |
| 批量下载 | 适合 | 适合 |
Axel vs aria2:
| 特性 | Axel | aria2 |
|---|---|---|
| 多线程 | 支持 | 支持 |
| BitTorrent | 不支持 | 支持 |
| 功能 | 简单 | 强大 |
| 配置 | 简单 | 复杂 |
| 资源占用 | 少 | 较多 |
选择建议:
- 简单的多线程 HTTP 下载 - Axel
- 需要 BitTorrent 或 Metalink - aria2
- 递归下载网站 - wget
- API 测试和开发 - curl
常见问题排查
问题 1:提示"command not found"
- 原因: Axel 未安装或不在 PATH 中
- 解决: 重新安装 Axel,检查安装路径
问题 2:下载速度没有提升
- 原因: 服务器限制并发连接或带宽瓶颈在其他地方
- 解决: 减少线程数,检查本地网络,尝试其他服务器
问题 3:下载中断无法续传
- 原因: 服务器不支持 Range 请求
- 解决: 使用单线程下载或更换服务器
问题 4:提示"Connection failed"
- 原因: 网络问题、防火墙阻止或服务器不可达
- 解决: 检查网络连接,测试 URL 是否有效
问题 5:下载的文件损坏
- 原因: 下载过程中出现错误
- 解决: 删除临时文件重新下载,验证文件 MD5/SHA256
问题 6:被服务器封禁
- 原因: 请求过于频繁或线程过多
- 解决: 减少线程数,增加请求间隔,使用代理
自动化和脚本示例
创建便捷的下载函数:
编辑 ~/.bashrc:
vi ~/.bashrc
添加函数:
Axel 快速下载函数
axget() { if [ $# -eq 0 ]; then echo "用法: axget [线程数]" return 1 fi
local url=$1
local threads=${2:-10}
axel -n $threads -a "$url"
}
保存后重新加载:
source ~/.bashrc
使用函数:
axget http://example.com/file.zip 15
创建下载队列管理脚本:
vi download_queue.sh
内容:
#!/bin/bash
下载队列管理脚本
QUEUE_FILE="download_queue.txt" LOG_FILE="download.log" THREADS=10
if [ ! -f "$QUEUE_FILE" ]; then echo "队列文件不存在: $QUEUE_FILE" exit 1 fi
while read -r url; do if [ -z "$url" ]; then continue fi
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 开始下载: $url" | tee -a "$LOG_FILE"
axel -n $THREADS -a "$url" 2>&1 | tee -a "$LOG_FILE"
if [ ${PIPESTATUS[0]} -eq 0 ]; then
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 完成: $url" | tee -a "$LOG_FILE"
else
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 失败: $url" | tee -a "$LOG_FILE"
fi
sleep 2
done < "$QUEUE_FILE"
使用方法:
chmod +x download_queue.sh ./download_queue.sh
安全建议
1. 验证下载文件完整性
下载完成后验证 MD5 或 SHA256:
md5sum downloaded_file.iso
或
sha256sum downloaded_file.iso
与官方提供的校验值对比。
2. 使用 HTTPS
优先使用 HTTPS 链接:
axel -n 10 https://secure-server.com/file.zip
3. 避免下载来源不明的文件
只从可信来源下载文件,避免恶意软件。
4. 限制并发连接
不要使用过多线程,尊重服务器资源。
5. 定期更新 Axel
保持 Axel 更新到最新版本,修复已知漏洞。
通过以上详细的安装和使用指南,您可以在 Linux 系统上充分利用 Axel 的多线程下载能力,显著提升大文件下载速度。合理配置线程数和下载参数,既能获得最佳性能,又能避免对服务器造成过大压力。Axel 是命令行环境下进行高效下载的优秀工具,特别适合服务器环境和自动化脚本使用。