wget + многопоточность

Модератор: /dev/random

Аватара пользователя
demongloom
Сообщения: 454
Статус: Добрый Демон

wget + многопоточность

Сообщение demongloom »

Как субж реализовать?
Нужно именно консольная качалка.
Если жизнь твоя порвется, тебе новую сошьют.
Спасибо сказали:
Аватара пользователя
Bolverk
Бывший модератор
Сообщения: 1571
ОС: Cygwin

Re: wget + многопоточность

Сообщение Bolverk »

насколько мне известно, никак. А самое главное, я не могу понять, зачем она нужна, это многопоточность? Убедишь :devil_2:?
P.S. Если модераторы считают, что это призыв к флейму, пусть удаляют. Но я действительно считаю что многопоточная скачка не нужна. (Do it in a unix way...)
Спасибо сказали:
Аватара пользователя
StraNNicK
Бывший модератор
Сообщения: 1005
Статус: добрый хиппи

Re: wget + многопоточность

Сообщение StraNNicK »

axel
Многопоточное закачивание может существенно (в 2 и более раз) ускорить закачку.

Но я действительно считаю что многопоточная скачка не нужна. (Do it in a unix way...)

Хмм... А в чем в данном случае будет заключаться юникс-вэй - подождать подольше? ;)
Ушёл навсегда. В личку не заглядываю.
Спасибо сказали:
Аватара пользователя
Bolverk
Бывший модератор
Сообщения: 1571
ОС: Cygwin

Re: wget + многопоточность

Сообщение Bolverk »

(StraNNicK @ Вторник, 02 Ноября 2004, 16:37) писал(а):axel

Читаем...
For example, some FTP sites limit the speed of each connection, therefore opening more than one connection at a time multiplies the allowable bandwidth.
... тем самым поступая нечестно с владельцами этого фтп. Не просто же так они его ограничили.
Be forewarned that some FTP operators don't like it when you do this.


You may either specify a list of mirrors to use or tell the program to search for mirrors.

А вот это уже действительно интересно, хотя я предпочитаю найти быстрейшее зеркало и скачивать целиком оттуда.

(StraNNicK @ Вторник, 02 Ноября 2004, 16:37) писал(а):Хмм... А в чем в данном случае будет заключаться юникс-вэй - подождать подольше?  ;)

Скажем так - fair play (см выше про ограничения).
P. S. Да, привычка - вторая натура. Я очень мало имел дела с инетом, который оплачивается по-временно, в основном по траффику. Но я не думаю, что закачка в несколько потоков может помочь при модемной связи...
Спасибо сказали:
snake
Бывший модератор
Сообщения: 677

Re: wget + многопоточность

Сообщение snake »

(demongloom @ Вторник, 02 Ноября 2004, 17:21) писал(а):Как субж реализовать?
Нужно именно консольная качалка.

Смотря что понимать под многопоточностью...
Конструкция вида:

Код: Выделить всё

wget url1&wget url2&.....&wget urln

Позволяет начать закачку сразу всех файлов одновременно -- каждый в своем потоке :thumbsup:
В реальности все не так, как на самом деле...
JabberID: zmeyk@jabber.ru
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: wget + многопоточность

Сообщение t.t »

(Bolverk @ Вторник, 02 Ноября 2004, 17:51) писал(а):Но я не думаю, что закачка в несколько потоков может помочь при модемной связи...
Подтверждаю практикой: реального прироста не видел ни разу. Вернее, теоретической возможности прироста: всё качал в один поток, всё со скоростью 110% от того, что по идее должен уметь выдавать мой 33600-модем в принципе.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
StraNNicK
Бывший модератор
Сообщения: 1005
Статус: добрый хиппи

Re: wget + многопоточность

Сообщение StraNNicK »

Я на выделенке. Прирост есть. Даже когда качаешь с одного зеркала (если оно не совсем тормозное) - почему - затрудняюсь ответить.

Далее - найти быстрейшее зеркало - задача для компа - нафига мне этим заморачиваться? Всё, что может быть автоматизировано - должно быть автоматизировано. ИМХО, в этом и есть юникс-вэй.
For example, some FTP sites limit the speed of each connection, therefore opening more than one connection at a time multiplies the allowable bandwidth.

