Linux ultra fast command line download accelerator

Usually I use wget, which is ultimate command line downloader. However, wget failed to accelerate my download speed. I was downloading 1.4GB file around 800KB/s download speed (this box is hooked to uplink port speed 10 Mbps ). However, remote server was restricting me.

Advertisement

Therefore, I decided to get rid of wget. I have downloaded axel – a light download accelerator for Linux command line.

How Axel works?

Axel does the same thing any other accelerator does: it opens more than one HTTP/FTP connection per download and each connection transfers its own, separate, part of the file. It may sound weird, but it works very well in practice. For example, some FTP sites limit the speed of each connection, therefore opening more than one connection at a time multiplies the allowable bandwidth. Be forewarned that some FTP operators don’t like it when you do this. It is better to open the additional connections on several servers and download from all of them simultaneously. Axel supports this feature too. You may either specify a list of mirrors to use or tell the program to search for mirrors.

This is a perfect tool over remote ssh session for downloading large file.

Install axel

If you are using Debian, type the following command to install axel:
# apt-get install axel

Or you can download axel from official website:
$ wget http://wilmer.gaast.net/downloads/axel-1.0b.tar.gz

Untar the axel:
$ tar -zxvf axel-1.0b.tar.gz

Configre and compile axel:
$ ./configure

Install axel:
# make install

On the other hand, just upload a newly build axel binary to remote Linux server using scp. Usually I do not install gcc c/c++ compilers collection on any of my production web/ftp/MySql servers for security reasons.

How do I use axel?

Just type the command as follows:
$ axel http://download.com/file.tar.gz

Limit speed
You can also specify a speed (bytes per sec) for axel so that it will not eat up all your bandwidth. For example following will try to keep the average speed around 5242880 (5120 Kilobyte per/sec):
$ axel -s 5242880 http://download.com/my.iso

Limit a number of connection
You can also specify number of connection you want to open. For example open 3 connections for downloading:
$ axel -n 3 -s 5242880 http://download.com/my.iso

But how fast is axel?

Here is sample test that demonstrates how fast is axel

$ wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.11.tar.bz2

Output:

--12:10:31--  http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.11.tar.bz2
           => `linux-2.6.17.11.tar.bz2'
Resolving kernel.org... 204.152.191.5, 204.152.191.37
Connecting to kernel.org|204.152.191.5|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 41,288,067 (39M) [application/x-bzip2]

100%[================================================================================>] 41,288,067     2.33M/s    ETA 00:00

12:10:48 (2.31 MB/s) - `linux-2.6.17.11.tar.bz2' saved [41288067/41288067]

$ axel http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.11.tar.bz2

Output:

Initializing download: http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.11.tar.bz2
File size: 41288067 bytes
Opening output file linux-2.6.17.11.tar.bz2.1
Starting download

[  0%]  .......... .......... .......... .......... ..........  [ 247.1KB/s]
[  0%]  .......... .......... .......... .......... ..........  [ 408.3KB/s]
[  0%]  .......... .......... .......... .......... ..........  [ 566.3KB/s]
[  0%]  .......... .......... .......... .......... ..........  [ 707.2KB/s]
[  0%]  .......... .......... .......... .......... ..........  [ 836.5KB/s]
[  0%]  .......... .......... .......... .......... ..........  [ 975.9KB/s]
[  0%]  .......... .......... .......... .......... ..........  [1079.9KB/s]
[  0%]  .......... .......... .......... .......... ..........  [1210.0KB/s]
[  0%]  .......... .......... .......... .......... ..........  [1303.1KB/s]
[  1%]  .......... .......... .......... .......... ..........  [1422.1KB/s]
[  1%]  .......... .......... .......... .......... ..........  [1508.0KB/s]
[  1%]  .......... .......... .......... .......... ..........  [1629.2KB/s]
..........
...
....
[ 99%]  .......... .......... .......... .......... ..........  [8710.2KB/s]
[ 99%]  .......... .......... .......... .......... ..........  [8680.7KB/s]
[100%]  .......... ..........

Downloaded 39.4 megabytes in 4 seconds. (8681.65 KB/s)

As you see axel downloaded same file in 4 seconds. Another great thing its binary size, I can put axel on boot disk and replace a wget.

prozilla – another good program with GUI frontend

One of the drawback of axel is you can not specify ftp username and password. You can use prozilla program, which also makes multiple connections and downloads a file in multiple parts simultaneously thus enhancing the download speed and dwnloading the file faster than a download with a single connection.

FTP passwords can be specified with the URL, or can be obtained automatically from ~/.netrc if it exists.

Install prozilla

# yum install prozilla

Or download prozilla from official web site.

To use prozilla just type the following command (command line version):
$ proz http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.11.tar.bz2

prozilla - another good program with GUI frontend
(click to enlrage image)

Further readings

🥺 Was this helpful? Please add a comment to show your appreciation or feedback.

nixCrat Tux Pixel Penguin
Hi! 🤠
I'm Vivek Gite, and I write about Linux, macOS, Unix, IT, programming, infosec, and open source. Subscribe to my RSS feed or email newsletter for updates.

