#!/bin/bash #___________________________________________________________________ # # CREAR IMAGEN INCREMENTAL #___________________________________________________________________ # # Parámetros recibidos desde el cliente: # # $1 Número de disco # $2 Número de particion # $3 Nombre canónico de la imagen básica (sin extensión) # $4 Dirección del repositorio # $5 Nombre canónico de la imagen incremental (sin extensión) # $6 Es una cadena "nnn" tipo flags que codifica varios parametros. # Tiene el formato "nnn" donde "n" vale 0 ó 1. # 1XX: Gestionar fichero completo en lugar de diferencas # X1X: Eliminar archivos de la imagen que no estén en la partición # XX1: Comprimir archivos para enviarlos por la red # El valor X indica que no importa el valor que tenga el dato # $7 Es una cadena "nnnn" tipo flags que codifica varios parametros. # Tiene el formato "nnnn" donde "n" vale 0 ó 1. # 1XXX: Borrar la imagen incremental del repositorio antes de crearla # X1XX: Copiar imagen incremental también a la cache # XX1X: Borrar previamente la imagen incremental de la cache antes de copiarla # XXX1: No borrar archivos en destino # El valor X indica que no importa el valor que tenga el dato # $8 Método de syncronización 1=Sincronización1 2=Sincronizacion2 # $9 Ruta de origen de la Imagen (Carpeta) #___________________________________________________________________ # # Control parámetros #___________________________________________________________________ PROG="$(basename $0)" if [ $# -lt 7 ]; then usage=" ndisco nparticion nombre_imagen_basica ip_repositorio nombre_imagen_incremental" usage="$usage copiar_a_caché Borrar_cache_previamente Ruta_origen" ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG $usage" exit $? fi DISCO=$1 NPART=$2 NOMBREIMG=$3 IPREPOSITORIO=$4 NOMBREIMGINC=$5 flag=$6 echo "flah:$flag">/tmp/log WHLFILE=${flag:0:1} RMVFILE=${flag:1:1} CMPFILE=${flag:2:1} flag=$7 echo "flah:$flag">/tmp/log BORRARIMG=${flag:0:1} COPIACACHE=${flag:1:1} BORRACACHE=${flag:2:1} NOBORRACHIVOS=${flag:3:1} RUTAORIGEN=$9 #___________________________________________________________________ # # Variables y configuración logs #___________________________________________________________________ source /opt/opengnsys/scripts/ImagenesSincronizadas.lib #___________________________________________________________________ # # Activa navegador para ver progreso #___________________________________________________________________ coproc /opt/opengnsys/bin/browser -qws http://localhost/cgi-bin/httpd-log.sh #___________________________________________________________________ # # Lista de archivos a sincronizar #___________________________________________________________________ TMPFILELIST="/tmp/_listatmp_" FILELIST="/tmp/_lista_" #___________________________________________________________________ # # Proceso #___________________________________________________________________ echo "Creacion de imagen incremental..." | tee -a $OGLOGSESSION $OGLOGFILE ORIGEN=$PARTICION$RUTAORIGEN/ DESTINO="$REPOSITORIO/$NOMBREIMG/" # Borrado previo de imagen en repositorio if [ $BORRARIMG -eq 1 ]; then echo "Borrando previamente imagen del $NOMBREIMGINC repositorio" | tee -a $OGLOGSESSION $OGLOGFILE fi ## Marca de localizacion Repositorio FILE_IMG=".marcimg" MARCAORIGEN=$ORIGEN$FILE_IMG ## Marca de localizacion Repositorio en Imagen if [ ! -f $MARCAORIGEN ]; then ##echo "Creando Marca Repositorio en Particion $MARCAORIGEN" | tee -a $OGLOGSESSION $OGLOGFILE touch $MARCAORIGEN fi # Creación de la lista de archivos entre partición e imagen básica del repositorio echo "Creacion de la lista de archivos a transferir entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE crearListaAcl $ORIGEN $DESTINO $SISTEMAFICHERO $DISCO $NPART crearImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1 1 $TMPFILELIST RETVAL=$? if [ $RETVAL -ne 0 ]; then kill $COPROC_PID exit $OG_ERR_IMAGE fi # Editar la lista y depurarla editarLista $TMPFILELIST $FILELIST # Creación de la imagen incremental en el repositorio DESTINO="$REPOSITORIO/$NOMBREIMGINC/" echo "Sincronizacion para crear imagen incremental entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE crearImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1 2 $FILELIST RETVAL=$? if [ $RETVAL -ne 0 && [$RETVAL -ne 23]; then kill $COPROC_PID exit $OG_ERR_IMAGE fi ## Marca de localizacion Repositorio FILE_IMG=".marcimg" MARCA=$DESTINO$FILE_IMG ## Marca de localizacion Repositorio en Imagen if [ ! -f $MARCA ]; then ##echo "Creando Marca Repositorio en Imagen $MARCA" | tee -a $OGLOGSESSION $OGLOGFILE touch $MARCA fi echo "!!! Finaliza correctamente !!! la creacion de imagen incremental $NOMBREIMGINC entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE # Copia opcional a la caché if [ $COPIACACHE -eq 1 ]; then echo "Copiando imagen a cache" | tee -a $OGLOGSESSION $OGLOGFILE CACHE=$(montaCache) if [ -z $CACHE ]; then echo "No se ha podido copiar la imagen a la cache" | tee -a $OGLOGSESSION $OGLOGFILE kill $COPROC_PID exit $OG_ERR_NOTCACHE fi # Borrar imagen de la caché if [ $BORRACACHE -eq 1 ]; then echo "Borrando imagen $NOMBREIMGINC de la cache" | tee -a $OGLOGSESSION $OGLOGFILE rm -R $CACHE$OGIMG/$NOMBREIMGINC fi DESTINO="$CACHE$OGIMG/$NOMBREIMGINC/" echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE crearImagen $ORIGEN $DESTINO $SISTEMAFICHERO 2 2 $FILELIST RETVAL=$? if [ $RETVAL -ne 0 ]; then kill $COPROC_PID exit $OG_ERR_IMAGE fi echo "!!! Finaliza correctamente !!! la copia de imagen incremental $NOMBREIMGINC a la cache" | tee -a $OGLOGSESSION $OGLOGFILE fi ## Marca de localizacion Repositorio FILE_IMG=".marcimg" MARCA=$DESTINO$FILE_IMG ## Marca de localizacion Repositorio en CACHE if [ ! -f $MARCA ]; then ##echo "Creando Marca Repositorio en CACHE $MARCA" | tee -a $OGLOGSESSION $OGLOGFILE touch $MARCA fi ## Eliminando Marca Origen Repositorio rm $MARCAORIGEN eliminaListaAcl $ORIGEN $SISTEMAFICHERO #___________________________________________________________________ # # Retorno #___________________________________________________________________ kill $COPROC_PID exit 0