download - sitio - wget example
descargar wget con múltiples conexiones simultáneas (12)
Estoy usando wget para descargar contenido del sitio web, pero wget descarga los archivos uno por uno.
¿Cómo puedo hacer la descarga de wget usando 4 conexiones simultáneas?
Como el paralelo de GNU aún no se mencionó, déjenme decirlo de otra manera:
cat url.list | parallel -j 8 wget -O {#}.html {}
Como otros carteles han mencionado, sugiero que eche un vistazo a aria2 . Desde la página man de Ubuntu para la versión 1.16.1:
aria2 es una utilidad para descargar archivos. Los protocolos admitidos son HTTP (S), FTP, BitTorrent y Metalink. aria2 puede descargar un archivo de múltiples fuentes / protocolos e intenta utilizar su ancho de banda máximo de descarga. Admite la descarga de un archivo de HTTP (S) / FTP y BitTorrent al mismo tiempo, mientras que los datos descargados de HTTP (S) / FTP se cargan en el enjambre de BitTorrent. Usando las sumas de comprobación de fragmentos de Metalink, aria2 valida automáticamente fragmentos de datos mientras descarga un archivo como BitTorrent.
Puede usar el indicador -x
para especificar la cantidad máxima de conexiones por servidor (valor predeterminado: 1):
aria2c -x 16 [url]
Si el mismo archivo está disponible desde varias ubicaciones, puede optar por descargarlo desde todas ellas. Utilice el -j
para especificar el número máximo de descargas paralelas para cada URI estático (valor predeterminado: 5).
aria2c -j 5 [url] [url2]
Eche un vistazo a http://aria2.sourceforge.net/ para más información. Para información de uso, la página man es realmente descriptiva y tiene una sección en la parte inferior con ejemplos de uso. Se puede encontrar una versión en línea en http://aria2.sourceforge.net/manual/en/html/README.html .
Encontré (probablemente) una solución
En el proceso de descargar unos pocos miles de archivos de registro de un servidor a otro, de repente tuve la necesidad de hacer algunas descargas de subprocesos múltiples en BSD, preferiblemente con Wget, ya que esa era la forma más sencilla en que podía pensar en manejar esto. Un poco mirando alrededor me llevó a esta pequeña pepita:
wget -r -np -N [url] & wget -r -np -N [url] & wget -r -np -N [url] & wget -r -np -N [url]
Simplemente repite el
wget -r -np -N [url]
para todos los hilos que necesites ... Ahora bien, dado que esto no es bonito y seguramente hay mejores formas de hacerlo, pero si quieres algo rápido y sucio, debería hacerlo el truco...
Nota: la opción -N
hace que wget
descargue solo archivos "más nuevos", lo que significa que no sobrescribirá ni volverá a descargar archivos a menos que su marca de tiempo cambie en el servidor.
No puedo descargar en múltiples conexiones; en su lugar, puedes intentar utilizar otro programa como aria2.
Otro programa que puede hacer esto es axel
.
axel -n <NUMBER_OF_CONNECTIONS> URL
Recomiendo encarecidamente usar httrack.
ex: httrack -v -w http://example.com/
Hará un espejo con 8 conexiones simultáneas por defecto. Httrack tiene un montón de opciones donde jugar. Echar un vistazo.
Siempre dicen que depende, pero cuando se trata de reflejar un sitio web, lo mejor está en la httrack . Es súper rápido y fácil de trabajar. El único inconveniente es su llamado foro de soporte, pero puede encontrar su camino utilizando la documentación oficial . Tiene interfaces GUI y CLI y admite cookies. Solo lee los documentos. Es lo mejor. Sé curable con esta herramienta, puedes descargar toda la web en tu disco duro.
httrack -c8 [url]
Por defecto, la cantidad máxima de conexiones simultáneas limitadas a 8 para evitar la sobrecarga del servidor
Una nueva herramienta (pero no lanzada) es Mget . Ya tiene muchas opciones conocidas de Wget y viene con una biblioteca que le permite realizar descargas fácilmente (recursivas) en su propia aplicación.
Para responder tu pregunta:
mget --num-threads=4 [url]
ACTUALIZAR
Mget ahora se desarrolla como Wget2 con muchos errores corregidos y más funciones (por ejemplo, soporte HTTP / 2).
--num-threads
es ahora --max-threads
.
Wget no es compatible con múltiples conexiones de socket para acelerar la descarga de archivos.
Creo que podemos hacerlo un poco mejor que la respuesta gmariana.
La forma correcta es usar aria2
.
aria2c -x 16 -s 16 [url]
# | |
# | |
# | |
# ---------> the number of connections here
prueba pcurl
http://sourceforge.net/projects/pcurl/
utiliza curl en lugar de wget, descargas en 10 segmentos en paralelo.
usa el aria2:
aria2c -x 16 [url]
# |
# |
# |
# ----> the number of connections
Lo amo !!
make
se puede paralelizar fácilmente (por ejemplo, make -j 4
). Por ejemplo, aquí hay un archivo Makefile
simple que estoy usando para descargar archivos en paralelo usando 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