¿Cómo descargar un directorio completo y subdirectorios usando wget?


143

Estoy tratando de descargar los archivos para un proyecto usando wget, ya que el servidor SVN para ese proyecto ya no se ejecuta y solo puedo acceder a los archivos a través de un navegador. Las URL base para todos los archivos son las mismas que

http://abc.tamu.edu/projects/tzivi/repository/revisions/2/raw/tzivi/ *

¿Cómo puedo usar wget(o cualquier otra herramienta similar) para descargar todos los archivos en este repositorio, donde la carpeta "tzivi" es la carpeta raíz y hay varios archivos y subcarpetas (hasta 2 o 3 niveles) debajo?


3
No puede hacerlo si el servidor no tiene una página web con una lista de todos los enlaces a los archivos que necesita.
Eddy_Em

1
sabes el nombre de los archivos?
Karoly Horvath

no, no sé el nombre de todos los archivos. Intenté wget con la opción recursiva pero tampoco funcionó. Es porque el servidor no tiene ningún archivo index.html que enumere todos los enlaces internos.
code4fun

¿Probaste la opción de espejo de wget?
Tomasz Nguyen

Respuestas:


193

Puede usar esto en shell:

wget -r --no-parent http://abc.tamu.edu/projects/tzivi/repository/revisions/2/raw/tzivi/

Los parámetros son:

-r     //recursive Download

y

--no-parent // Don´t download something from the parent directory

Si no desea descargar todo el contenido, puede usar:

-l1 just download the directory (tzivi in your case)

-l2 download the directory and all level 1 subfolders ('tzivi/something' but not 'tivizi/somthing/foo')  

Y así. Si no inserta ninguna -lopción, la wgetusará -l 5automáticamente.

Si inserta una, -l 0descargará todo el Internet, porque wgetseguirá cada enlace que encuentre.


19
Genial, así que simplificar para el próximo lector: wget -r -l1 --no-parent http://www.stanford.edu/~boyd/cvxbook/cvxbook_additional_exercises/fue la respuesta para mí. Gracias tu respuesta.
isomorphismes

2
Intenté el comando anterior para obtener todos los archivos, http://websitename.com/wp-content/uploads/2009/05pero todo lo que obtuve fue un index.htmlarchivo que no tenía nada. No puedo entender lo que me perdí.
Vivek Todi

@up: Tenga en cuenta que wget sigue los enlaces, por lo que necesita un listado del directorio;)

11
Sé que esto es bastante viejo. Pero lo que también encontré útil fue el -e robots=offcambio. ;)
Matthias W.

2
¿Por qué no eliminas el "Olvidé algo importante" y solo arreglas la respuesta?
user1271772

16

Puedes usar esto en un shell:

wget -r -nH --cut-dirs=7 --reject="index.html*" \
      http://abc.tamu.edu/projects/tzivi/repository/revisions/2/raw/tzivi/

Los parámetros son:

-r recursively download

-nH (--no-host-directories) cuts out hostname 

--cut-dirs=X (cuts out X directories)



1

También puedes usar este comando:

wget --mirror -pc --convert-links -P ./your-local-dir/ http://www.your-website.com

para que obtenga el espejo exacto del sitio web que desea descargar


1

Este enlace me dio la mejor respuesta:

$ wget --no-clobber --convert-links --random-wait -r -p --level 1 -E -e robots=off -U mozilla http://base.site/dir/

Trabajado como un encanto.


-1

Esto funciona:

wget -m -np -c --no-check-certificate -R "index.html*" "https://the-eye.eu/public/AudioBooks/Edgar%20Allan%20Poe%20-%2"
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.