使用 Axel 加速你的下载
“没有什么比光速更快,除了...
坏消息,它有自己的一套规律” ~ Douglas Adams
额,我能说什么呢?我喜欢好的引言,尤其是当它涉及到我在博客文章中讨论的主题时。你有没有遇到过这样的时刻,你需要从网站上下载一个文件,而且你现在就需要它?也许是某些软件的最新补丁,或者是你最喜欢的发行版的新版本,但它不提供 bit-torrent 下载。没有什么比当你看到你的下载速度下降到无法忍受的数字时,你的心沉到谷底的那一刻更糟糕的了。当你意识到,写出一堆 1 和 0 可能比最终得到你正在等待的文件更快时。
嗯,我知道我以前遇到过很多次这个问题。但在大约 6 个月前,当我在 #linuxjournal 的 IRC 频道时,我正在表达我对我的互联网提供商的下载速度的不满,当时我正在下载最新的 VirtualBox。就在我快要放弃的时候,nerdboy4200 (Josh) 推荐了 Axel 下载加速器应用程序。由于我从未听说过 Axel,并且对声称是“多线程”下载加速器的东西有点怀疑,所以我决定硬着头皮试一试。
试用。我告诉你,我真是太惊讶了!现在我不是那种会仅仅相信“哦,下载速度很快”的人(如果你看过我在 iperf 上的个人博客文章,我就知道我是个注重硬数据的人),所以我使用不同的网站在一天中的不同时间做了一些比较和数字运算。不用说,我仍然印象深刻。因此,感谢 nerdboy4200,一篇关于 Axel 下载加速器的博客文章诞生了。
那么 Axel 到底是什么呢?开发者称之为下载加速器,但如果你想从技术角度来看,它可以将多个 http 或 ftp 流拉入单个下载位置。简而言之,它就像是打了鸡血的 wget。Wget 是单流下载,你将其指向单个下载位置,它会按请求获取文件。使用 Axel,你可以告诉
应用程序指向多个 ftp 镜像,或单个 http 下载位置,但同时拉取多个流,从而提高你的下载速度。
为什么要使用 Axel?正如我之前概述的那样,对于那些你从中下载的连接,它们可能对 ftp 流速度、http 会话(爆发然后减速)或连接速度慢的服务器有限制,它是完美的实用程序。正如你将在本文后面看到的那样,硬数据实际上令人难以置信,我对结果非常满意。
当然,任何事物都有两面性。如果你在网络上使用多流下载实用程序,请记住,你将打开 x 倍的管道,下载速度将达到你通常获得的 x 倍。例如,如果你以 800 Kb/s 的速度下载单流,并且你想下载 2 个流,那么你现在正在消耗你的网络连接上的带宽,用于 2 个同时运行 800 Kb/s 或更高的流。如果你作为客人(或员工)在别人的网络上,请记住这一点,因为这可能会影响他们的网络吞吐量。我有点怀疑你的另一半会乐于在线缓冲他们最新的电视剧,而你却在消耗来自 kernel.org 的带宽。但是,Axel 确实允许你设置下载流的流数量和最大带宽量,我将在稍后介绍。
另一个需要注意的事情是公共礼仪。如果你从一个很多人都会从中下载的 ftp 站点(例如 kernel.org)下载,你能做的最好的事情是利用 Axel 从多个镜像而不是单个 ftp 位置进行多流的能力。这样你就不会用完单个镜像的带宽,而是将带宽分散到多个 ftp 镜像中。
Axel 开发和下载
在你评论说 Axel 已经死了之前,我先承认这一点。Axel 的积极开发似乎在 2009 年陷入停滞。但开源软件的魅力在于,总会有人愿意通过 fork 这样一个很棒的项目来看到粗糙中的钻石。而且有人已经对 Axel 做了这样的事情。关于 Axel 的另一件事是,基于 Debian 的发行版应该已经在其 repo 中拥有 Axel,因此它应该很简单
就像
apt-get install axel
对于我们其他人,仍然有 .tar.gz 包,我稍后会介绍。
Axel 的主网站可以在这里找到
http://axel.alioth.debian.org/
他们的 Freshmeat.net 页面可以在这里找到
http://freshmeat.net/projects/axel/
Axel 的 fork(通过 GitHub)可以在这里找到
https://github.com/emiraga/axel
通过 GitHub 更新 Axel 代码库的人在保持其发布的最新状态方面做得很好。截至目前,最新版本是 2011 年 1 月。就我个人而言,到目前为止,我还没有遇到 .tar.gz 或 Debian 版本的 Axel 的任何问题。但是,如果你想大胆尝试并玩 GitHub 代码,我们非常欢迎你。
首先,是时候安装 Axel 了。如果你使用的是 Debian 发行版(无论是 Debian、Ubuntu,还是任何使用 Debian 代码库和 apt-get 包管理器的发行版),你应该能够直接运行
apt-get install axel
如果你使用的是 RPM 包管理器(例如 Fedora 15),请检查 yum,因为它应该可以通过以下方式获得:
yum install axel
由于我使用 Debian、Fedora 和一些自定义发行版进行测试,我倾向于从源代码 (tar.gz) 安装软件包,然后从那里开始。所以对于你们其他人,cd 到你最喜欢的下载目录,让我们开始工作。
cd ~/Download wget http://alioth.debian.org/frs/download.php/3015/axel-2.4.tar.gz tar zxvf axel-2.4.tar.gz && cd axel-2.4 ./configure && make sudo make install
哒哒!现在你应该能够从命令行输入:axel。根据 Axel 的网站,它没有任何依赖项(当然,你需要 GCC 和 Makeutils 才能实际编译和链接软件包),例如外部库。(所以在理想情况下,输入 Axel 应该会让你获得运行该实用程序的语法)。
命令行开关
当涉及到命令行开关时,Axel 真的没有太多东西。如果你想了解有关开关的更多信息,你可以:man axel
,或者从命令行输入 axel --help
以获取有关每个开关作用的信息。我将在这里介绍基本知识,以及我在使用 Axel 的这段时间里发现有用的东西。
-s x 最大速度 (BPS) - 设置允许下载的最大速度,单位为字节每秒,当你的网络连接有限制,或者作为客人在别人的网络上时很有用。
-n x 最大连接数 - 设置最大连接数,为了安全起见,我倾向于将其最大值设置为 10 左右
-o f 输出文件 - 如果你想将 thisis-my-we-ird.23.2.43.tar.gz 文件更改为 thisismyweird-232-43.tar.gz,则很有用
-v 详细模式 - 不言自明,你在此处输入的 v 越多,它就越详细。
-a 备用指示器 - 更改下载指示器,我个人更喜欢 -a 的外观而不是默认外观。
示例
# 下载补丁,最大连接数设置为 10
axel -n 10 https://linuxkernel.org.cn/pub/linux/kernel/v2.6/patch-2.6.39.gz
# 以 204,800 字节/秒 (200KB/s) 和最大 10 个连接下载补丁
axel -s 204800 -n 10 https://linuxkernel.org.cn/pub/linux/kernel/v2.6/patch-2.6.39.gz
# 从 4 个 ftp 镜像下载补丁
axel ftp://ftp.{us,uk,br,fr}.kernel.org/pub/linux/kernel/v2.6/patch-2.6.39.gz
实际测试和结果
没有爆炸就不能完成实验!哎呀,这就是我 Mythbusters 马拉松周末的收获。但是,唉,没有用 Axel 爆炸的东西。在这种情况下,没有一些硬结果就不能完成实验。我喜欢快速的结果,但也喜欢看到硬数据。为了测试目的,我做了以下操作
1. 我从 2 个网站下载:virtualbox.org 和 kernel.org
2. virtualbox.org 通过 http,kernel.org 通过 http 和 ftp
3. 我使用 wget 下载一个文件 5 次,使用 axel -n 10 下载 5 次,并使用 ftp 镜像下载 5 次
4. 我在早上、下午和晚上运行了这些测试。
5. 一旦结果出来,我就取了早上、下午和晚上 5 个结果的平均值,并得出了我的数字。
这样,就不会有人回来并说“嗯,你的有线连接在 xx 时间更快”,或者“也许你只是幸运地在没有其他人下载时下载了它”。我试图尽可能地考虑所有可能的变量并将其代入。不,我没有倒立,没有用吸管喝咖啡,也没有用舌头按“Enter”键。不知何故,我不认为这会改变结果。
WGET 测试结果
virtualbox.org: 1.49 Mb/s
kernel.org HTTP: 1.30 Mb/s
kernel.org FTP: 281.5 Kb/s
AXEL 测试结果
virtualbox.org -n 10: 2.57 Mb/s
kernel.org http -n 10: 2.24 Mb/s
kernel.org 4 ftp 镜像: 560.80 Kb/s
Axel 比较
virtualbox.org: 增加 1.08 Mb/s = 增加 72%
kernel.org http: 增加 962.56 Kb/s = 增加 72%
kernel.org FTP: 增加 279.30 Kb/s = 增加 99%
我只能说哇。老实说,当 6 个月前 nerdboy4200 (Josh) 向我推荐 Axel 的那天,我真的没想到会得到这样的结果。我真的印象深刻。但是,我确实注意到一件事:如果你的互联网速度达到某个速度(例如 2Mb/s)的峰值,那么你很可能无法在 Axel 下载中获得 4Mb/s,所以不要期望奇迹。我对其他互联网连接进行了一些进一步的测试,并注意到有时 wget 的结果与 Axel 的结果相匹配,只是因为我从中提取数据的提供商的速度与我被允许在该互联网连接上提取的最大下载速度相匹配。在这种情况下,wget 和 axel 的结果都相似。
结论
当有人通过口口相传推荐一个开源产品,而它最终成为你每天都在使用的东西时,这真是太棒了。这正是开源如此强大的原因,人们能够找到一种改变他们系统管理员生活的产品,并将这些知识传递给他们看到的下一个正在挣扎的人。在这种情况下,Axel 真的是锦上添花。
现在,如果你想“加速”(双关语)Axel,那里有一些 gui 实用程序(从 debian repo 中想到了 axel-kapt),并且在 Google 上搜索“axel debian apt-get”会得到一些有趣的结果,人们已经能够将 Axel 集成到他们的 apt-get 下载中,以提高软件包下载性能。
所以下次你在 #linuxjournal 时,请随时向 nerdboy4200 发送消息,感谢他推荐了如此出色的实用程序。如果没有他对 Axel 的实验,我相信我今天仍然在下载 virtualbox 的最新更新。