... тем самым поступая нечестно с владельцами этого фтп. Не просто же так они его ограничили.

Не моя проблема. ;) Мне надо закачать и закачать быстро.
Если люди хотят ограничивать закачку одним потоком - они это сделают... ;)
Ушёл навсегда. В личку не заглядываю.
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: wget + многопоточность

Сообщение elide »

110% от того, что по идее должен уметь выдавать мой 33600-модем в принципе
вот буржуй.... 28.8 (: никакого ускорения от нескольких потоков... абсолютно...
слава роботам!
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: wget + многопоточность

Сообщение t.t »

(elide @ Среда, 03 Ноября 2004, 14:20) писал(а):вот буржуй.... 28.8 (:
Нисебе чего. Я думал, это я отстал от жизни с 33.6 :)
t.t добавил в 03.11.2004 16:09
А чего у тебя смайл не на том боку? Картинки не любишь?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

Re: wget + многопоточность

Сообщение madskull »

Многопоточный? Консольный? Хм, интересно... Линуксоиды мы, али нет?!!
Вот вам wget многопоточный :)

Код: Выделить всё

#!/bin/bash

do_thread()
{
    local tn=$1 url=$2 from=$3 sz=$4
    local outf="$(basename "$url")#$tn"
    touch "$outf.lock"
    head -c $from /dev/zero > "$outf"
    echo "Start thread #$tn (from:$from  size:$sz)"
    (
  wget -c -o "wget#$tn.log" -O "$outf" "$url" &
  local pid=$!
  while [ $(du -b "$outf" | awk '{print$1}') -lt $((from+$sz)) ]; do sleep 1; done
  ps | grep "$pid " | grep " wget$" &>/dev/null && kill $pid
    )
    head -c $((from+$sz)) "$outf" | tail -c $sz > "${outf}_"
    mv "${outf}_" "$outf"
    echo "Done thread #$tn"
    rm -f "$outf.lock"
    return 0
}

go()
{
    rm -f *.lock
    local url="$1" parts=$2
    local size=$(wget --spider -S "$url" 2>&1 | awk '/Content-Length:/{print$3}')
    [ -z "$size" ] && { echo "Error on fetch size of file"; return 0; }
    local psize=$((size/$parts))
    local cs=0
    for i in `seq 1 $((parts-1))`; do
  do_thread $i "$url" $cs $psize &
  cs=$((cs+$psize))
    done
    do_thread $parts "$url" $cs $((size-$cs)) &
    while ls *.lock &>/dev/null; do sleep 1; done
    local f="$(basename "$url")"
    echo -n > "$f"
    for i in `seq 1 $parts`; do cat "$f#$i" >> "$f"; rm -f "$f#$i"; done
    echo "All done"
}

go "$1" $2


Запуск: script $URL $THREADS

Конечно, сделано топорно, поддерживает только http, но работает :)
Кстати, прироста скорости я не обнаружил.
ArchLinux / IceWM
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: wget + многопоточность

Сообщение t.t »

(madskull @ Среда, 03 Ноября 2004, 16:33) писал(а):Многопоточный? Консольный? Хм, интересно... Линуксоиды мы, али нет?!!
Вот вам wget многопоточный
Вот это я понимаю. :thumbsup: Я в "Do it in a unix way!" ссылку на этот пост добавил.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
demongloom
Сообщения: 454
Статус: Добрый Демон

Re: wget + многопоточность

Сообщение demongloom »

Под многопоточностью подразумеваю скачивание одного файла по кускам.
Впрочем и от нескольких файлов сразу тоже не откажусь.

Прирост есть. К примеру на 1 коннект к серверу ограничение 30 кб/сек, а я могу скачивать 250 кб/сек. Если я могу подключиться еще раз и сделать 5 коннктов, то я могу получить скорость 150 кб/сек, так как каждая часть будет скачиваться по 30 кб/сек, но в сумме будет 150.
Если жизнь твоя порвется, тебе новую сошьют.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: wget + многопоточность

Сообщение t.t »