62 comments… add one
  • Xster Dec 7, 2009 @ 1:31

    Do agree that Axel’s printouts are a bit wild. But its in a visor on mac so doesn’t bother me

  • ayip.eiger Mar 23, 2010 @ 9:36

    Where i find axel downloaded files?

    • Randy Oct 17, 2013 @ 9:05

      home folder

  • ind daz Mar 30, 2010 @ 3:58

    hii..
    I’m in a this type of situation,I dont know how to go further.um working on Fedora 9.looking for ur help,, thnxzz!!!

    ./configure
    The strip option is enabled. This should not be a problem usually, but on some
    systems it breaks stuff.

    Configuration done:
    Internationalization disabled.
    Debugging disabled.
    Binary stripping enabled.
    [root@localhost axel-1.0b]# make install
    mkdir -p /usr/local/bin/
    cp axel /usr/local/bin/axel
    cp: cannot stat `axel’: No such file or directory
    make: *** [install-bin] Error 1

    • adibaskom Jul 2, 2011 @ 9:47

      do this
      $./configure
      $make
      #make install
      enjoy

  • Roman Apr 30, 2010 @ 12:36

    Hi ind daz.

    i had the same problem. try to type “apt-get -f install”. after that you can install it.

  • Long Jul 13, 2010 @ 12:10

    A nice one to try for linux would be SKDownloader. It is a download accelerator having an excellent gui with themes support (not sure how many would be using it though 🙂 ). It is fully free and unlike other download accelerators, it allows you to choose the number of simultaneous connections you can make and it is not limited to 3 or 4 which is the case with most others. Their link is
    Link

  • Paul Ward Jul 25, 2010 @ 22:54

    Just tried wget on a file from a friends box in the UK to my server in NZ and was getting a total download time of 8 hours +
    Switched to my windows server and used firefox with downloadthemall and was getting 4 streams down and total download time est around 5 hours.
    Installed axel and tried however I was getting proxy issues and being requested for my domain and user + password, this is a pain as I had my http_proxy already exported but it did not use it.
    Then tried aria2 and amazing at this time it is sayinfg 2 hours 30 mins that blows all the above away and my windows firefox to boot.
    Yet to see if the file md5sums match and if the download time is real and not an extimate but it’s looking good for now especally as from the remote box I am lucky to get anywher near 50k usually around 30k 🙂
    [ SIZE:19.7MiB/538.8MiB(3%) CN:5 SPD:58.2KiBs ETA:2h31m59s]]

  • Raam Jan 21, 2011 @ 23:07

    Thanks a lot . I also though wget is the ultimate downloader but axel is so much faster out the box. This really improved my life 😀

  • Neigyl Noval May 25, 2011 @ 16:13

    Hi. I’m using axel to download a 4 GB software. When it downloaded 98%, it suddenly gives “write error”. I tried it again, but it still gives write error. It says.

    File size: 4314152960 bytes
    Opening output file Xilinx_ISE_DS_Lin_13.1_O.40d.1.1.tar
    State file found: 4251837514 bytes downloaded, 62315446 to go.
    Starting download

    ,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,,, ,,,,,….. …..
    Write error!

    Downloaded 10.7 kilobytes in 0 seconds. (24.90 KB/s)

    I still have more than 30 GB space and the partition is ext3.

    How to fix this? Thanks.

  • Arvind Oct 13, 2011 @ 2:33

    I tried axel — for me it works thrice as fast as wget. (I tried wget and axel on different huge files and measured the speed difference so the transparent proxy issue is not there.)

    This is ideal for someone who wants to download a huge file onto some remote Unix computer in the cloud. (1) Cannot fire-up mozilla on the remote computer even using ssh -X (painfully slow). (2) Cannot download huge file on to local lap-top and then re-up-load to remote compute in the cloud (idiotic).

    Therefore — go go go axel ! Love it!

    I haven’t tried aria and the other softwares mentioned here but they may well be just as good.

  • Dinesh Oct 30, 2011 @ 15:14

    Thats pretty amazing. Can download files at a speed more than my max download limit.

  • rafi Nov 27, 2011 @ 16:19

    Sorry i am unable to install axel.Plz can any one help me?

  • abdelouahab Dec 8, 2011 @ 8:22

    @rafi : use apt-get install axel
    dont try to use the GUI interface, it dont work here (ubuntu 11.10) use the command line:
    (look here) http://manpages.ubuntu.com/manpages/gutsy/man1/axel.1.html
    it really impressed me how it’s fast, i’ve unistalled it the first time i’ve used it because it dident show me anything! the console opened in black! but i’ve reinstalled it and used it directly from the bash using the command line “alex” (without quotes) and it worked 😀

  • Prescilla Jun 5, 2012 @ 1:20

    Does axel support resuming partial downloads, like wget -c???
    If so, how do I resume a partial download with axel???

    • nick Sep 23, 2012 @ 20:24

      yes!
      for instance the connection was lost, cancel the download by CTRL+C
      after that, enter same command in your previous download of axel. it will resume automatically

  • AndresVia Jul 30, 2013 @ 12:29

    For the people complaining about the verbosity of axel, they should try the options
    –alternate, -a
    This will show an alternate progress indicator. A bar displays
    the progress and status of the different threads, along with
    current speed and an estimate for the remaining download time.
    –quiet, -q
    No output to stdout.

  • Saeed Apr 8, 2015 @ 18:09

    Hi
    If you are using firefox , you can use “axel-downloader” firefox plugin.
    https://github.com/PHProir/axel-downloader-for-firefox

Leave a Reply

Your email address will not be published. Required fields are marked *

Use HTML <pre>...</pre> for code samples. Your comment will appear only after approval by the site admin.