Wie macht man Wget schneller oder Multithreading?

39

Ich habe gerade meine Computerhardware (CPU + Motherboard + Grafikkarte + Speicher + Festplatte) aktualisiert, sodass die Installation eines neuen Betriebssystems erforderlich ist. Ich habe versucht, debian-6.0.6-amd64-netinst.isomit wgetBefehl herunterzuladen, aber die Geschwindigkeit ist so langsam, dass ich es nicht ertragen konnte. 4Kb/s ~ 17 Kb/s, langsam wie eine laufende Schildkröte oder noch langsamer, wenn ich Chrome verwende.

Ich habe die Hilfeinformationen von wget gelesen , es scheint, als gäbe es keine Optionen, die es schneller machen könnten.

Gibt es sowieso wget schneller zu machen ? Oder ist es möglich, es Multithreading- Download zu machen ?

PS: Meine Bandbreite beträgt 4M. Ich benutze diesen Befehl:

wget -c url  http://hammurabi.acc.umu.se/debian-cd/6.0.6/amd64/iso-cd/debian-6.0.6-amd64-netinst.iso
Teifi
quelle
1
wget benutzt nur deine Verbindung. Wenn es langsam ist, ist das Ihre Verbindung zum Server. Vielleicht bist du langsam, vielleicht ist der Server. Übrigens 4 MBit = 0,5 MBit / s, ganz zu schweigen von Verlust usw.
Dr_Bunsen
@Dr_BunsenVielen Dank für Ihren Rat. Ich habe den Befehl ausprobiert, der @Gufranvorschlug:, axelverglichen mit der Breite wget, axelist schneller als je zuvor. Ich denke, in den meisten Situationen liegt der Engpass meiner Download-Geschwindigkeit bei 1 . etwas belegt die bandbreite (wie du sagtest: ich bin langsam ). 2 . Single-Threading. 3 . Der Server ist langsam. Aber ich habe nichts mit dem 1 & 3 Punkt zu tun .
Teifi
@Teifi Wenn axelbei Verwendung desselben Remoteservers die Leistung von Multithreads besser ist als die von Wget , ist die Latenz zwischen Ihrer Box und dem Remoteserver sehr hoch. Überprüfen Sie Ihren Ping zum Remote-Server.
John Siu
Hast du HTTrack ausprobiert? httrack.com/page/1/en/index.html
amanthethy

Antworten:

52

Warum nicht versuchen axel? Es ist ein vollwertiger Kommandozeilen-basierter Downloader.

Installiere axelund spawne den Download von

axel -a -n [Num_of_Thread] link1 link2 link3 ...

Wo '[Num_of_Thread]'ist die Anzahl der parallelen Verbindungen, die für jeden Link erstellt werden sollen, den Sie herunterladen möchten?

-a zeige einfach einen verbesserten Fortschrittsbalken.

Im Gegensatz zu vielen anderen Download-Managern lädt Axel alle Daten mit einem einzigen Thread direkt in die Zieldatei herunter. Dies spart am Ende etwas Zeit, da das Programm nicht alle heruntergeladenen Teile verketten muss.

Gufran
quelle
Ich frage mich, ob es eine Möglichkeit gibt, vielleicht über Alias ​​und Wrapper axel zu verwenden, wenn verfügbar, anstatt curl oder wget, es sei denn, die Befehlszeile enthält mehr als einen Parameter.
Sorin
1
Ich denke, dieser Vorschlag reicht nicht aus, um eine Datei herunterzuladen. Bitte korrigieren Sie mich bei Bedarf. Mein Versuch hier askubuntu.com/q/813483/25388
Léo Léopold Hertz 준영
54

