Aria2
From the project home page:
- aria2 is a lightweight multi-protocol & multi-source command-line download utility. It supports HTTP/HTTPS, FTP, BitTorrent and Metalink. aria2 can be manipulated via built-in JSON-RPC and XML-RPC interfaces.
Contents
Installation
Install aria2 from official repositories.
You may also want to install aria2-systemd to use aria2 as daemon.
Execution
The executable name for the aria2 package is aria2c
. This legacy naming convention has been retained for backwards compatibility.
Configuration
aria2.conf
aria2 looks to $XDG_CONFIG_HOME/aria2/aria2.conf
for a set of global configuration options by default. This behavior can be modified with the --conf-path
switch:
- Download
aria2.example.rar
using the options specified in the configuration file/file/aria2.rapidshare
$ aria2c --conf-path=/file/aria2.rapidshare http://rapidshare.com/files/12345678/aria2.example.rar
If $XDG_CONFIG_HOME/aria2/aria2.conf
exists and the options specified in /file/aria2.rapidshare
are desired, the --no-conf
switch must be appended to the command:
- Do not use the default configuration file and download
aria2.example.rar
using the options specified in the configuration file/file/aria2.rapidshare
$ aria2c --no-conf --conf-path=/file/aria2.rapidshare http://rapidshare.com/files/12345678/aria2.example.rar
If $XDG_CONFIG_HOME/aria2/aria2.conf
does not yet exist and you wish to simplify the management of configuration options:
$ touch $XDG_CONFIG_HOME/aria2/aria2.conf
Example .bash_alias
alias down='aria2c --conf-path=${HOME}/.aria2/aria2.conf' alias rapid='aria2c --conf-path=/file/aria2.rapidshare'
Example aria2.conf
continue dir=${HOME}/Desktop file-allocation=none input-file=${HOME}/.aria2/input.conf log-level=warn max-connection-per-server=4 min-split-size=5M on-download-complete=exit
This is essentially the same as if running the following:
$ aria2c dir=${HOME}/Desktop file-allocation=none input-file=${HOME}/.aria2/input.conf on-download-complete=exit log-level=warn FILE
Option details
-
continue
- Continue downloading a partially downloaded file if a corresponding control file exists.
-
dir=${HOME}/Desktop
- Store the downloaded file(s) in
~/Desktop
. -
file-allocation=none
- Do not pre-allocate disk space before downloading begins. (Default: prealloc) 1
-
input-file=${HOME}/.aria2/input.conf
- Download a list of line, or TAB separated URIs found in
~/.aria2/input.conf
-
log-level=warn
- Set log level to output warnings and errors only. (Default: debug)
-
max-connection-per-server=4
- Set a maximum of four (4) connections to each server per file. (Default: 1)
-
min-split-size=5M
- Only split the file if the size is larger than 2*5MB = 10MB. (Default: 20M)
-
on-download-complete=exit
- Run the
exit
command and exit the shell once the download session is complete.
Example input file #1
- Download
aria2-1.10.0.tar.bz2
from two separate sources to~/Desktop
before merging asaria2-1.10.0.tar.bz2
http://aria2.net/files/stable/aria2-1.10.0/aria2-1.10.0.tar.bz2 http://sourceforge.net/projects/aria2/files/stable/aria2-1.10.0/aria2-1.10.0.tar.bz2
Example input file #2
- Download
aria2-1.9.5.tar.bz2
and save to/file/old
asaria2.old.tar.bz2
& - Download
aria2-1.10.0.tar.bz2
and save to~/Desktop
asaria2.new.tar.bz2
http://aria2.net/files/stable/aria2-1.9.5/aria2-1.9.5.tar.bz2 dir=/file/old out=aria2.old.tar.bz2 http://aria2.net/files/stable/aria2-1.10.0/aria2-1.10.0.tar.bz2 out=aria2.new.tar.bz2
Additional notes
- 1
--file-allocation=falloc
- Recommended for newer file systems such as ext4 (with extents support), btrfs or xfs as it allocates large files (GB) almost instantly. Do not use falloc with legacy file systems such as ext3 as prealloc consumes approximately the same amount of time as standard allocation would while locking the aria2 process from proceeding to download.
http-user=USER_NAME http-passwd=PASSWORD allow-overwrite=true dir=/file/Downloads file-allocation=falloc enable-http-pipelining=true input-file=/file/input.rapidshare log-level=error max-connection-per-server=2 summary-interval=120
Option details
-
http-user=USER_NAME
- Set HTTP username as USER_NAME for password-protected logins. This affects all URIs.
-
http-passwd=PASSWORD
- Set HTTP password as PASSWORD for password-protected logins. This affects all URIs.
-
allow-overwrite=true
- Restart download if a corresponding control file does not exist. (Default: false)
-
dir=/file/Downloads
- Store the downloaded file(s) in
/file/Downloads
. -
file-allocation=falloc
- Call posix_fallocate() to allocate disk space before downloading begins. (Default: prealloc)
-
enable-http-pipelining=true
- Enable HTTP/1.1 pipelining to overcome network latency and to reduce network load. (Default: false)
-
input-file=/file/input.rapidshare
- Download a list of single line of TAB separated URIs found in
/file/input.rapidshare
-
log-level=error
- Set log level to output errors only. (Default: debug)
-
max-connection-per-server=2
- Set a maximum of two (2) connections to each server per file. (Default: 1)
-
summary-interval=120
- Output download progress summary every 120 seconds. (Default: 60) 3
Additional notes
- Because
aria2.rapidshare
the contains a username and password, it is advisable to set permissions on the file to 600, or similar.
$ cd /file $ chmod 600 /file/aria2.rapidshare $ ls -l total 128M -rw------- 1 arch users 167 Aug 20 00:00 aria2.rapidshare
- 3
summary-interval=0
- Supresses download progress summary output and may improve overall performance. Logs will continue to be output according to the value specified in the
log-level
option.
Example aria2.bittorrent
bt-seed-unverified max-overall-upload-limit=1M max-upload-limit=128K seed-ratio=5.0 seed-time=240
Option details
-
bt-seed-unverified=false
- Do not check the hash of the file(s) before seeding. (Default: true)
-
max-overall-upload-limit=1M
- Set maximum overall upload speed to 1MB/sec. (Default: 0)
-
max-upload-limit=128K
- Set maximum upload speed per torrent to 128K/sec. (Default: 0)
-
seed-ratio=5.0
- Seed completed torrents until share ratio reaches 5.0. (Default: 1.0)
-
seed-time=240
- Seed completed torrents for 240 minutes.
Example aria2.daemon
This configuration can be used to start Aria2 as a service. It can be used in conjunction with several of the frontends listed below. Note that rpc-user and rpc-pass are deprecated, but most frontends have not been ported to the new authentication yet. Do not forget to change user, password and Download directory.
continue daemon=true dir=/home/aria2/Downloads file-allocation=falloc log-level=warn max-connection-per-server=4 max-concurrent-downloads=3 max-overall-download-limit=0 min-split-size=5M enable-http-pipelining=true enable-rpc=true rpc-listen-all=true rpc-user=rpcuser rpc-passwd=rpcpass
Frontends
Web UIs
- YaaW — Yet Another Aria2 Web Frontend in pure HTML/CSS/Javascirpt.
- Webui — Html frontend for aria2.
- aria2rpc — Command line tool for connecting to a remote instance of
aria2c
. Ifaria2c
is installed it can be found under/usr/share/doc/aria2/xmlrpc/aria2rpc
.
Other UIs
- aria2fe — A GUI for the CLI-based aria2 download utility.
- Diana — Command line tool for aria2
- downloadm — A download accelerator/manager which uses aria2c as a backend.
- http://sourceforge.net/projects/downloadm/ || downloadmAUR[broken link: archived in aur-mirror]
- eatmonkey — Download manager for Xfce that works with aria2.
- http://goodies.xfce.org/projects/applications/eatmonkey || eatmonkeyAUR[broken link: archived in aur-mirror]
- karia2 — QT4 interface for aria2 download mananger.
- uGet — Feature-rich GTK+/CLI download manager which can use aria2 as a back-end by enabling a built-in plugin.
- yaner — GTK+ interface for aria2 download mananger.
- http://iven.github.com/Yaner || yaner-gitAUR[broken link: archived in aur-mirror]
It is convenient to append a monitor function based on diana in your shell configuration file:
da(){ watch -ctn 1 "(echo -e '\033[32mGID\t\t Name\t\t\t\t\t\t\t%\tDown\tSize\tSpeed\tUp\tS/L\tTime\033[36m'; \ diana list| cut -c -112; echo -e '\033[37m'; diana stats)" }
Tips and tricks
Download the packages without installing them
Just use the command below:
# pacman -Sp packages | aria2c -i -
pacman -Sp
lists the urls of the packages on stdout, instead of downloading them, then |
pipes it to the next command. Finally, The -i
in aria2c -i -
switch to aria2c means that the urls for files to be downloaded should be read from the file specified, but if -
is passed, then read the urls from stdin.
pacman XferCommand
aria2 can be used as the default download manager for the pacman package manager. See the ArchWiki article Improve pacman performance for additional details.
Custom minimal build
Gains in application response can be gleaned by removing unused features and protocols. Further gains can be accomplished by removing support for external libraries with a custom build. Available options are visible through ./configure --help
. See the Arch Build System page for further details.
Start aria2c on system boot
Save the following systemd service file, adjust username and config path according to your setup. Ensure your config is set to deamonize (use daemon=true
).
/etc/systemd/system/aria2c.service
[Unit] Description=Aria2c download manager After=network.target [Service] User=aria2 Type=forking ExecStart=/usr/bin/aria2c --conf-path=/home/aria2/.aria2/aria2.daemon [Install] WantedBy=multi-user.target
Then start and/or enable the service.
Changing the User Agent
Some sites may filter the requests based on your User Agent, since Aria2 is not a well known downloader, it may be good to use a most known downloader or browser as the Aria's User Agent. Just use the -U option like this:
$ aria2c -UWget http://some-url-to-download/file.xyz
You can use whatever you want, like -UMozilla/5.0 and so on.
Using Aria2 with makepkg
You can use Aria2 instead of curl to download source files, just change the DLAGENTS
variable as follows:
/etc/makepkg.conf
[...] DLAGENTS=('ftp::/usr/bin/aria2c -UWget -s4 %u -o %o' 'http::/usr/bin/aria2c -UWget -s4 %u -o %o' 'https::/usr/bin/aria2c -UWget -s4 %u -o %o' 'rsync::/usr/bin/rsync -z %u %o' 'scp::/usr/bin/scp -C %u %o') [...]
See also
- aria2 wiki - Official site
- aria2 usage examples - Official site
- aria2c downloader through VPN tunnel - Unofficial site