diff options
Diffstat (limited to 'admin/Interface/ImagenesSincronizadas.lib')
-rwxr-xr-x | admin/Interface/ImagenesSincronizadas.lib | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/admin/Interface/ImagenesSincronizadas.lib b/admin/Interface/ImagenesSincronizadas.lib new file mode 100755 index 00000000..2b0d3ace --- /dev/null +++ b/admin/Interface/ImagenesSincronizadas.lib @@ -0,0 +1,205 @@ +#!/bin/bash +#___________________________________________________________________ +# +#@file ImagenesSincronizadas.lib +#@brief Librería o clase ImagenesSincronizadas +#@class ImagenesSincronizadas +#@brief Funciones para la creación y restauración de imagenes por sincronización. +#@version 1.0.4 +#@warning License: GNU GPLv3+ +#___________________________________________________________________ + + #Load engine configurator from engine.cfg file. + #Carga el configurador del engine desde el fichero engine.cfg + [ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg + + # Clear temporary file used as log track by httpdlog + # Limpia los ficheros temporales usados como log de seguimieincludento para httpdlog + echo " " > $OGLOGSESSION; echo " " > $OGLOGCOMMAND; echo " " > ${OGLOGCOMMAND}.tmp + + # Registro de inicio de ejecución + #echo "[START Interface ] Run this command: $0 $*" | tee -a $OGLOGSESSION $OGLOGFILE + echo "$MSG_INTERFACE_START $0 $*" | tee -a $OGLOGSESSION $OGLOGFILE + + # Solo ejecutable por OpenGnSys Client. + PATH=$PATH:$(dirname $0) + PROG=$(basename $0) + CALLER=$(ogGetCaller) + if [ "$CALLER" != "ogAdmClient" ]; then + ogRaiseError $OG_ERR_NOTEXEC "$CALLER -> $PROG" + exit $? + fi + + #___________________________________________________________________ + # + # Variables globales + #___________________________________________________________________ + + TIPOPARTICION="$(ogGetPartitionId $DISCO $PARTICION)"; # Tipo de particion + SISTEMAFICHERO="$(ogGetOsType $DISCO $PARTICION)" # Sistema de ficheros + PARTICION=$(ogMount $DISCO $PARTICION); # Monta partición + REPOSITORIO="root@$IPREPOSITORIO::imagenes" # Ruta de las imagenes en el repositorio + + # Borrar archivos en destino + OP_DELETE="--delete" + if [ $NOBORRACHIVOS -eq 1 ]; then + OP_DELETE="" + fi + + #___________________________________________________________________ + # + # Crea un fichero con la clave remota del rsync y actualiza el + # parámetro "--password-file" para que no se pida ésta en el proceso. + #___________________________________________________________________ + # + f="/tmp/passrsync" # Creación del archivo de claves + echo "passusuog">$f # Escribe dentro la clave remota + chmod 400 $f # Es obligatorio que el archivo de claves tenga estos permisos + FILE_PASSWD="--password-file=$f" + + + #___________________________________________________________________ + # + # Función: montaCache + # + # Descripción: + # + # Monta la cache y devuelve la ruta hacía ella + # + # Parámetros: + # + # Ninguno + #___________________________________________________________________ + # + function montaCache() + { + # Error si no existe caché + if ! $(ogFindCache >/dev/null); then + echo "" + return + fi + cache=$(ogMountCache) + echo $cache + } + #___________________________________________________________________ + # + # Función: editarLista + # + # Descripción: + # + # Edita lista de archivos a transferir para depurar lineas + # + # Parámetros: + # + # $1 Lista de entrada + # $2 Lista de salida + #___________________________________________________________________ + # + function editarLista() + { + # Edición: + # a) Quitarle lineas que contengan './' + # b) La primera linea (reporter del rsync) + # c) Las dos últimas lineas del final (reporter del rsync) + + echo "Editando lista de archivos Entrada:$1 Salida:$2" | tee -a $OGLOGSESSION $OGLOGFILE + cat $1 | sed '/\.\//d' | sed '1d' | sed -n -e :a -e '1,2!{P;N;D;};N;ba'>$2 + } + + #___________________________________________________________________ + # + # Función: crearImagen + # + # Descripción: + # + # Sincroniza archivos entre origen y destino. Al final del + # proceso el contenido de destino será igual al de origen. + # La creación de imagen siempre tiene lugar entre una partición + # y un repositorio como origen y destino respectivamente. + # + # Parámetros: + # + # $1: Origen + # $2: Destino + # $3: Sistema de ficheros de la partición + # $4: Vale 1=Para crear la lista de archivos a transferir + # 2= Cuando se quiere sincronizar usando la lista + # $5: Path a la lista de archivos + #___________________________________________________________________ + # + function crearImagen() + { + case "$3" in + Windows) + OP_ARCHIVO="-aH" + OP_EXCLUDE="--exclude '$PARTICION/pagefile.sys'" + ;; + Linux) + OP_ARCHIVO="-alH" + OP_EXCLUDE="--exclude '/tmp ..exclude '/proc' --exclude='/sys'" + ;; + esac + + FREG=$OGLOGCOMMAND # Por defecto se redirecciona al archivo de log de comandos + + case "$4" in + 1) + OP_ARCHIVO=$OP_ARCHIVO"nv" # Simulación para crear lista + FREG=$5 + ;; + 2) + OP_FILELIST="--files-from=$5" + OP_ARCHIVO="$OP_ARCHIVO $OP_FILELIST" + ;; + esac + + OP_PASSWD=$FILE_PASSWD + echo "rsync $OP_ARCHIVO $OP_DELETE $OP_EXCLUDE $OP_PASSWD $1 $2 " | tee -a $OGLOGSESSION $OGLOGFILE + rsync $OP_ARCHIVO $OP_DELETE $OP_EXCLUDE $OP_PASSWD $1 $2>$FREG; + } + + #___________________________________________________________________ + # + # Función: restaurarImagen + # + # Descripción: + # + # Sincroniza archivos entre origen y destino. Al final del + # proceso el contenido de destino será igual al de origen. + # La restauración de imagen siempre tiene lugar entre la caché + # o un repositorio y una partición o carpeta como origen y destino + # respectivamente. + # + # Parámetros: + # + # $1: Origen + # $2: Destino + # $3: Sistema de ficheros de la partición + # $4: Indica si la sincronización es local o remota + # 1: El origen o el destino es remoto + # 2: Tanto el origen como el destino son locales + #___________________________________________________________________ + # + function restaurarImagen() + { + case "$3" in + Windows) + OP_ARCHIVO="-aH" + ;; + Linux) + OP_ARCHIVO="-alH" + ;; + esac + + case "$4" in + 1) + OP_PASSWD=$FILE_PASSWD + ;; + 2) + OP_PASSWD="" + ;; + esac + echo "rsync $OP_ARCHIVO $OP_DELETE $OP_PASSWD $1 $2" | tee -a $OGLOGSESSION $OGLOGFILE + rsync $OP_ARCHIVO $OP_DELETE $OP_PASSWD $1 $2>$OGLOGCOMMAND; + } +
\ No newline at end of file |