¿Cómo descargar el directorio HTTP con todos los archivos y subdirectorios tal como aparecen en la lista de archivos / carpetas en línea?

189

Hay un directorio HTTP en línea al que tengo acceso. He intentado descargar todos los subdirectorios y archivos a través de wget. Pero, el problema es que cuando wgetdescarga subdirectorios descarga el index.htmlarchivo que contiene la lista de archivos en ese directorio sin descargar los archivos mismos.

¿Hay alguna manera de descargar los subdirectorios y archivos sin límite de profundidad (como si el directorio que quiero descargar es solo una carpeta que quiero copiar en mi computadora)?

directorio HTTP en línea

Omar
fuente

Respuestas:

357

Solución:

wget -r -np -nH --cut-dirs=3 -R index.html http://hostname/aaa/bbb/ccc/ddd/

Explicación:

  • Descargará todos los archivos y subcarpetas en el directorio ddd
  • -r : recursivamente
  • -np: no va a directorios superiores, como ccc / ...
  • -nH : no guardar archivos en la carpeta del nombre de host
  • --cut-dirs=3: pero guardarlo en ddd omitiendo las primeras 3 carpetas aaa , bbb , ccc
  • -R index.html: excluyendo archivos index.html

Referencia: http://bmwieczorek.wordpress.com/2008/10/01/wget-recursively-download-all-files-from-certain-directory-listed-by-apache/

Mingjiang Shi
fuente
17
¡Gracias! Además, para su información de acuerdo con esto , puede usar Me -Rgusta -R csspara excluir todos los archivos CSS, o usar Me -Agusta -A pdfpara descargar solo archivos PDF.
John
77
¡Gracias! Consejos adicionales tomados de la página de When downloading from Internet servers, consider using the ‘-w’ option to introduce a delay between accesses to the server. The download will take a while longer, but the server administrator will not be alarmed by your rudeness.
manual
3
Recibo este error 'wget' no se reconoce como un comando interno o externo, un programa operable o un archivo por lotes.
Hamish
1
@hamish puede que necesite instalar wget primero o el wget no está en su $ PATH.
Mingjiang Shi
16
Gran respuesta, pero tenga en cuenta que si hay un robots.txtarchivo que no permite la descarga de archivos en el directorio, esto no funcionará. En ese caso necesitas agregar -e robots=off . Ver unix.stackexchange.com/a/252564/10312
Daniel Hershcovich
45

Pude hacer que esto funcionara gracias a esta publicación utilizando VisualWGet . Funciono muy bien para mi. La parte importante parece ser verificar la -recursivebandera (ver imagen).

También descubrió que la -no-parentbandera es importante, de lo contrario intentará descargar todo.

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

mateuscb
fuente
2
Acabo de encontrar esto: diciembre de 2017. Funciona bien. Lo obtuve en sourceforge.net/projects/visualwget
SDsolar
2
Funcionó bien en la máquina con Windows, no se olvide de verificar las opciones mencionadas en la respuesta, de lo contrario no funcionará
csharpcoder
No funciona con ciertos https. @DaveLucre si intentara con wget en la solución cmd también podría descargarlo, pero supongo que algunos servidores no lo permiten
Yannis Dran
¿Qué hace check --no-parent?
T.Todua
1
¡Trabajando en marzo de 2020!
Sr. Programador
7
wget -r -np -nH --cut-dirs=3 -R index.html http://hostname/aaa/bbb/ccc/ddd/

De man wget

'-r' '--recursive' Activa la recuperación recursiva. Ver Descarga recursiva, para más detalles. La profundidad máxima predeterminada es 5.

'-np' '--no-parent' Nunca ascienda al directorio padre al recuperar de forma recursiva. Esta es una opción útil, ya que garantiza que solo se descargarán los archivos debajo de una determinada jerarquía. Ver Límites basados ​​en directorios, para más detalles.

'-nH' '--no-host-directorios' Desactiva la generación de directorios con prefijo de host. Por defecto, invocar Wget con '-r http://fly.srk.fer.hr/ ' creará una estructura de directorios que comenzará con fly.srk.fer.hr/. Esta opción deshabilita tal comportamiento.

'--cut-dirs = number' Ignora los componentes del directorio de números. Esto es útil para obtener un control detallado sobre el directorio donde se guardará la recuperación recursiva.

