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

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

Comment faire un téléchargement wget en utilisant 4 connexions simultanées?

169
demandé sur Community 2010-08-07 18:37:42

13 réponses

utiliser l'aria2:

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

http://aria2.sourceforge.net

j'adore !!

176
répondu gmarian 2013-09-02 18:41:41

Wget ne supporte pas les connexions multiples socket afin d'accélérer le téléchargement de fichiers.

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

la bonne façon est d'utiliser aria2 .

aria2c -x 16 -s 16 [url]
#          |    |
#          |    |
#          |    |
#          ---------> the number of connections here
87
répondu thomas.han 2016-04-02 19:00:19

j'ai trouvé (probablement) "151950920 une" solution

en train de télécharger quelques milliers de fichiers log à partir d'un serveur j'ai soudain eu besoin de faire un sérieux multithread téléchargement en BSD, de préférence avec Wget car c'était la manière la plus simple Je pourrais penser à de la manipulation. Un peu de recherche autour m'a conduit à 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 vous avez besoin... Maintenant, étant donné que ce n'est pas joli et qu'il y a sûrement de meilleures façons de faire mais si vous voulez quelque chose de rapide et sale, il devrait faire l'affaire...

Note: l'option -N rend wget téléchargez seulement les fichiers "plus récents", ce qui signifie qu'il ne va pas écraser ou télécharger de nouveau les fichiers à moins que leur horodatage change sur le serveur.

35
répondu SMUsamaShah 2017-08-10 12:54:53

puisque GNU parallel N'a pas encore été mentionné, permettez-moi de donner une autre façon:

cat url.list | parallel -j 8 wget -O {#}.html {}
34
répondu Nikolay Shmyrev 2016-04-02 19:08:13

un autre programme qui peut faire cela est axel .

axel -n <NUMBER_OF_CONNECTIONS> URL

Ubuntu homme page .

14
répondu Lord Loh. 2015-06-03 05:54:15

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 des tonnes d'options pour jouer. Un coup d'oeil.

11
répondu Rodrigo Bustos L. 2015-10-01 14:05:37

comme d'autres affiches l'ont mentionné, je vous suggère de regarder aria2 . De la page de manuel D'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 tente d'utiliser votre bande passante de téléchargement maximale. Il prend en charge le téléchargement D'un fichier à partir de HTTP(S)/FTP et BitTorrent au même temps, tandis que les données téléchargées à partir de HTTP(S)/FTP sont téléchargées vers L'essaim BitTorrent. En utilisant les checksums de morceaux de Metalink, aria2 valide automatiquement des morceaux de données tout en téléchargeant un fichier comme BitTorrent.

vous pouvez utiliser le drapeau -x pour spécifier le nombre maximum de connexions par serveur (par défaut: 1):

aria2c -x 16 [url] 

Si le même fichier est disponible à partir de plusieurs endroits, vous pouvez choisir de télécharger à partir de tous. Utilisez le drapeau -j pour spécifier le nombre maximum de téléchargements parallèles pour chaque URI statique (par défaut: 5).

aria2c -j 5 [url] [url2]

regarder http://aria2.sourceforge.net/ pour plus d'informations. Pour les informations d'utilisation, la page de manuel est vraiment descriptive et a une section en bas avec des exemples d'utilisation. Une version en ligne peut être trouvée à http://aria2.sourceforge.net/manual/en/html/README.html .

10
répondu runejuhl 2013-08-31 17:57:08

un nouvel outil (mais pas encore sorti) est Mget . Il a déjà de nombreuses options connues de Wget et est livré avec une bibliothèque qui vous permet d'intégrer facilement (récursive) le téléchargement dans votre propre application.

pour répondre à votre question:

mget --num-threads=4 [url]

mise à JOUR

Mget est maintenant développé comme Wget2 avec de nombreux bogues corrigé et plus de fonctionnalités (par exemple la prise en charge de HTTP/2).

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

10
répondu rockdaboot 2018-04-03 14:06:48

wget cant download dans plusieurs connexions, à la place vous pouvez essayer d'utiliser d'autres programmes comme aria2.

7
répondu user181677 2011-03-15 08:08:08

essayer pcurl

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

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

5
répondu Rumble 2012-07-16 07:44:24

ils disent toujours que cela dépend, mais quand il s'agit de créer un site miroir le meilleur existe httrack . Il est super rapide et facile à travailler. Le seul inconvénient est que c'est ce que l'on appelle le forum de soutien, mais vous pouvez trouver votre chemin en utilisant documentation officielle . Il a à la fois interface GUI et CLI et il prend en charge les cookies il suffit de lire les documents C'est le meilleur.(Avec cet outil, vous pouvez télécharger tout le web sur votre disque dur)

httrack -c8 [url]

par défaut nombre maximum de connexions simultanées limité à 8 pour éviter une surcharge du serveur

2
répondu pouya 2017-08-14 22:19:49

make peut être facilement mis en parallèle (par exemple, make -j 4 ). Par exemple, voici un simple Makefile que j'utilise pour télécharger des fichiers en parallèle en utilisant wget:

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

all: $(FILES)
    echo $(FILES)

%.ext:
    wget -N -a $(LOG) $(BASE)/$@

.PHONY: all
default: all
1
répondu Paul Price 2015-10-15 06:26:47

utiliser xargs pour en faire wget travailler dans plusieurs fichiers en parallèle

#!/bin/bash

mywget()
{
    wget ""
}

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 le fichier inférieur à 20mb

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

-k 2M diviser le fichier en 2mb morceau

-k ou --min-split-size a la valeur par défaut de 20 mo, si vous définissez pas cette option et fichier de moins de 20 mo, il sera exécuté uniquement dans une seule connexion, peu importe la valeur de -x ou -s

0
répondu ewwink 2018-07-28 02:57:13