123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- aria2 - The ultra fast download utility
- =======================================
- :Author: Tatsuhiro Tsujikawa
- :Email: tujikawa_at_users_dot_sourceforge_dot_net
- Disclaimer
- ----------
- This program comes with no warranty.
- You must use this program at your own risk.
- Introduction
- ------------
- aria2 is a utility for downloading files. The supported protocols are
- HTTP(S), FTP, BitTorrent, and Metalink. aria2 can download a file from
- multiple sources/protocols and tries to utilize your maximum download
- bandwidth. It supports downloading a file from HTTP(S)/FTP and
- BitTorrent at the same time, while the data downloaded from
- HTTP(S)/FTP is uploaded to the BitTorrent swarm. Using Metalink's
- chunk checksums, aria2 automatically validates chunks of data while
- downloading a file like BitTorrent.
- Here is a list of features.
- * Command-line interface
- * Download files through HTTP(S)/FTP/BitTorrent
- * Segmented downloading
- * Metalink version 4 (RFC5854) support(HTTP/FTP/BitTorrent)
- * Metalink version 3.0 support(HTTP/FTP/BitTorrent)
- * HTTP/1.1 implementation
- * HTTP Proxy support
- * HTTP BASIC authentication support
- * HTTP Proxy authentication support
- * Well-known environment variables for proxy: http_proxy, https_proxy,
- ftp_proxy, all_proxy and no_proxy
- * HTTP gzip, deflate content encoding support
- * Verify peer using given trusted CA certificate in HTTPS
- * Client certificate authentication in HTTPS
- * Chunked transfer encoding support
- * Load Cookies from file using the Firefox3 format, Chromium/Google Chrome
- and the Mozilla/Firefox
- (1.x/2.x)/Netscape format.
- * Save Cookies in the Mozilla/Firefox (1.x/2.x)/Netscape format.
- * Custom HTTP Header support
- * Persistent Connections support
- * FTP through HTTP Proxy
- * Download/Upload speed throttling
- * BitTorrent extensions: Fast extension, DHT, PEX, MSE/PSE, Multi-Tracker
- * BitTorrent http://getright.com/seedtorrent.html[WEB-Seeding]. aria2
- requests chunks more than piece size to reduce the request
- overhead. It also supports pipelined requests with piece size.
- * BitTorrent Local Peer Discovery
- * Rename/change the directory structure of BitTorrent downloads
- completely
- * XML-RPC interface
- * Run as a daemon process
- * Selective download in multi-file torrent/Metalink
- * Chunk checksum validation in Metalink
- * Can disable segmented downloading in Metalink
- * Netrc support
- * Configuration file support
- * Download URIs found in a text file or stdin and the destination directory and
- output filename can be specified optionally
- * Parameterized URI support
- * IPv6 support
- Dependency
- ----------
- .External Library Dependency
- [options="header"]
- |====================================================
- |features |dependency
- |HTTPS |GnuTLS or OpenSSL
- |BitTorrent |GnuTLS+Libgcrypt or OpenSSL
- |Metalink |libxml2 or Expat.
- |Checksum |GnuTLS+Libgcrypt or OpenSSL
- |gzip, deflate in HTTP |zlib
- |Async DNS |C-Ares
- |Firefox3/Chromium cookie|libsqlite3
- |XML-RPC |libxml2 or Expat.
- |====================================================
- Note;;
- GNU TLS has precedence over OpenSSL if both libraries are installed.
- If you prefer OpenSSL, run configure with \--without-gnutls.
- Note;;
- libxml2 has precedence over Expat if both libraries are installed.
- If you prefer Expat, run configure with \--without-libxml2.
- You can disable BitTorrent, Metalink support by providing
- \--disable-bittorrent, \--disable-metalink respectively to configure
- script.
- In order to enable async DNS support, you need c-ares.
- * c-ares: http://daniel.haxx.se/projects/c-ares/
- How to build
- ------------
- In order to build aria2 from the source package, you need following
- development packages(package name may vary depending on the
- distribution you use):
- * libgnutls-dev (Required for HTTPS, BitTorrent, Checksum support)
- * libgpg-error-dev (Required for BitTorrent, Checksum support)
- * libgcrypt-dev (Required for BitTorrent, Checksum support)
- * libc-ares-dev (Required for async DNS support)
- * libxml2-dev (Required for Metalink support)
- * zlib1g-dev (Required for gzip, deflate decoding support in HTTP)
- * libsqlite3-dev (Required for Firefox3/Chromium cookie support)
- You can use libssl-dev instead of
- libgnutls-dev,libgpg-error-dev,libgcrypt-dev:
- * libssl-dev (Required for HTTPS, BitTorrent, Checksum support)
- You can use libexpat1-dev instead of libxml2-dev:
- * libexpat1-dev (Required for Metalink support)
- You may also need pkg-config to detect the above mentioned libraries.
- The quickest way to build aria2 is just type following commands:
- -------------
- $ ./configure
- $ make
- -------------
- The configure script checks available libraries and enables the features
- as much as possible because all the features are enabled by default.
- Since 1.1.0, aria2 checks the certificate of HTTPS servers by default.
- If you build with HTTPS support, I recommend to supply the path to the
- CA bundle file. For example, in Debian the path to CA bundle file is
- '/etc/ssl/certs/ca-certificates.crt' (in ca-certificates package). This
- may vary depending on your distribution. You can give it to
- configure script using \--with-ca-bundle option:
- -------------------------------------------------------------------
- $ ./configure --with-ca-bundle='/etc/ssl/certs/ca-certificates.crt'
- $ make
- -------------------------------------------------------------------
- Without \--with-ca-bundle option, you will encounter the error when
- accessing HTTPS servers because the certificate cannot be verified
- without CA bundle. In such case, you can specify the CA bundle file
- using aria2's \--ca-certificate option. If you don't have CA bundle
- file installed, then the last resort is disable the certificate
- validation using \--check-certificate=false.
- The executable is 'aria2c' in src directory.
- aria2 uses CppUnit for automated unit testing. To run the unit test:
- ------------
- $ make check
- ------------
- BitTorrrent
- -----------
- About filename
- ~~~~~~~~~~~~~~
- The filename of the downloaded file is determined as follows:
- single-file mode::
- If "name" key is present in .torrent file, filename is the value
- of "name" key. Otherwise, filename is the basename of .torrent
- file appended by ".file". For example, .torrent file is
- "test.torrrent", then filename is "test.torrent.file". The
- directory to store the downloaded file can be specified by -d
- option.
- multi-file mode::
- The complete directory/file structure mentioned in .torrent file
- is created. The directory to store the top directory of
- downloaded files can be specified by -d option.
- Before download starts, a complete directory structure is created if
- needed. By default, aria2 opens at most 100 files mentioned in
- .torrent file, and directly writes to and reads from these files.
- The number of files to open simultaneously can be controlled by
- \--bt-max-open-files option.
- DHT
- ~~~
- aria2 supports mainline compatible DHT. By default, the routing table
- for IPv4 DHT is saved to $HOME/.aria2/dht.dat and the routing table
- for IPv6 DHT is saved to $HOME/.aria2/dht6.dat. aria2 uses same port
- number to listen on for both IPv4 and IPv6 DHT.
- Other things should be noted
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * -o option is used to change the filename of .torrent file itself,
- not a filename of a file in .torrent file. For this purpose, use
- --index-out option instead.
- * The port numbers that aria2 uses by default are 6881-6999 for TCP
- and UDP.
- * aria2 doesn't configure port-forwarding automatically. Please
- configure your router or firewall manually.
- * The maximum number of peers is 55. This limit may be exceeded when
- download rate is low. This download rate can be adjusted using
- \--bt-request-peer-speed-limit option.
- * As of release 0.10.0, aria2 stops sending request message after
- selective download completes.
- Metalink
- --------
- The current implementation supports HTTP(S)/FTP/BitTorrent. The other
- P2P protocols are ignored. Both Metalink4 and Metalink version 3.0
- documents are supported.
- For checksum verification, md5, sha-1, sha-224, sha-256, sha-384 and
- sha-512 are supported. If multiple hash algorithms are provided, aria2
- uses stronger one. If whole file checksum verification fails, aria2
- doesn't retry the download and just exits with non-zero return code.
- The supported user preferences are version, language, location,
- protocol and os.
- If chunk checksums are provided in Metalink file, aria2 automatically
- validates chunks of data during download. This behavior can be turned
- off by a command-line option.
- If signature is included in a Metalink file, aria2 saves it as a file
- after the completion of the download. The filename is download
- filename + ".sig". If same file already exists, the signature file is
- not saved.
- In Metalink4, multi-file torrent could appear in metalink:metaurl
- element. Since aria2 cannot download 2 same torrents at the same
- time, aria2 groups files in metalink:file element which has same
- BitTorrent metaurl and downloads them from a single BitTorrent swarm.
- This is basically multi-file torrent download with file selection, so
- the adjacent files which is not in Metalink document but shares same
- piece with selected file are also created.
- netrc
- -----
- netrc support is enabled by default for HTTP(S)/FTP. To disable netrc
- support, specify -n command-line option. Your .netrc file should have
- correct permissions(600).
- References
- ----------
- * man aria2c
- * http://aria2.sourceforge.net/
- * http://sourceforge.net/apps/trac/aria2/wiki
- * http://tools.ietf.org/html/rfc5854
|