Convert Figma logo to code with AI

axel-download-accelerator logoaxel

Lightweight CLI download accelerator

2,932
263
2,932
77

Top Related Projects

35,422

aria2 is a lightweight multi-protocol & multi-source, cross platform download utility operated in command-line. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink.

35,356

A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. libcurl offers a myriad of powerful features

Official Transmission BitTorrent client repository

qBittorrent BitTorrent client

1,538

Deluge BitTorrent client - Git mirror, PRs only

82,065

A feature-rich command-line audio/video downloader

Quick Overview

Axel is a lightweight command-line download accelerator for Linux and Unix-like operating systems. It supports HTTP, HTTPS, FTP, and FTPS protocols, and can use multiple connections to speed up downloads.

Pros

  • Significantly faster downloads compared to traditional single-connection methods
  • Supports resuming interrupted downloads
  • Small footprint and efficient resource usage
  • Cross-platform compatibility (Linux, BSD, macOS)

Cons

  • Limited GUI options (primarily command-line based)
  • May not work well with some servers that limit connections
  • Less effective for small files or on slow networks
  • Not actively maintained (last major release was in 2020)

Getting Started

To install Axel on Ubuntu or Debian-based systems:

sudo apt-get update
sudo apt-get install axel

To download a file using Axel:

axel -n 4 https://example.com/large-file.zip

This command initiates a download with 4 connections. Adjust the number as needed.

To resume an interrupted download:

axel -c partial-file.zip

For more options and usage information:

man axel

Competitor Comparisons

35,422

aria2 is a lightweight multi-protocol & multi-source, cross platform download utility operated in command-line. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink.

Pros of aria2

  • Supports a wider range of protocols (HTTP, HTTPS, FTP, SFTP, BitTorrent, and Metalink)
  • Offers more advanced features like RPC interface and multi-source downloads
  • Has a larger and more active community, with frequent updates

Cons of aria2

  • More complex to set up and use compared to Axel's simpler interface
  • Requires more system resources due to its extensive feature set

Code Comparison

Axel (simple usage):

axel -n 4 http://example.com/file.zip

aria2 (equivalent usage):

aria2c -x 4 http://example.com/file.zip

Both tools support multi-threaded downloads, but aria2 offers more advanced options:

aria2c --max-connection-per-server=4 --min-split-size=1M http://example.com/file.zip

This command sets the maximum connections per server and minimum split size for segmented downloading, demonstrating aria2's more granular control over the download process.

35,356

A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. libcurl offers a myriad of powerful features

Pros of curl

  • Versatile tool supporting multiple protocols (HTTP, FTP, SMTP, etc.)
  • Extensive documentation and wide community support
  • Cross-platform compatibility (Windows, macOS, Linux)

Cons of curl

  • Slower download speeds compared to Axel for large files
  • Lacks built-in download resumption and multi-connection support
  • More complex syntax for basic download tasks

Code Comparison

Axel:

axel -n 4 https://example.com/largefile.zip

curl:

curl -O https://example.com/largefile.zip

Axel uses multiple connections by default, while curl requires additional parameters for similar functionality:

curl -O https://example.com/largefile.zip -r 0-1023 -o largefile.zip.part1 &
curl -O https://example.com/largefile.zip -r 1024-2047 -o largefile.zip.part2 &

Axel is designed specifically for accelerating downloads, making it simpler for this task. curl, while more versatile, requires more complex commands to achieve similar download acceleration. However, curl's broader protocol support and extensive features make it a more comprehensive tool for various network operations beyond just downloading files.

Official Transmission BitTorrent client repository

Pros of Transmission

  • Full-featured BitTorrent client with a GUI, web interface, and daemon
  • Supports more advanced features like RSS feeds, watch directories, and encryption
  • Cross-platform support for Windows, macOS, Linux, and more

Cons of Transmission

  • Larger codebase and more complex to set up compared to Axel
  • May be overkill for simple direct downloads
  • Primarily focused on BitTorrent, less optimized for HTTP/FTP downloads

Code Comparison

Axel (HTTP download):

while((size = read(fd, buffer, BUFSIZE)) > 0)
{
    if( (i = write(outfd, buffer, size)) < 0 )
    {
        return( 0 );
    }
    *bytes_done += i;
}

Transmission (BitTorrent download):

while ((piece = tr_peerMgrGetNextPiece(tor, peer)))
{
    tr_peerMsgsRequestPiece(msgs, piece);
    n_pieces_requested++;
    if (n_pieces_requested >= MAX_CONCURRENT_REQUESTS)
        break;
}

The code snippets show that Axel focuses on simple HTTP downloads, while Transmission handles more complex BitTorrent piece management.

qBittorrent BitTorrent client

Pros of qBittorrent

  • Full-featured BitTorrent client with a graphical user interface
  • Supports magnet links and torrent files
  • Includes built-in search engine for torrents

Cons of qBittorrent

  • Larger and more complex codebase
  • Requires more system resources
  • Not focused on direct HTTP/FTP downloads

Code Comparison

qBittorrent (C++):

void TorrentHandle::addTrackers(const QVector<TrackerEntry> &trackers)
{
    if (trackers.isEmpty()) return;

    const libtorrent::torrent_handle nativeHandle = m_nativeHandle;
    for (const TrackerEntry &tracker : trackers)
        nativeHandle.add_tracker(tracker.nativeEntry());
}

Axel (C):

void add_url(char *url)
{
    conn_t *conn;
    conn = malloc(sizeof(conn_t));
    memset(conn, 0, sizeof(conn_t));
    conn->conf = conf;
    conn->url = url;
    list_add(&conn->list, &conf->conn_list);
}

