Aria2 (Italiano)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

aria2 è un download manager leggero a linea di comando che supporta i protocolli HTTP/HTTPS, FTP, BitTorrent e Metalink. aria2 è considerato uno dei programmi più veloci e leggeri della sua categoria disponibile per molte piattaforme. È uno strumento flessibile per merito dell'ampio numero di opzioni utilizzabili anche nei file di configurazione e per la possibilità di essere gestito tramite XML-RPC e JSON-RPC.

Installazione

Installate aria2 dai repository ufficiali.

Potreste trovare utile installare aria2-systemd.

Esecuzione

Per motivi di retrocompatibilità il programma si chiama aria2c.

Configurazione

aria2.conf

aria2 legge il file ~/.aria2/aria2.conf per ottenere le impostazioni generali desiderate. Si può scegliere un file di configurazione alternativo tramite l'opzione --conf-path:

  • Per scaricare aria2.example.rar si sceglie il file di configurazone /file/aria2.rapidshare
$ aria2c --conf-path=/file/aria2.rapidshare http://rapidshare.com/files/12345678/aria2.example.rar[link interrotto 2020-08-02]

Se ~/.aria2/aria2.conf esiste ma si vogliono applicare solo le impostazioni in /file/aria2.rapidshare si deve aggiungere l'opzione --no-conf:

  • 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[link interrotto 2020-08-02]

Esempio di .bash_alias

alias down='aria2c --conf-path=${HOME}/.aria2/aria2.conf'
alias rapid='aria2c --conf-path=/file/aria2.rapidshare'

Esempio di 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

Questo è equivalente a scrivere il comando:

$ aria2c dir=${HOME}/Desktop file-allocation=none input-file=${HOME}/.aria2/input.conf on-download-complete=exit log-level=warn FILE
Nota: Il precedente esempio di aria2.conf può usare in modo sbagliato la variabile $HOME. Some users have reported the curly brace syntax to explicitly create a separate ${HOME} subdirectory in the aria2 working directory. Such a directory may be difficult to traverse as bash will consider it to be the $HOME environment variable. Per adesso si raccomanda di usare percorsi assoluti in aria2.conf.

Dettaglio delle opzioni

continue
Continua il download di un file scaricato parzialmente se esiste un corrispondente file di controllo.
dir=${HOME}/Desktop
Archivia i file scaricati in ~/Desktop.
file-allocation=none
Non prepara spazio su disco prima che cominci il download. (Valore predefinito: 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.
Esempio di file di input #1
  • Scarica aria2-1.10.0.tar.bz2 da due fonti separate in ~/Desktop per unirle in aria2-1.10.0.tar.bz2
http://aria2.net/files/stable/aria2-1.10.0/aria2-1.10.0.tar.bz2[link interrotto 2020-08-02]    https://sourceforge.net/projects/aria2/files/stable/aria2-1.10.0/aria2-1.10.0.tar.bz2
Esempio di file di input #2
  • Scarica aria2-1.9.5.tar.bz2 e lo salva in /file/old come aria2.old.tar.bz2 &
  • Scarica aria2-1.10.0.tar.bz2 e lo salva in ~/Desktop come aria2.new.tar.bz2
http://aria2.net/files/stable/aria2-1.9.5/aria2-1.9.5.tar.bz2[link interrotto 2020-08-02]
  dir=/file/old
  out=aria2.old.tar.bz2
http://aria2.net/files/stable/aria2-1.10.0/aria2-1.10.0.tar.bz2[link interrotto 2020-08-02]
  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.
Suggerimento: See aria2c -help#all and the aria2 man page for a complete list of configuration options.

Example aria2.rapidshare

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(3) 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.
arch ~ $ cd /file
arch /file  $ chmod 600 /file/aria2.rapidshare
arch /file $ 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.
Suggerimento: The example configuration file can also be applied to Hotfile, DepositFiles, et.al.
Nota: Command-line options always take precedence over options listed in a configuration file.

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.
Nota: If both seed-ratio and seed-time are specified, seeding ends when at least one of the conditions is satisfied.

Frontends

In order to use frontends start aria2c with --enable-rpc option. Here is a list of available UIs.

Attenzione: Note that configurations changed using these tools are not stored.
  • Diana — A command line tool
https://github.com/baskerville/diana || diana-gitAUR
  • Webui — Html frontend
https://github.com/ziahamza/webui-aria2 ||

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)" }

Useful Tips & Tricks

pacman XferCommand

aria2c 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. The following example creates an aria2c executable with HTTP/HTTPS, FTP download and asynchronous DNS support only. See the Arch Build System page for further details.

Minimal PKGBUILD Example

pkgname=aria2
pkgver=1.10.0
pkgrel=100
pkgdesc="Download utility that supports HTTP(S) and FTP"
arch=('i686' 'x86_64')
url="http://aria2.sourceforge.net/"
license=('GPL')
depends=('c-ares' 'gnutls' 'zlib' 'ca-certificates')
source=(https://downloads.sourceforge.net/aria2/aria2-${pkgver}.tar.bz2)
md5sums=('1386df9b2003f42695062a0e1232e488')

build() {
  cd ${srcdir}/${pkgname}-${pkgver}

 ./configure --disable-bittorrent --disable-metalink \
 --disable-dependency-tracking --disable-xmltest --disable-nls \
 --without-sqlite3 --without-libxml2 --without-libexpat \
 --with-ca-bundle=/etc/ssl/certs/ca-certificates.crt --prefix=/usr

 make
}

package() {
	cd ${srcdir}/${pkgname}-${pkgver}
	make DESTDIR=${pkgdir} install
}

aria2 sometimes stops downloading without exiting

You can use this little script to restart the download every 30 minutes:

 #! /bin/bash
 
 if [ ! -x /usr/bin/aria2c ]; then
     echo "aria2c is not installed"
     exit 1
 fi
 
 if [ ! -d ~/.torrentdl ]; then
     mkdir ~/.torrentdl
 fi
 
 while :; do
     for i in $@; do
         MAGNET=false
 	if [[ "$i" = magnet* ]]; then
 	    MAGNET=true
 	elif [ ! -f "$i" ]; then
 	    echo "The file ('$i') is not given or does not exist"
 	    exit 1
 	fi
 	if ! aria2c --hash-check-only=true "$i" &> /dev/null; then
 	    aria2c "$i"
 	    sleep 30m && kill -9 $(pidof aria2c)
 	else
 	    echo "Torrent is downloaded!"
 	fi
     done
 done
 

Riferimenti esterni