Подтвердить что ты не робот

Несколько одновременных загрузок с использованием Wget?

Я использую wget для загрузки содержимого веб-сайта, но wget загружает файлы один за другим.

Как я могу сделать загрузку wget с помощью 4 одновременных соединений?

4b9b3361

Ответ 1

используйте aria2:

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

http://aria2.sourceforge.net

Мне это нравится!!

Ответ 2

Wget не поддерживает несколько соединений сокетов, чтобы ускорить загрузку файлов.

Я думаю, мы можем сделать немного лучше, чем gmarian ответ.

Правильный способ - использовать aria2.

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

Ответ 3

Поскольку GNU-параллель еще не упоминалась, позвольте мне дать другой способ:

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

Ответ 4

Я нашел (наверное) решение

В процессе загрузки нескольких тысяч файлов журнала с одного сервера на другой у меня внезапно возникла необходимость выполнить серьезную многопоточную загрузку в BSD, предпочтительно с помощью Wget, поскольку это был самый простой способ справиться с этим. Немного оглядываясь, привело меня к этому маленькому самородку:

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

Просто повторите wget -r -Np -N [url] столько потоков, сколько вам нужно... Теперь, учитывая, что это не красиво, и, конечно, есть лучшие способы сделать это, но если вы хотите что-то быстрое и грязное должен сделать трюк...

Примечание: опция -N заставляет wget загружать только "более новые" файлы, что означает, что он не будет перезаписывать или перезагружать файлы, если их временная метка не изменяется на сервере.

Ответ 5

Новый (но еще не выпущенный) инструмент - Mget. У него уже есть много опций, известных из Wget, и поставляется с библиотекой, которая позволяет легко встраивать (рекурсивную) загрузку в ваше собственное приложение.

Чтобы ответить на ваш вопрос:

mget --num-threads=4 [url]

ОБНОВИТЬ

Mget теперь разработан как Wget2 с множеством исправленных ошибок и дополнительными функциями (например, поддержка HTTP/2).

--num-threads теперь --max-threads.

Ответ 7

Я настоятельно рекомендую использовать httrack.

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

По умолчанию используется зеркало с 8 одновременными соединениями. В Httrack есть множество вариантов, где можно играть. Посмотрите.

Ответ 8

Как отмечали другие плакаты, я бы предложил вам взглянуть на aria2. На странице руководства Ubuntu для версии 1.16.1:

aria2 - это утилита для загрузки файлов. Поддерживаемые протоколы: HTTP (S), FTP, BitTorrent и Metalink. aria2 может загрузить файл из нескольких источников/протоколов и пытается использовать максимальную ширину загрузки. Он поддерживает загрузку файла из HTTP (S)/FTP и BitTorrent одновременно, в то время как данные, загруженные с HTTP (S)/FTP, загружаются в рой BitTorrent. С помощью контрольных сумм Metalink, aria2 автоматически проверяет куски данных при загрузке файла, такого как BitTorrent.

Вы можете использовать флаг -x для указания максимального количества подключений на сервер (по умолчанию: 1):

aria2c -x 16 [url] 

Если один и тот же файл доступен из нескольких мест, вы можете загрузить его из всех. Используйте флаг -j, чтобы указать максимальное количество параллельных загрузок для каждого статического URI (по умолчанию: 5).

aria2c -j 5 [url] [url2]

Посмотрите http://aria2.sourceforge.net/ для получения дополнительной информации. Для информации об использовании справочная страница действительно описательна и имеет раздел внизу с примерами использования. Онлайн-версию можно найти на http://aria2.sourceforge.net/manual/en/html/README.html.

Ответ 9

wget can not download в нескольких соединениях, вместо этого вы можете попробовать использовать другую программу, такую ​​как aria2.

Ответ 10

попробуй pcurl

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

использует curl вместо wget, загружает в 10 сегментах параллельно.

Ответ 11

make можно легко распараллелить (например, make -j 4). Например, здесь простой Makefile я использую для параллельного скачивания файлов с помощью wget:

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

Ответ 12

Они всегда говорят, что это зависит, но когда дело доходит до зеркального отображения веб-сайта, лучше всего httrack. Это очень быстро и легко работать. Единственный недостаток - это так называемый форум поддержки, но вы можете найти свой путь, используя официальную документацию. У него есть интерфейс GUI и CLI, и он поддерживает куки файлы только для чтения документов. Это лучший вариант. (Будьте осторожны с этим инструментом, вы можете загрузить всю сеть на своем жестком диске)

httrack -c8 [url]

По умолчанию максимальное количество одновременных подключений ограничено 8, чтобы избежать перегрузки сервера

Ответ 13

использование

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

в website.txt введите 1 URL в строке, например:

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

Ответ 14

используйте xargs чтобы заставить wget работать в нескольких файлах параллельно

#!/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, правильный способ работы с файлом размером менее 20 МБ

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

-k 2M разделить файл на 2 МБ

-k или --min-split-size имеет значение по умолчанию 20 МБ, если вы не установите эту опцию и файл меньше 20 МБ, он будет работать только в одном соединении независимо от того, какое значение -x или -s