(demongloom @ Среда, 03 Ноября 2004, 18:39) писал(а):Под многопоточностью подразумеваю скачивание одного файла по кускам.
А скрипт madskull'а это разве не оно и есть?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
StraNNicK
Бывший модератор
Сообщения: 1005
Статус: добрый хиппи

Re: wget + многопоточность

Сообщение StraNNicK »

Почти. Скрипт madskull'а - образец того, что при желании всё можно сделать.
Поскольку в shell-scripting'е я не силён - пользую помянутый axel, который делает несколько больше... ;)
Ушёл навсегда. В личку не заглядываю.
Спасибо сказали:
Аватара пользователя
demongloom
Сообщения: 454
Статус: Добрый Демон

Re: wget + многопоточность

Сообщение demongloom »

Скрипт конечно хорошо, но охота что то типа программы...
Если жизнь твоя порвется, тебе новую сошьют.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: wget + многопоточность

Сообщение t.t »

(demongloom @ Четверг, 04 Ноября 2004, 1:22) писал(а):Скрипт конечно хорошо, но охота что то типа программы...
(StraNNicK @ Среда, 03 Ноября 2004, 20:48) писал(а):Поскольку в shell-scripting'е я не силён - пользую помянутый axel, который делает несколько больше...
?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
Gwynn
Сообщения: 32
ОС: FC, RHEL, CentOS

Re: wget + многопоточность

Сообщение Gwynn »

А гугл уже мертв ? И свежее мясо протухло ?

About:
Aget is a multi-threaded download accelerator. It supports HTTP downloads and can be run from the console.

http://www.enderunix.org/aget/

Правда в слаке 9.1 он чего-то не скомпилился, хотя я не сильно то и настаивал :)
Спасибо сказали:
Аватара пользователя
StraNNicK
Бывший модератор
Сообщения: 1005
Статус: добрый хиппи

Re: wget + многопоточность

Сообщение StraNNicK »

C интересом посмотрел.
Неее. axel лучше. Он и по ftp качает, и по зеркалам сам ищет...
Хотя тенденция радует.
Как я уже где-то говорил, есть еще вполне даже отечественная разработка Downloader 4 X, который может работать и из консоли (только вот я так и не разобрался - как)... ;)
Ушёл навсегда. В личку не заглядываю.
Спасибо сказали:
Аватара пользователя
@leX
Сообщения: 313
ОС: Linux

Re: wget + многопоточность

Сообщение @leX »

ProZilla
ProZilla is a download accelerator for Linux which gives you a 200% to 300% improvement in your file downloading speeds.

Its features:

Supports FTP & HTTP including redirection (ProZilla & ProzGUI).
Resume Supported (ProZilla & ProzGUI).
Complete acceleration: The file will be downloaded as fast as possible as your bandwidth allows if not otherwise specified (ProZilla & ProzGUI).
Unlike certain other download accelerators available for Linux, this really works.
The number of connections that prozilla uses can be specified (ProZilla & ProzGUI).
FTPsearch support now permits fetching Mirror locations and pinging them and selecting the fastest server is automatically done (ProZilla & ProzGUI).
Downloading the same file in parts from several servers at once to increase speed (ProzGUI).

http://prozilla.genesys.ro/
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

Re: wget + многопоточность

Сообщение madskull »

(@leX @ Четверг, 04 Ноября 2004, 17:39) писал(а):ProZilla

Downloading the same file in parts from several servers at once to increase speed (ProzGUI).

http://prozilla.genesys.ro/


То есть, один файл в несколько потоков только в GUI?!!
Так весь сыр бор именно из-за консольного...
ArchLinux / IceWM
Спасибо сказали:
Аватара пользователя
StraNNicK
Бывший модератор
Сообщения: 1005
Статус: добрый хиппи

Re: wget + многопоточность

Сообщение StraNNicK »

