Descargar archivos mediante wget | Algo de Linux

lunes, 4 de octubre de 2010

Descargar archivos mediante wget

wget es una herramienta que nos permite realizar descargas de contenidos de servidores web de una forma muy sencilla y que soporta descargas mediante los protocolos http, https y ftp.

A los administradores nos resulta tremendamente útil, porque con ella podemos realizar descargas de archivos almacenados en sitios web.

Tiene muchísimas opciones que no vamos a comentar, así que, como siempre, para más info. lo mejor es tirar de man.

Con wget es muy fácil descargarnos el contenido del directorio raiz de una web y sus subdirectorios:

# wget -r http://www.miweb.es/

La opción -r hace que se realice la descarga de forma recursiva.

Y si queremos descargar la página web de forma que se pueda navegar por el sitio descargado en modo off-line, usamos la opción -k, que convierte los enlaces en enlaces locales:

# wget -k -r http://www.miweb.es/

Por otra parte, podemos a indicar a wget el número de niveles que debe descender en el árbol de directorios, mediante el parámetro -l:

# wget -r -l1 http://www.miweb.es/

En el ejemplo anterior le estoy diciendo a wget que siga los enlaces, pero sólo hasta 1 nivel, es decir, que no siga los enlaces encontrados en las páginas enlazadas.


Puedo hacer que wget no siga enlaces a directorios padre, haciendo uso de la opción -np:

# wget -r -l1 -np http://www.miweb.es/

También puedo descargar un archivo de la web:

# wget http://www.miweb.es/descargas/fotostoldap-0.1.deb

Si por alguna razón, se cortara la descarga del archivo, no tendría que volver a descargarlo desde el principio. Podría continuar la descarga usando la opción -c:

# wget -c http://www.miweb.es/descargas/fotostoldap-0.1.deb

Puedo decirle a wget que me descargue tan sólo determinados archivos, mediante la opción -A. Por ejemplo, si quisiera descargar tan sólo los archivos .mp3 de un directorio concreto de una web, haría lo siguiente:

# wget -r -l1 -A .mp3 http://www.miweb.es/descargas/

Wget me va a descargar los archivos, pero me va a recrear la estructura de directorios donde se encuentran almacenados. Si lo que me interesa es descargar tan sólo los archivos, sin recrear la estructura de directorios donde se encuentran almacenados, no tengo más que usar la opción -nd:

# wget -r -l1 -A .mp3 -nd http://www.miweb.es/descargas/

Con este comando se van a descargar todos los archivos .mp3 que haya.

Si volviera a ejecutar wget y quisiera que sólo se descargasen aquellos archivos que no estuvieran descargados ya, añadiría la opción -nc a wget:

# wget -r -l1 -A .mp3 -nd -nc http://www.miweb.es/descargas/

Si sé que mi wget va a descargar varios archivos y quiero asegurarme de que la descarga no se atascará en alguno de ellos, puedo usar la opción -t para indicarle a web el número de reintentos que debe hacer para descargar el archivo que está fallando. Por ejemplo, con -t1 puedo decirle a wget que si falla una descarga haga sólo  1 reintento más:

# wget -r -l1 -A .mp3 -t1 -nd -nc http://www.miweb.es/descargas/

Hay otra opción que puede ser útil para descargar archivos. La opción -N. Esta opción descarga aquellos ficheros que no existan ya en local con el mismo nombre, o aquellos que existan pero que fueran más recientes que la copia local:

# wget -r -l1 -A .mp3 -t1 -nd -N http://www.miweb.es/descargas/

Un ejemplo que uso en ocasiones para descargar archivos .deb desde un servidor local, para después instalarlos:

# wget -r -l1 -A .deb -t1 -nd -N -np http://localhost/descargas/linux/

Y un par de opciones más que resultan útiles:

Podemos usar la opción -b para descargar los archivos en el background:

# wget -b -r -l1 -A .deb -t1 -nd -N -np http://localhost/descargas/linux/

O especificar los archivos que queremos descargar en un archivo de texto, con la opción -i listadescargas.txt

# wget -b -r -l1 -i urlsadescargar.txt -t1 -nd -N -np http://localhost/descargas/linux/


Por último, comentar que para aquellos que quieran usar la herramienta en modo gráfico, existe un front-end llamado gwget que nos permite manejar unas de las opciones de wget.

3 comentarios:

Leox dijo...

Esto es exelente!
Justo lo que buscaba...
... y muy bien explicado

Anónimo dijo...

Esto es exelente!
Justo lo que buscaba...
... y muy bien explicado

Anónimo dijo...

Muy buena info. solo tengo una duda... usando la opción -N para descargar solo si hay paquetes mas actuales a los que ya tenga localmente, esta opción borra los paquetes desactualizados o tengo que borrarlos yo después de haber descargado los mas actualizados?