aria2
Große Dateien, langsame Server, viele Downloads, Torrents
- Bis zu 10× schneller, wenn ein Server jede Verbindung begrenzt
- BitTorrent, Metalink und Mirrors eingebaut
- Ein Download-Server, den Sie über RPC steuern
Alle drei laden Dateien über die Kommandozeile, sind aber für unterschiedliche Aufgaben gebaut. Wir haben sie nebeneinander auf demselben Rechner und mit denselben Testservern laufen lassen und jede Zahl notiert.
aria2
wget
curl
Mirrors und Filehoster begrenzen oft die Geschwindigkeit einer einzelnen Verbindung. Unser Testserver erlaubte 2 MiB/s pro Verbindung auf einer Leitung mit 24 MiB/s. Dateigröße: 50 MB.
| Programm | Befehl | Sekunden |
|---|---|---|
| wget | 24,0 | wget URL · 24,0 s |
| curl | 24,0 | curl -O URL · 24,0 s |
| aria2, 1 Verbindung | 24,1 | aria2c URL · 24,1 s |
| aria2 -x16 -s16 | 12,2 | aria2c -x16 -s16 URL · 12,2 s |
| aria2 -x16 -s16 -k1M | 2,3 | aria2c -x16 -s16 -k1M URL · 2,3 s |
Mit einer Verbindung brauchen alle drei 24 Sekunden; der Server bestimmt das Tempo. aria2 mit 16 Verbindungen brauchte 12,2 Sekunden, weil sein Standardwert -k 20M eine 50-MB-Datei in nur 2 Teile aufteilt. Mit -k1M nutzte es alle 16 Verbindungen und war nach 2,3 Sekunden fertig.
Zwanzig 2-MB-Dateien von einem Server, der jeder Anfrage 80 ms Latenz hinzufügt und jede Verbindung auf 2 MiB/s begrenzt. wget und curl ohne Zusatzoptionen laden eine Datei nach der anderen; curl --parallel und aria2 laden mehrere gleichzeitig.
| Programm | Befehl | Sekunden |
|---|---|---|
| wget -i | 21,8 | wget -i urls.txt · 21,8 s |
| curl, nacheinander | 21,9 | xargs -n1 curl -O < urls.txt · 21,9 s |
| curl --parallel | 5,5 | curl --parallel --parallel-max 5 -O … · 5,5 s |
| aria2c -i | 4,5 | aria2c -i urls.txt · 4,5 s |
| aria2c -i -j16 -x4 | 2,0 | aria2c -i urls.txt -j16 -x4 -k1M · 2,0 s |
aria2 führt standardmäßig 5 Downloads gleichzeitig aus und ist damit etwas schneller als curl --parallel mit demselben Limit. Mit -j16 -x4 erreichte es die Grenze der Leitung: 2,0 Sekunden gegenüber 21,8 bei wget. Alle fünf Durchläufe erzeugten identische Dateien.
Auf einem lokalen Server ohne Limit luden alle drei die 50-MB-Datei in unter einer Sekunde, und wget und curl waren etwas schneller als aria2, das zuerst Speicherplatz für die Datei reserviert. Lastet bereits eine Verbindung Ihre Leitung aus, können zusätzliche Verbindungen nichts an Geschwindigkeit hinzufügen.
Gemessen während desselben HTTP-Downloads. „Eigener Speicher“ ist das, was das Programm für sich selbst belegt hat; die Gesamtsumme enthält zusätzlich gemeinsam genutzte Systembibliotheken.
wget ist am sparsamsten. aria2 braucht mehr, weil es eine Download-Engine, einen Festplattencache und den BitTorrent-Code bereithält, doch 4,5 MiB sind immer noch wenig: Die offiziellen Werte für aria2 liegen bei 4–9 MiB.
Wir haben jedes Programm mitten im gedrosselten Download angehalten und neu gestartet. Alle drei endeten mit einer korrekten Datei: wget mit -c, curl mit -C -, aria2 mit -c. aria2 setzte sogar ohne -c fort, weil seine .aria2-Steuerdatei festhält, welche Teile fertig sind. Beachten Sie, dass aria2 zuerst die volle Dateigröße reserviert, sodass eine unvollständige Datei bereits ihre endgültige Größe anzeigt.
Viele Download-Links leiten auf einen Mirror weiter. wget und aria2 folgen Weiterleitungen standardmäßig. curl nicht: Ohne -L speicherte es eine leere Datei und beendete sich trotzdem mit Code 0, sodass ein Skript nichts bemerken würde. Verwenden Sie für Downloads immer curl -L.
Geprüft anhand der Dokumentation jedes Programms und, wo möglich, durch Ausführen.
| aria2 | wget | curl | |
|---|---|---|---|
| Eine Datei über viele Verbindungen | Ja | Nein | Nein |
| Eine Datei gleichzeitig von mehreren Mirrors | Ja | Nein | Nein |
| BitTorrent und Magnet-Links | Ja | Nein | Nein |
| Metalink | Ja | Manche Builds | Nein |
| Unterbrochenen Download fortsetzen | Ja | Ja | Ja |
| Fernsteuerung (RPC) | Ja | Nein | Nein |
| Komplette Website spiegeln | Nein | Ja | Nein |
| Upload, 25+ Protokolle, APIs | Nein | Nein | Ja |
| Auf den meisten Linux-Systemen vorinstalliert | Nein | Ja | Ja |
Jede Zeile außer den letzten beiden haben wir gegen unseren Testserver ausgeführt, mit eigenen Werten für die Zahlen; jede erzeugte die korrekte Datei.
| Aufgabe | wget | curl | aria2c |
|---|---|---|---|
| Eine Datei herunterladen | wget URL | curl -O URL | aria2c URL |
| Unter einem anderen Namen speichern | wget -O name.iso URL | curl -o name.iso URL | aria2c -o name.iso URL |
| In einen Ordner speichern | wget -P dir URL | curl --output-dir dir -O URL | aria2c -d dir URL |
| Fortsetzen | wget -c URL | curl -C - -O URL | aria2c -c URL |
| Geschwindigkeit auf 1 MiB/s begrenzen | wget --limit-rate=1m URL | curl --limit-rate 1M -O URL | aria2c --max-download-limit=1M URL |
| Bis zu 10 Wiederholungsversuche | wget --tries=10 URL | curl --retry 10 -O URL | aria2c --max-tries=10 URL |
| Einen Header senden | wget --header="X-Key: 1" URL | curl -H "X-Key: 1" -O URL | aria2c --header="X-Key: 1" URL |
| User-Agent festlegen | wget -U "Agent/1" URL | curl -A "Agent/1" -O URL | aria2c -U "Agent/1" URL |
| HTTP-Anmeldung | wget --user=U --password=P URL | curl -u U:P -O URL | aria2c --http-user=U --http-passwd=P URL |
| Eine Liste von URLs herunterladen | wget -i urls.txt | xargs -n1 curl -O < urls.txt | aria2c -i urls.txt |
| Zertifikatsprüfung überspringen | wget --no-check-certificate URL | curl -k -O URL | aria2c --check-certificate=false URL |
| Weiterleitungen folgen | wget URL | curl -L -O URL | aria2c URL |
| Eine Datei über 16 Verbindungen | Nicht möglich | Nicht möglich | aria2c -x16 -s16 -k1M URL |
| Einen Torrent herunterladen | Nicht möglich | Nicht möglich | aria2c file.torrent |
| Eine Website kopieren | wget -r -np URL | Nicht möglich | Nicht möglich |
aria2c -x16 -s16 -k1Maria2c -i urls.txt -j16aria2caria2c --enable-rpc mit einer WebUIwget -r -npcurlwget oder curl -L, bereits installiert