Tomemos, por ejemplo, el directorio en ' ftp://ftp.xemacs.org/pub/xemacs/ '. Si lo recupera con '-r', se guardará localmente en ftp.xemacs.org/pub/xemacs/. Si bien la opción '-nH' puede eliminar la parte ftp.xemacs.org/, todavía está atascado con pub / xemacs. Aquí es donde '--cut-dirs' es útil; hace que Wget no "vea" el número de componentes del directorio remoto. Aquí hay varios ejemplos de cómo funciona la opción '--cut-dirs'.

Sin opciones -> ftp.xemacs.org/pub/xemacs/ -nH -> pub / xemacs / -nH --cut-dirs = 1 -> xemacs / -nH --cut-dirs = 2 ->.

--cut-dirs = 1 -> ftp.xemacs.org/xemacs/ ... Si solo quiere deshacerse de la estructura del directorio, esta opción es similar a una combinación de '-nd' y '-P'. Sin embargo, a diferencia de '-nd', '--cut-dirs' no pierde con subdirectorios; por ejemplo, con '-nH --cut-dirs = 1', un subdirectorio beta / se colocará en xemacs / beta, como Uno esperaría.

Natalie Ng
fuente
3
Algunas explicaciones serían geniales.
Benoît Latinier
¿Qué pasa con la descarga de un tipo de archivo específico usando VisualWget ? ¿Es posible descargar solo archivos mp3 en un directorio y sus subdirectorios en VisualWget ?
Jason
3

wgetes un recurso invaluable y algo que uso yo mismo. Sin embargo, a veces hay caracteres en la dirección que se wgetidentifican como errores de sintaxis. Estoy seguro de que hay una solución para eso, pero como esta pregunta no se refería específicamente wget, pensé que ofrecería una alternativa para aquellas personas que indudablemente tropezarán con esta página en busca de una solución rápida sin necesidad de curva de aprendizaje.

Hay algunas extensiones de navegador que pueden hacer esto, pero la mayoría requiere la instalación de gestores de descargas, que no siempre son gratuitos, tienden a ser una molestia y utilizan muchos recursos. Aquí hay uno que no tiene ninguno de estos inconvenientes:

"Download Master" es una extensión para Google Chrome que funciona muy bien para descargar desde directorios. Puede elegir filtrar qué tipos de archivos descargar o descargar todo el directorio.

https://chrome.google.com/webstore/detail/download-master/dljdacfojgikogldjffnkdcielnklkce

Para obtener una lista actualizada de características y otra información, visite la página del proyecto en el blog del desarrollador:

http://monadownloadmaster.blogspot.com/

Moscarda
fuente
3

puedes usar lftp, la navaja suiza de descarga si tienes archivos más grandes que puedes agregar --use-pget-n=10al comando

lftp -c 'mirror --parallel=100 https://example.com/files/ ;exit'
nwgat
fuente
funcionó perfectamente y realmente rápido, esto maximizó mi línea de internet descargando miles de archivos pequeños. Muy bien.
n13
funciona perfecto !! ¡la mejor opción!
ambigus9 hace
2

¡No se requiere software ni complemento!

(solo se puede usar si no necesita un departamento recursivo)

Use bookmarklet. Arrastre este enlace a los marcadores, luego edite y pegue este código:

(function(){ var arr=[], l=document.links; var ext=prompt("select extension for download (all links containing that, will be downloaded.", ".mp3"); for(var i=0; i<l.length; i++) { if(l[i].href.indexOf(ext) !== false){ l[i].setAttribute("download",l[i].text); l[i].click(); } } })();

y vaya a la página (desde donde desea descargar archivos), y haga clic en ese marcador.

T.Todua
fuente
-1

wget generalmente funciona de esta manera, pero algunos sitios pueden tener problemas y puede crear demasiados archivos html innecesarios. Para facilitar este trabajo y evitar la creación innecesaria de archivos, estoy compartiendo mi script getwebfolder, que es el primer script de Linux que escribí para mí. Este script descarga todo el contenido de una carpeta web ingresada como parámetro.

Cuando intenta descargar una carpeta web abierta por wget que contiene más de un archivo, wget descarga un archivo llamado index.html. Este archivo contiene una lista de archivos de la carpeta web. Mi script convierte los nombres de archivo escritos en el archivo index.html a direcciones web y los descarga claramente con wget.

Probado en Ubuntu 18.04 y Kali Linux, también puede funcionar en otras distribuciones.

Uso:

  • extraer el archivo getwebfolder del archivo zip proporcionado a continuación

  • chmod +x getwebfolder (solo por primera vez)

  • ./getwebfolder webfolder_URL

como ./getwebfolder http://example.com/example_folder/

Enlace de descarga

Detalles en el blog

Byte amargo
fuente