2011-01-20 17 views

Odpowiedz

2

Cóż, zawsze możesz uruchomić wiele instancji wget, nie?

przykład:

wget -r http://somesite.example.org/ & 
wget -r http://othersite.example.net/ & 

itp składnia ta działa w dowolnym środowisku uniksopodobnym (np Linux lub MacOS); nie wiem, jak to zrobić w systemie Windows.

Sam Wget nie obsługuje operacji wielowątkowych - przynajmniej ani manpage ani its website nie wspomina o tym. W każdym razie, ponieważ wget obsługuje HTTP keepalive, wąskim gardłem jest zwykle przepustowość połączenia, a nie liczba jednoczesnych pobrań.

+0

'wget -r --child 100 http: // site.com szuka czegoś takiego. – c2h2

+0

@ c2h2: Zgodnie ze stroną podręcznika wget (http://linux.die.net/man/1/wget) i dokumentami wget na jej stronie internetowej (http://www.gnu.org/software/wget/manual/wget .html), nie ma takiej opcji (lub czegoś podobnego) - 'wget' jest jednowątkowe. Przepraszam. – Piskvor

+0

dzięki! Też tak myślałem. – c2h2

8

Znalazłem przyzwoite rozwiązanie.

Przeczytaj oryginalny w http://www.linuxquestions.org/questions/linux-networking-3/wget-multi-threaded-downloading-457375/

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

kopiowane tyle razy, ile uznają za stosowny, aby mieć jak najwięcej procesów pobieranie. To nie jest tak eleganckie, jak prawidłowo wielowątkowa aplikacja, ale będzie to robić tylko z niewielką ilością nad głową. Kluczem tutaj jest przełącznik "-N". Oznacza to, że plik należy przesłać tylko pod numer , jeśli jest nowszy niż na dysku. W ten sposób (głównie) uniemożliwisz każdemu procesowi pobranie tego samego pliku z innego już pobranego procesu, który został już pobrany , ale pomiń ten plik i pobierz to, czego inny proces nie pobrał. Używa znacznika czasu jako sposobu na wykonanie tego, stąd niewielki narzut.

Działa to doskonale dla mnie i oszczędza dużo czasu. Nie należy wykonywać zbyt wielu procesów, ponieważ może to spowodować nasycenie połączenia z witryną sieci Web i odznaczenie właściciela. Przechowywać około około 4 lub więcej. Jednak numer jest ograniczony tylko przez procesor i przepustowość sieci na obu końcach.

+0

Wow powinien działać, spróbuję – c2h2

+0

Czy to działa dla ciebie? Używam go na dwóch serwerach bez problemów. – Julian

3

Zastosowanie axel pobrać z wielu połączeń

apt-get install axel 

axel http://example.com/file.zip 
+0

lub aget http://www.enderunix.org/aget/, ale nie są to rozwiązania rekursywne (dobre dla innych osób, które dostały się na to pytanie, szukając jednego) – Orwellophile

5

Dzięki zastosowaniu równoległych wget wykorzystujących wyłącznik xargs, rozwiązanie to wydaje się o wiele lepiej:

https://stackoverflow.com/a/11850469/1647809

+0

Jest to dobre tylko wtedy, gdy znasz wszystkie adresy URL do pobrania w postęp.Tak nie jest, gdy chcesz zwierciadlować witrynę. – Ray

Powiązane problemy