web-dev-qa-db-fra.com

téléchargement wget avec plusieurs connexions simultanées

J'utilise wget pour télécharger le contenu d'un site Web, mais wget télécharge les fichiers un par un.

Comment puis-je télécharger wget en utilisant 4 connexions simultanées?

177
jubo

utilisez le aria2:

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

http://aria2.sourceforge.net

J'aime cela !!

185
gmarian

Wget ne prend pas en charge plusieurs connexions de socket afin d’accélérer le téléchargement des fichiers.

Je pense que nous pouvons faire un peu mieux que la réponse gmarian.

La bonne façon consiste à utiliser aria2 .

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

Puisque GNU parallèle n'a pas encore été mentionné, laissez-moi vous donner une autre façon:

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

J'ai trouvé (probablement) une solution

En train de télécharger quelques milliers de fichiers journaux d’un serveur à un autre moment, j’ai eu soudain le besoin de faire de sérieux multithreads téléchargement sous BSD, de préférence avec Wget, car c’était le moyen le plus simple Je pourrais penser à gérer cela. Un peu en regardant autour de moi m'a amené à cette petite pépite:

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

Répétez simplement le wget -r -np -N [url] pour autant de threads que nécessaire ... Maintenant, étant donné que ce n’est pas beau et qu’il existe sûrement de meilleures façons de le faire mais si vous voulez quelque chose de rapide et de sale, faites-le.

Remarque: l'option -N permet à wget de ne télécharger que les fichiers "plus récents", ce qui signifie qu'il ne sera ni écrasé ni téléchargé à nouveau, sauf si leur horodatage change sur le serveur.

37
SMUsamaShah

Un autre programme capable de faire cela est axel.

axel -n <NUMBER_OF_CONNECTIONS> URL

Page de manuel Ubuntu .

15
Lord Loh.

Un nouvel outil (mais pas encore publié) est Mget . Il contient déjà de nombreuses options connues de Wget et est livré avec une bibliothèque qui vous permet d’incorporer facilement le téléchargement (récursif) dans votre propre application.

Pour répondre à ta question:

mget --num-threads=4 [url]

METTRE &AGRAVE; JOUR

Mget est maintenant développé en tant que Wget2 avec de nombreux bugs corrigés et plus de fonctionnalités (support HTTP/2 par exemple).

--num-threads est maintenant --max-threads.

12
rockdaboot

Je suggère fortement d'utiliser httrack.

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

Il fera un miroir avec 8 connexions simultanées par défaut. Httrack a une tonne d'options où jouer. Regarde.

11
Rodrigo Bustos L.

Comme d'autres afficheurs l'ont mentionné, je vous suggère de regarder aria2. De la page de manuel Ubuntu pour la version 1.16.1:

aria2 est un utilitaire de téléchargement de fichiers. Les protocoles pris en charge sont HTTP (S), FTP, BitTorrent et Metalink. aria2 peut télécharger un fichier à partir de plusieurs sources/protocoles et essaie d'utiliser votre bande passante de téléchargement maximale. Il prend en charge le téléchargement simultané d'un fichier à partir de HTTP (S)/FTP et de BitTorrent, tandis que les données téléchargées à partir de HTTP (S)/FTP sont téléchargées sur l'essaim de BitTorrent. A l'aide des sommes de contrôle de morceaux de Metalink, aria2 valide automatiquement des morceaux de données lors du téléchargement d'un fichier tel que BitTorrent.

Vous pouvez utiliser l'indicateur -x pour spécifier le nombre maximal de connexions par serveur (par défaut: 1):

aria2c -x 16 [url] 

Si le même fichier est disponible à partir de plusieurs emplacements, vous pouvez choisir de télécharger à partir de chacun d'entre eux. Utilisez l'indicateur -j pour spécifier le nombre maximal de téléchargements parallèles pour chaque URI statique (par défaut: 5).

aria2c -j 5 [url] [url2]

Consultez http://aria2.sourceforge.net/ pour plus d'informations. Pour plus d’informations sur l’utilisation, la page de manuel est vraiment descriptive et comporte une section au bas avec des exemples d’utilisation. Une version en ligne est disponible sur http://aria2.sourceforge.net/manual/en/html/README.html .

10
runejuhl

wget ne peut pas télécharger plusieurs connexions, vous pouvez plutôt essayer d’utiliser un autre programme comme aria2.

7
user181677

essayez pcurl

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

utilise curl au lieu de wget, télécharge en 10 segments en parallèle.

5
Rumble

make peut être facilement mis en parallèle (par exemple, make -j 4). Par exemple, voici une simple Makefile que j'utilise pour télécharger des fichiers en parallèle à l'aide de 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)/$@

.PHONY: all
default: all
2
Paul Price

Ils disent toujours que cela dépend, mais quand il s'agit de refléter un site web, le meilleur existe httrack . C'est super rapide et facile à travailler. Le seul inconvénient, c’est le soi-disant forum d’assistance, mais vous pouvez vous y retrouver en utilisant documentation officielle . Il possède à la fois une interface graphique et une interface graphique et prend en charge les cookies. Il vous suffit de lire la documentation. C’est le meilleur.

httrack -c8 [url]

Par défaut, nombre maximal de connexions simultanées limité à 8 pour éviter la surcharge du serveur.

2
pouya

utilisez xargs pour que wget travaille dans plusieurs fichiers en parallèle

#!/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

Options Aria2, la bonne façon de travailler avec des fichiers de moins de 20 Mo

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

-k 2M scinder le fichier en morceau de 2 Mo

-k ou --min-split-size a la valeur par défaut de 20 Mo. Si vous ne définissez pas cette option et que le fichier est inférieur à 20 Mo, il ne fonctionnera qu'en connexion unique, quelle que soit la valeur de -x ou -s

0
ewwink

utilisation

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

dans websites.txt, mettez 1 url par ligne, par exemple:

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