В консоли тянет. Проверил. Симпатично.
Только вот поиск не работает. Вылетает в кору... :(
Ушёл навсегда. В личку не заглядываю.
Спасибо сказали:
Аватара пользователя
demongloom
Сообщения: 454
Статус: Добрый Демон

Re: wget + многопоточность

Сообщение demongloom »

И свой гуи консольный имеет. Если бы его отрубить.
Если жизнь твоя порвется, тебе новую сошьют.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: wget + многопоточность

Сообщение t.t »

(demongloom @ Четверг, 04 Ноября 2004, 21:34) писал(а):И свой гуи консольный имеет.
Поправочка: раз консольный, то не гуй, а туй ;)
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
StraNNicK
Бывший модератор
Сообщения: 1005
Статус: добрый хиппи

Re: wget + многопоточность

Сообщение StraNNicK »

Поскольку поиск не работает - то нафиг.
axel. Если кто на пальцах расскажет как пользовать D4X в консоли (и шоб поиск зеркал работал) - буду ооочень благода... :)
Ушёл навсегда. В личку не заглядываю.
Спасибо сказали:
Аватара пользователя
malex
Сообщения: 374
ОС: debian

Re: wget + многопоточность

Сообщение malex »

наткнулся на скрипт для многопоточного скачивания через wget.
заинтересовался, попробовал - не работает (не определяет размер файла) вот эта строка
local size=$(wget --spider -S "$url" 2>&1 | awk '/Content-Length:/{print$3}')

оказалось у меня wget не нумерует вывод
то есть не
wget --spider -S http://docs.linux.cz/programming/other/ALP...programming.pdf
--14:56:03-- http://docs.linux.cz/programming/other/ALP...programming.pdf
=> `advanced-linux-programming.pdf'
Resolving docs.linux.cz... done.
Connecting to docs.linux.cz[160.217.161.13]:80... connected.
HTTP request sent, awaiting response...
1 HTTP/1.0 200 OK
2 Date: Thu, 20 Sep 2007 10:51:18 GMT
3 Server: Apache/1.3.33 (Debian GNU/Linux) PHP/4.3.9-1 mod_ssl/2.8.9 OpenSSL/0.9.6c
4 Last-Modified: Wed, 20 Feb 2002 11:26:30 GMT
5 ETag: "41cc66-3afd9c-3c7387e6"
6 Accept-Ranges: bytes
7 Content-Length: 3866012
8 Content-Type: application/pdf
9 Age: 3450
10 X-Cache: HIT from www.it-internet.ru
11 Connection: close
200 OK

а вот так

wget --spider -S http://docs.linux.cz/programming/other/ALP...programming.pdf
--14:58:54-- http://docs.linux.cz/programming/other/ALP...programming.pdf
=> `advanced-linux-programming.pdf'
Распознаётся docs.linux.cz... 160.217.161.13
Устанавливается соединение с docs.linux.cz|160.217.161.13|:80... соединение установлено.
Запрос HTTP послан, ожидается ответ...
HTTP/1.0 200 OK
Date: Thu, 20 Sep 2007 10:51:18 GMT
Server: Apache/1.3.33 (Debian GNU/Linux) PHP/4.3.9-1 mod_ssl/2.8.9 OpenSSL/0.9.6c
Last-Modified: Wed, 20 Feb 2002 11:26:30 GMT
ETag: "41cc66-3afd9c-3c7387e6"
Accept-Ranges: bytes
Content-Length: 3866012
Content-Type: application/pdf
Age: 3548
X-Cache: HIT from www.it-internet.ru
Connection: close
Длина: 3,866,012 (3.7M) [application/pdf]
200 OK

соответственно изменяем строку
local size=$(wget --spider -S "$url" 2>&1 | awk '/Content-Length:/{print$2}') - и все работает

зы. классный скриптик
Ну вот, еще один день прошел, а мы все еще живы. И может быть стали умнее.
Спасибо сказали:
Аватара пользователя
alexam
Сообщения: 68
ОС: Debian

Re: wget + многопоточность

Сообщение alexam »

может я ваш спор усмерю,
смысл от многопоточности есть! только тогда когда вы качаете не архивы а например куча мелких файлов,
тогда только от многопоточность прирост скорости оооочень большой!
Спасибо сказали:
Аватара пользователя
deadhead
Сообщения: 1913
Статус: zzz..z

Re: wget + многопоточность

Сообщение deadhead »

alexam
посмотрите на дату последнего поста :-)
[x] close
Спасибо сказали: