Diferencia entre revisiones de «Wget mirror»
(Página creada con «== Introducción == A raiz de la necesidad de replicar el repositorio de nodejs en un servidor interno (porque las máquinas que van a instalar paquetes no tienen acceso a...») |
|||
Línea 33: | Línea 33: | ||
-I /dist/v0.10.0/ solo nos copia los enlaces que cumplan con ese patron, así evitamos descargar enlaces de fuera de este patron o del directorio padre | -I /dist/v0.10.0/ solo nos copia los enlaces que cumplan con ese patron, así evitamos descargar enlaces de fuera de este patron o del directorio padre | ||
+ | |||
+ | |||
+ | == Script de automatizacion == | ||
+ | Si quisieramos descargar ciertos directorios de un repo remoto, podrías aplicar un script como el siguiente: | ||
+ | |||
+ | <pre> | ||
+ | #!/bin/bash | ||
+ | INPUT_URI='https://nodejs.org' | ||
+ | INCLUDE_DIRS_FILE='repoclone.include' | ||
+ | |||
+ | for INCLUDE_DIR in $(cat $INCLUDE_DIRS_FILE); do | ||
+ | wget -e robots=off --mirror -nH --no-parent --reject="index.html*" -I $INCLUDE_DIR/ $INPUT_URI/$INCLUDE_DIR/ | ||
+ | done | ||
+ | </pre> | ||
+ | |||
+ | En este script se hace referencia a un fichero '''repoclone.include''' donde tendremos que ir añadiendo los path de los directorios que queremos clonar. |
Última revisión de 14:46 23 abr 2015
Introducción
A raiz de la necesidad de replicar el repositorio de nodejs en un servidor interno (porque las máquinas que van a instalar paquetes no tienen acceso a internet) se me ocurrió buscar información sobre como hacer un mirror con WGET de un site remoto
Comando
El comando final que he usado es
wget -e robots=off --mirror -nH --no-parent --reject="index.html*" -I /dist/v0.10.0/ https://nodejs.org/dist/v0.10.0/
La explicación es la siguiente:
con el -e robots=off desactivamos la lectura del fichero robots, que impecía que pudiera hacer el mirror sobre el directorio /dist
--mirror atajo para -N -r -l inf --no-remove-listing,
estos parámetros son:
-N para que no se descargue el fichero si el de origen no es mas nuevo que el destino -r para que sea recursivo en los enlaces -l inf, para profundidad infinita -no-remove-listing, para no borrar los ficheros .listing
Además, a nuestro comando añadimos los siguientes parámetros:
-nH, para que en el directorio de destion no incluya un directorio padre con el nombre del host
--no-parent, supestamente no asciende al directorio raiz para descargarse contenido, pero no me ha funcionado del todo
--reject="index.html*", no se descarga los ficheros index.html*, ya que ese fichero es el que nos devuelve con la lista de ficheros, y realmente no existe, es por así decirlo virtual. De esta forma se borra
-I /dist/v0.10.0/ solo nos copia los enlaces que cumplan con ese patron, así evitamos descargar enlaces de fuera de este patron o del directorio padre
Script de automatizacion
Si quisieramos descargar ciertos directorios de un repo remoto, podrías aplicar un script como el siguiente:
#!/bin/bash INPUT_URI='https://nodejs.org' INCLUDE_DIRS_FILE='repoclone.include' for INCLUDE_DIR in $(cat $INCLUDE_DIRS_FILE); do wget -e robots=off --mirror -nH --no-parent --reject="index.html*" -I $INCLUDE_DIR/ $INPUT_URI/$INCLUDE_DIR/ done
En este script se hace referencia a un fichero repoclone.include donde tendremos que ir añadiendo los path de los directorios que queremos clonar.