Ich habe es axelauf Empfehlung von Gufran versucht , aber es hat mich sehr enttäuscht. Mein Ziel war es, einen Ersatz für die CLI zu finden, DownThemAllda dieser die CPU und die Festplatte belastet und das gesamte System verlangsamt, selbst auf einem 8-Core-Mac Pro. Ich wollte auch einen Multithread-Ersatz für wgetund curlnicht irgendein Trick eines Skripts, das mehrere Instanzen davon ausführt. Also habe ich weiter gesucht und festgestellt, dass es meiner Meinung nach den derzeit modernsten Multithread-CLI-Downloader gibt - aria2 . Das große Problem, das ich hatte, axelwar, dass es das Herunterladen von Dateien über SSL "vortäuschte". Ich habe es damit erwischt tcdump. Es wurden httpsLinks wie gewohnt heruntergeladenhttp. Das hat mich wirklich sauer gemacht und wenn ich nicht nachgesehen hätte, hätte ich ein falsches Sicherheitsgefühl gehabt. Ich bezweifle, dass viele Menschen über diese schwerwiegende Sicherheitsverletzung Bescheid wissen. Zurück zu aria2, es ist fortgeschrittener als jeder andere Downloader. Es unterstützt die Protokolle HTTP (S), FTP, BitTorrent und Metalink, ist plattformübergreifend und eine Download-Guerilla. Im Gegensatz zu DTA wird die Bandbreite meines ISPs ohne Belastung der CPU oder der Festplatte maximal genutzt. Die Manpage ist gigantisch. Ich werde nie mehr als ein paar der vielen Optionen verwenden. Und oh, übrigens, ich habe die SSL-Leistung mit überprüft tcdumpund es ist solide, keine Fälschung. Ich habe ein Skript geschrieben, das das Verhalten von DTA nachahmt, wenn nicht sogar seine Zweckmäßigkeit.

Der grundlegende Befehl, den ich verwende, um die maximale Bandbreite zu erhalten, ist

aria2c --file-allocation=none -c -x 10 -s 10 -d "mydir" URL

-cDownload ermöglicht Fortsetzung , wenn es unterbrochen wird, -x 10und -s 10erlaubt bis 10 Verbindungen pro Server und bis -d "mydir"Ausgängen Datei in dem Verzeichnis mydir.

aria2files.sh:

#!/bin/bash

filename="$1" # get filename from command line argument

while read -r line
do
    if [ "$line" ] # skip blank lines
    then
        if [[ "$line" =~ (https?|ftp)\:\/\/ ]] # line contains a URL, download file
        then
            echo "URL: '$line'"
            aria2c --file-allocation=none -c -x 10 -s 10 -d "$currdir" "$line"
        else # line contains a directory name, create directory if not already present
            echo "Directory: '$line'"
            currdir="$line"
            if [ ! -d "$currdir" ]
            then
                mkdir -p "$currdir" # '-p' enables creation of nested directories in one command
            fi
        fi
    fi
done < "$filename"

Es liest eine Textdatei des Formats:

files.txt:

dierctory 1
url1
url2
…
directory 2/subdirectory/sub-subdirectory/…
url3
url4
…
…
…

Das Skript liest den Dateinamen von der Befehlszeile:

aria2files.sh files.txt

Es erstellt die Verzeichnisse und lädt sie herunter. Es kann verschachtelte Verzeichnisse erstellen, wie im zweiten Beispiel gezeigt.

Weitere Informationen finden Sie in meinem Post- Bash-Skript zum Herunterladen von Dateien von URLs in bestimmte Verzeichnisse, die in einer Textdatei aufgeführt sind .

hmj6jmh
quelle
Können Sie Ihre Methode auch hier anwenden ? Askubuntu.com/q/813483/25388 Mein erfolgloser Versuch aria2c -x10 -s10 http://horatio.cs.nyu.edu/mit/tiny/data/tiny_images.bin.
Léo Léopold Hertz 준영
Vielen Dank @ hmj6jmh! Für die Aufzeichnung auf einem Rapsberry Pi Model 3: Gibt wget -4 -c <https://URL/ISO_FILE>mir ~ 40 KB / s ( 87300K .......... .......... 11% 38.7K 4h28mwenn die gleiche Datei mit aria2c --disable-ipv6 -c~ 250 KB / s ( 144MiB/717MiB(20%) CN:1 DL:250KiB ETA:39m3s]) heruntergeladen wird .
Tuk0z
1
Wenn Sie (wie ich) Sourceforge vermeiden möchten, ist aria2 Teil der Repositorys, sodass Sie es mitsudo apt install aria2
Bar
Gute Antwort. Bei Sites, die nur HTTPS erzwingen, axelfunktioniert die direkte Aktualisierung nicht. Es scheint aktualisiert worden zu sein, um HTTPS zu verwenden, aber diese Version befindet sich noch nicht in meinen Repositorys. aria2funktionierte gut für mich.
WindowsEscapist