The code snippets demonstrate the different focus of each project. qBittorrent deals with torrent-specific functionality, while Axel handles direct URL downloads. qBittorrent uses C++ with object-oriented design, whereas Axel uses C with a more procedural approach.

1,538

Deluge BitTorrent client - Git mirror, PRs only

Pros of Deluge

  • Full-featured BitTorrent client with a robust GUI and web interface
  • Supports plugins for extended functionality
  • Cross-platform compatibility (Windows, macOS, Linux)

Cons of Deluge

  • More complex setup and configuration compared to Axel
  • Larger resource footprint due to its comprehensive feature set
  • Primarily focused on BitTorrent, less versatile for general downloads

Code Comparison

Axel (C):

void add_url(char *url)
{
    conn_t *conn;
    conn = malloc(sizeof(conn_t));
    memset(conn, 0, sizeof(conn_t));
    conn->conf = conf;
    conn->url = url;
    list_add(&conn->list, &conf->conn_list);
}

Deluge (Python):

def add_torrent_url(self, url, options=None, headers=None):
    """Add a torrent from a URL."""
    if not options:
        options = {}
    if not headers:
        headers = {}
    return self.core.add_torrent_url(url, options, headers)

While both projects handle downloads, Axel is a lightweight command-line download accelerator written in C, focusing on HTTP/FTP downloads. Deluge is a feature-rich BitTorrent client written in Python, offering a GUI and extensive torrent management capabilities. Axel is more suitable for simple, direct downloads, while Deluge excels in BitTorrent-based file sharing and management.

82,065

A feature-rich command-line audio/video downloader

Pros of yt-dlp

  • Specialized for video downloading from various platforms
  • Supports a wide range of websites and formats
  • Actively maintained with frequent updates

Cons of yt-dlp

  • More complex to use for general file downloads
  • Larger codebase and dependencies
  • Slower for simple HTTP downloads

Code Comparison

yt-dlp (Python):

ydl_opts = {'format': 'bestaudio/best'}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    ydl.download(['https://www.youtube.com/watch?v=dQw4w9WgXcQ'])

axel (C):

axel_t *axel = axel_new(conf, argc, argv);
if (axel)
    axel_start(axel);
axel_delete(axel);

yt-dlp is designed specifically for video downloading from various platforms, offering extensive support for different websites and formats. It's actively maintained and frequently updated. However, it can be more complex to use for general file downloads and has a larger codebase with more dependencies. axel, on the other hand, is a lightweight download accelerator focused on HTTP/FTP protocols, making it faster and simpler for basic downloads but lacking the specialized features for video platforms that yt-dlp provides.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

AXEL - Lightweight CLI download accelerator

About

Axel tries to accelerate the download process by using multiple connections per file, and can also balance the load between different servers.

Axel tries to be as light as possible, so it might be useful on byte-critical systems.

Axel supports HTTP, HTTPS, FTP and FTPS protocols.

Thanks to the original developer of Axel, Wilmer van der Gaast, and everyone else who has contributed to it over the years.

Usage

For usage information, see the manual page:

man axel

How to help

If you can code and are interested in improving Axel, please read the CONTRIBUTING.md file; if you're looking for ideas check our open tickets.

Additionally, there is a google group to discuss and to coordinate development. You can also find other developers in the #axel channel on Freenode.

The sustainability of the project mainly depends on developers dedicating time, so if you want to contribute but can't code, there's also the option to fund paid development time through:

Installing from binaries

Your operating system may contain a precompiled version of Axel, and if so you should probably use it. If the package is outdated please get in touch with the package maintainer or open a support ticket with your distro.

Building from source

WARNING: Building from the source code repository is recommended only when doing development, otherwise only use release tarballs.

Axel uses GNU autotools for it's buildsystem; instructions are provided in the INSTALL file. The basic actions for most users are:

./configure && make && make install

To build without SSL/TLS support, pass to configure the --without-ssl flag.

If you're working from the source code repository instead of a release tarball, you need to generate the buildsystem first with:

autoreconf -i

When working from a git repository the build system will detect that and will add -Werror to the CFLAGS if supported; so if you're not doing development you should probably consider passing --disable-Werror to configure in order to prevent build failures due to mere warnings.

Dependencies

  • gettext (or gettext-tiny)
  • pkg-config

Optional:

  • libssl (OpenSSL, LibreSSL or compatible) -- for SSL/TLS support.

Extra dependencies for building from snapshots

  • autoconf-archive
  • autoconf
  • automake
  • autopoint
  • txt2man

Packages on Debian-based systems

  • build-essential
  • autoconf
  • autoconf-archive
  • automake
  • autopoint
  • gettext
  • libssl-dev
  • pkg-config
  • txt2man

Packages on Mac OS X (Homebrew)

  • autoconf-archive
  • automake
  • gettext
  • openssl

Building on Mac OS X (Homebrew)

You'll need to provide some extra options to autotools so it can find gettext and openssl.

GETTEXT=/usr/local/opt/gettext
OPENSSL=/usr/local/opt/openssl
PATH="$GETTEXT/bin:$PATH"

[ -x configure ] || autoreconf -fiv -I$GETTEXT/share/aclocal/

CFLAGS="-I$GETTEXT/include -I$OPENSSL/include" \
LDFLAGS=-L$GETTEXT/lib ./configure

You can just run make as usual after these steps.

Related projects

License

Axel is licensed under GPL-2+ with the OpenSSL exception.