it-swarm.com.de

wget download mit mehreren gleichzeitigen verbindungen

Ich verwende wget zum Herunterladen von Website-Inhalten, lädt aber die Dateien einzeln herunter.

Wie kann ich mit 4 gleichzeitigen Verbindungen einen Wget-Download durchführen?

177
jubo

benutze die aria2:

aria2c -x 16 [url]
#          |
#          |
#          |
#          ----> the number of connections 

http://aria2.sourceforge.net

Ich liebe es !!

185
gmarian

Wget unterstützt nicht mehrere Socket-Verbindungen, um das Herunterladen von Dateien zu beschleunigen.

Ich denke, wir können ein bisschen besser als gmarianische Antwort.

Der richtige Weg ist die Verwendung von aria2 .

aria2c -x 16 -s 16 [url]
#          |    |
#          |    |
#          |    |
#          ---------> the number of connections here
96
thomas.han

Da GNU parallel noch nicht erwähnt wurde, möchte ich einen anderen Weg geben:

cat url.list | parallel -j 8 wget -O {#}.html {}
38
Nikolay Shmyrev

Ich habe (wahrscheinlich) eine Lösung gefunden

Beim Herunterladen einiger tausend Protokolldateien von einem Server zum nächsten hatte ich plötzlich die Notwendigkeit, ernsthafte Multithreading-Operationen durchzuführen Download in BSD, vorzugsweise mit Wget, da dies der einfachste Weg war Ich könnte daran denken, damit umzugehen. Ein wenig Umschauen führte mich zu dieses kleine Nugget:

wget -r -np -N [url] &
wget -r -np -N [url] &
wget -r -np -N [url] &
wget -r -np -N [url]

Wiederholen Sie einfach den wget -r -np -N [url] für so viele Threads, wie Sie benötigen ... Nun, das ist nicht schön und es gibt sicherlich bessere Wege. aber wenn du etwas schnell und schmutzig willst, sollte es den Trick tun ...

Hinweis: Die Option -N bewirkt, dass wget nur "neuere" Dateien herunterlädt. Dies bedeutet, dass Dateien nur dann überschrieben oder erneut heruntergeladen werden, wenn sich ihr Zeitstempel auf dem Server ändert.

37
SMUsamaShah

Ein anderes Programm, das dies kann, ist axel.

axel -n <NUMBER_OF_CONNECTIONS> URL

Ubuntu Manpage .

15
Lord Loh.

Ein neues (aber noch nicht veröffentlichtes) Tool ist Mget . Es hat bereits viele von Wget bekannte Optionen und eine Bibliothek, mit der Sie problemlos (rekursives) Herunterladen in Ihre eigene Anwendung integrieren können.

Zur Beantwortung Ihrer Frage:

mget --num-threads=4 [url]

UPDATE

Mget wurde jetzt als Wget2 entwickelt, wobei viele Fehler und weitere Funktionen (z. B. HTTP/2-Unterstützung) behoben wurden.

--num-threads ist jetzt --max-threads.

12
rockdaboot

Ich empfehle dringend, httrack zu verwenden.

zB: httrack -v -w http://example.com/

Standardmäßig wird eine Spiegelung mit 8 gleichzeitigen Verbindungen ausgeführt. Httrack hat unzählige Möglichkeiten, um zu spielen. Guck mal.

11

Wie andere Poster bereits erwähnt haben, schlage ich vor, dass Sie sich aria2 ansehen. Auf der Ubuntu-Manpage für Version 1.16.1:

aria2 ist ein Dienstprogramm zum Herunterladen von Dateien. Die unterstützten Protokolle sind HTTP (S), FTP, BitTorrent und Metalink. aria2 kann eine Datei aus mehreren Quellen/Protokollen herunterladen und versucht, die maximale Download-Bandbreite zu nutzen. Es unterstützt das gleichzeitige Herunterladen einer Datei von HTTP (S)/FTP und BitTorrent, während die von HTTP (S)/FTP heruntergeladenen Daten in den BitTorrent-Schwarm hochgeladen werden. Unter Verwendung der Chunk-Prüfsummen von Metalink überprüft aria2 automatisch Datenblöcke, während eine Datei wie BitTorrent heruntergeladen wird.

Sie können das Flag -x verwenden, um die maximale Anzahl von Verbindungen pro Server anzugeben (Standard: 1):

aria2c -x 16 [url] 

Wenn dieselbe Datei an mehreren Orten verfügbar ist, können Sie von allen Dateien herunterladen. Verwenden Sie das Flag -j, um die maximale Anzahl paralleler Downloads für jeden statischen URI anzugeben (Standard: 5).

aria2c -j 5 [url] [url2]

Weitere Informationen finden Sie unter http://aria2.sourceforge.net/ . Für Informationen zur Verwendung ist die Manpage wirklich beschreibend und enthält einen Abschnitt mit Verwendungsbeispielen. Eine Online-Version finden Sie unter http://aria2.sourceforge.net/manual/de/html/README.html .

10
runejuhl

wget kann nicht in mehreren Verbindungen heruntergeladen werden, stattdessen können Sie andere Programme wie aria2 verwenden.

7
user181677

versuchen Sie es mit pcurl

http://sourceforge.net/projects/pcurl/

verwendet curl anstelle von wget, Downloads in 10 Segmenten parallel.

5
Rumble

make kann leicht parallelisiert werden (z. B. make -j 4). Zum Beispiel hier ein einfaches Makefile, das ich verwende, um Dateien mit wget parallel herunterzuladen:

BASE=http://www.somewhere.com/path/to
FILES=$(Shell awk '{printf "%s.ext\n", $$1}' filelist.txt)
LOG=download.log

all: $(FILES)
    echo $(FILES)

%.ext:
    wget -N -a $(LOG) $(BASE)/[email protected]

.PHONY: all
default: all
2
Paul Price

Sie sagen immer, es kommt darauf an, aber wenn es darum geht, eine Website zu spiegeln, existiert das Beste httrack . Es ist super schnell und einfach zu arbeiten. Der einzige Nachteil ist das sogenannte Support-Forum. Sie können sich jedoch mithilfe von offizielle Dokumentation orientieren. Es verfügt sowohl über eine grafische Benutzeroberfläche als auch über eine CLI-Schnittstelle und unterstützt Cookies, lesen Sie einfach die Dokumente. Dies ist die beste Methode.

httrack -c8 [url]

Standardmäßig maximale Anzahl gleichzeitiger Verbindungen begrenzt auf 8, um Serverüberlastung zu vermeiden

2
pouya

verwenden Sie xargs, um wget in mehreren Dateien parallel arbeiten zu lassen

#!/bin/bash

mywget()
{
    wget "$1"
}

export -f mywget

# run wget in parallel using 8 thread/connection
xargs -P 8 -n 1 -I {} bash -c "mywget '{}'" < list_urls.txt

Aria2-Optionen, Der richtige Weg mit Dateien, die kleiner als 20 MB sind

aria2c -k 2M -x 10 -s 10 [url]

-k 2M teilt die Datei in einen 2-MB-Block auf

-k oder --min-split-size hat einen Standardwert von 20 MB. Wenn Sie diese Option und die Datei nicht unter 20 MB setzen, wird sie nur in einer einzelnen Verbindung ausgeführt, unabhängig von dem Wert von -x oder -s.

0
ewwink

benutzen

aria2c -x 10 -i websites.txt >/dev/null 2>/dev/null &

geben Sie in websites.txt 1 URL pro Zeile ein. Beispiel:

https://www.example.com/1.mp4
https://www.example.com/2.mp4
https://www.example.com/3.mp4
https://www.example.com/4.mp4
https://www.example.com/5.mp4
0
David Corp