diff options
author | irina <irinagomez@us.es> | 2013-04-05 08:48:48 +0000 |
---|---|---|
committer | irina <irinagomez@us.es> | 2013-04-05 08:48:48 +0000 |
commit | 1ee5d4d3aae05f5fb3cadeb489c31b58ba1320f5 (patch) | |
tree | c91360d0d267607861039b7192bd1432470caed8 /client | |
parent | 3616e81db896d27650712c9b0e348c3419ae9dff (diff) |
#565 Internacionalizacion script imagenes sincronizadas
git-svn-id: https://opengnsys.es/svn/branches/version1.0@3731 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'client')
-rwxr-xr-x | client/engine/Rsync.lib | 90 | ||||
-rwxr-xr-x | client/engine/System.lib | 1 | ||||
-rw-r--r-- | client/shared/etc/lang.ca_ES.conf | 53 | ||||
-rw-r--r-- | client/shared/etc/lang.en_GB.conf | 24 | ||||
-rw-r--r-- | client/shared/etc/lang.es_ES.conf | 25 | ||||
-rwxr-xr-x | client/shared/etc/preinit/loadenviron.sh | 3 | ||||
-rwxr-xr-x | client/shared/scripts/createBaseImage | 47 | ||||
-rwxr-xr-x | client/shared/scripts/createDiffImage | 49 | ||||
-rwxr-xr-x | client/shared/scripts/restoreBaseImage | 52 | ||||
-rwxr-xr-x | client/shared/scripts/restoreDiffImage | 28 |
10 files changed, 253 insertions, 119 deletions
diff --git a/client/engine/Rsync.lib b/client/engine/Rsync.lib index 1a9cb4c4..477998de 100755 --- a/client/engine/Rsync.lib +++ b/client/engine/Rsync.lib @@ -52,7 +52,7 @@ if [ "$1" == "CACHE" -o "$1" == "cache" ]; then IMGSIZE=$(ls -lk $IMGFILE | awk '{print $5}') if [ $IMGSIZE -lt $SIZEREQUIRED ];then - echo " Redimensionamos la imagen al tamaño necesario" | tee -a $OGLOGSESSION $OGLOGFILE + echo " $MSG_SYNC_RESIZE" | tee -a $OGLOGSESSION $OGLOGFILE echo " truncate --size=>$SIZEREQUIRED k $IMGFILE" | tee -a $OGLOGSESSION $OGLOGFILE truncate --size=">$SIZEREQUIRED"k $IMGFILE &> $OGLOGCOMMAND echo " mount -o compress=lzo $IMGFILE $DIRMOUNT" @@ -79,15 +79,51 @@ if [ "$1" == "CACHE" -o "$1" == "cache" ]; then else [ -z $REPOIP ] && REPOIP=$(ogGetRepoIp) - echo " hose $REPOIP 2009 --out sh -c \"echo -ne CREATE_IMAGE $2 $3 $SIZEREQUIRED \"" + echo " hose $REPOIP 2009 --out sh -c \"echo -ne CREATE_IMAGE $2 $3 $SIZEREQUIRED \"" | tee -a $OGLOGSESSION $OGLOGFILE hose $REPOIP 2009 --out sh -c "echo -ne CREATE_IMAGE \"$2\" $3 $SIZEREQUIRED" fi } +#/** +# ogSetSizeInfo [REPO|CACHE] nombre_imagen extension tamaño +#@brief Configuramos la informacion del tamaño de los datos, para diferenciales +#@param 1 Repositorio [ REPO | CACHE ] (opcional en las completas) +#@param 2 Nombre Imagen Basica (opcional en las completas) +#@param 3 Extensión [ img | diff ] +#@param 4 Tamaño de los datos. +function ogSetSizeInfo () { +local DIRMOUNT UMOUNT + +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME [ REPO|CACHE ] image_name extension size_data " \ + "base image -> $FUNCNAME REPO Ubuntu12 img 34000000" \ + "diff image -> $FUNCNAME CACHE Windows7 diff 500000" + return +fi + +if [ $# -lt 4 ]; then + ogRaiseError $OG_ERR_FORMAT "$FUNCNAME [ REPO|CACHE ] image_name extension size_data " + return $? +fi + +DIRMOUNT=$(ogGetMountDir "$2" $3) +[ "$1" == "CACHE" -o "$1" == "cache" ] && DIRMOUNT="/tmp/$DIRMOUNT" || DIRMOUNT="$OGIMG/$DIRMOUNT" + +# Si no esta montada la imagen se monta. +[ -r $DIRMOUNT/ogimg.info ] && UMOUNT=false || ogMountImage $1 "$2" $3 +# se configura el tamaño +echo sed -i s/SIZEDATA/"$4"/g $DIRMOUNT/ogimg.info +sed -i s/SIZEDATA/"$4"/g $DIRMOUNT/ogimg.info +# se desmonta, si no estaba montada. +[ "$UMOUNT" == false ] || ogUnmountImage $1 "$2" $3 + + +} + function ogCreateInfoImage () { #/** -# ogCreateInfoImg +# ogCreateInfoImage #@brief Crear listados con la informacion de la imagen, los situa en /tmp. #@param 1 num_disk #@param 2 num_part @@ -113,7 +149,8 @@ fi if [ $3 == "img" ]; then IMGEXT="img" else - ogCheckStringInGroup $5 "img diff" || ogRaiseError $OG_ERR_FORMAT "Las extensiones de la imagenes deben ser img o diff" + # Comprobamos que las extension sea valida + ogCheckStringInGroup $5 "img diff" || ogRaiseError $OG_ERR_FORMAT $MSG_SYNC_EXTENSION IMGEXT=$5 if [ "$IMGEXT" == "diff" ]; then # Imagen completa con la que comparo la particion. @@ -147,9 +184,13 @@ IMGACL="/tmp/ogimg.acl" rm /tmp/ogimg.* 2>/dev/null rm $ORIG/ogimg.* 2>/dev/null -echo " Creamos la lista del contenido." | tee -a $OGLOGSESSION $OGLOGFILE +# Creamos la informacion del contenido de la imagen +#echo " $MSG_SYNC_CREATEINFO." | tee -a $OGLOGSESSION $OGLOGFILE + +# En las diferenciales no sabemos el tamaño -> ponemos una constante. +SIZEDATA=${SIZEDATA:-"SIZEDATA"} -echo "#BRTFS:LZO:$FSTYPE:SIZEDATA" > $IMGINFO +echo "#BRTFS:LZO:$FSTYPE:$SIZEDATA" > $IMGINFO if [ "$IMGEXT" == "img" ]; then # Imagen Basica echo " rsync -aHAXvn --delete $ORIG/ $DIREMPTY >> $IMGINFO" | tee -a $OGLOGSESSION $OGLOGFILE @@ -212,13 +253,6 @@ PART=$(ogDiskToDev "$1" "$2" 2>/dev/null) # Informacion del contenido. IMGACL="ogimg.acl" - -#if [ -r $DEST/ogimg.rm ]; then -# cd $DEST -# # TODO comprobar que cuando hay archivos para borrar va bien -# cat $DEST/ogimg.rm 2>/dev/null | xargs rm -rf -#fi - if [ -r $DEST/ogimg.ln ]; then while read dest enlace orig do @@ -285,7 +319,7 @@ else USERRSYNC="opengnsys" DESTRSYNC="$USERRSYNC@$REPOIP::ogimages/$DIRMOUNT" fi -echo " Sincronizamos los datos de la partición a la imagen" | tee -a $OGLOGSESSION $OGLOGFILE +# Sincronizamos los datos de la partición a la imagen echo " rsync -aHAX$OPTRSYNC --inplace --delete $FILESFROM $ORIG/ $DESTRSYNC" | tee -a $OGLOGSESSION $OGLOGFILE rsync -aHAXq$OPTRSYNC --inplace --delete $FILESFROM "$ORIG/" "$DESTRSYNC" echo " rsync -aHAX$OPTRSYNC --inplace /tmp/ogimg* $DESTRSYNC" | tee -a $OGLOGSESSION $OGLOGFILE @@ -321,7 +355,6 @@ fi DIRMOUNT=$(ogGetMountDir "$2" "$3") -#DESTRSYNC=$(ogMount $4 $5) DESTRSYNC=$(ogGetMountPoint $4 $5) # Borramos ficheros de informacion de restauraciones antiguas @@ -341,7 +374,9 @@ fi # Opciones rsync en cache y repo [ "$3" == "img" ] && [ "$ogrsyncdel" != "false" ] && OPTRSYNC="$OPTRSYNC --delete" -echo " Nos traemos listado ficheros y bajamos la imagen." |tee -a $OGLOGFILE +# Nos traemos listado ficheros y bajamos la imagen + +echo " $MSG_SYNC_RESTORE" |tee -a $OGLOGSESSION $OGLOGFILE # Si la imagen es diferencial nos traemos los archivos de informacion de la imagen. if [ "$3" == "diff" ]; then @@ -355,13 +390,12 @@ if [ "$3" == "diff" ]; then sed -i '/^\#/d' $DESTRSYNC/$IMGINFO cd $DESTRSYNC - # TODO comprobar que cuando hay archivos para borrar va bien - echo " Borramos archivos sobrantes" |tee -a $OGLOGFILE + # Diferencial: Borramos archivos sobrantes. + echo " $MSG_SYNC_DELETE" |tee -a $OGLOGFILE cat $DESTRSYNC/ogimg.rm 2>/dev/null | xargs rm -rf fi -echo " Sincronizamos los datos de la partición a la imagen" | tee -a $OGLOGSESSION $OGLOGFILE echo " rsync -aHAX$OPTRSYNC $FILESFROM $ORIG/ $DESTRSYNC" | tee -a $OGLOGSESSION $OGLOGFILE rsync -aHAXq$OPTRSYNC $FILESFROM "$ORIG/" "$DESTRSYNC" @@ -375,6 +409,7 @@ function ogMountImage () { #@param 1 Repositorio [ REPO | CACHE ] #@param 2 Nombre Imagen #@param 3 Extensión [ img |diff ] +#@return punto de montaje #*/ local IMGEXT IMGFILE DIRMOUNT @@ -393,17 +428,18 @@ fi [ "$3" == "" ] && IMGEXT="img" || IMGEXT="$3" +DIRMOUNT=$(ogGetMountDir "$2" $IMGEXT) + if [ "$1" == "CACHE" -o "$1" == "cache" ]; then IMGFILE=$(ogGetPath "$1" /"$2.$IMGEXT") - DIRMOUNT=/tmp/$(ogGetMountDir "$2" $IMGEXT) - mkdir -p "$DIRMOUNT" - echo " mount -o compress=lzo \"$IMGFILE\" \"$DIRMOUNT\"" | tee -a $OGLOGFILE - mount -o compress=lzo "$IMGFILE" "$DIRMOUNT" 1>/dev/null + mkdir -p "/tmp/$DIRMOUNT" + mount -o compress=lzo "$IMGFILE" "/tmp/$DIRMOUNT" 1>/dev/null + echo "/tmp/$DIRMOUNT" else [ -z $REPOIP ] && REPOIP=$(ogGetRepoIp) - echo " hose $REPOIP 2009 --out sh -c echo -ne MOUNT_IMAGE $2 $IMGEXT" |tee -a $OGLOGFILE hose $REPOIP 2009 --out sh -c "echo -ne MOUNT_IMAGE \"$2\" $IMGEXT" + echo "$OGIMG/$DIRMOUNT" fi @@ -511,19 +547,19 @@ else DIRMOUNT="$OGIMG/$(ogGetMountDir "$2" $3)" fi -echo -n -e " Esperamos que se monte la imagen en $DIRMOUNT\n #" +echo -n -e " $MSG_SYNC_SLEEP: $DIRMOUNT\n #" # time-out segun el tamaño de la imagen. por defecto: 100000k -> 3s let TIMEOUT=$SIZE/$CREATESPEED [ $TIMEOUT -lt 60 ] && TIMEOUT=60 until [ -f "$DIRMOUNT/ogimg.info" ] ; do TIMEAUX=$[SECONDS-TIME] - #[ "$TIMEAUX" -gt "$TIMEOUT" ] && return $(ogRaiseError "Error al montar la imagen $1 $2 $3: time_out $TIMEAUX seg."; echo $?) + #[ "$TIMEAUX" -gt "$TIMEOUT" ] && return $(ogRaiseError "$MSG_ERR_DONTMOUNT_IMAGE $1 $2 $3: time_out $TIMEAUX seg."; echo $?) # TODO definir el error [ "$TIMEAUX" -gt "$TIMEOUT" ] && return 2 echo -n "#" sleep 5 done -echo -e "\n" +echo "" } diff --git a/client/engine/System.lib b/client/engine/System.lib index ed6f24b6..ee574fda 100755 --- a/client/engine/System.lib +++ b/client/engine/System.lib @@ -94,6 +94,7 @@ case "$CODE" in $OG_ERR_MCASTSENDPARTITION) MSG="$MSG_ERR_MCASTSENDPARTITION \"$2\"" ;; $OG_ERR_MCASTRECEIVERPARTITION) MSG="$MSG_ERR_MCASTRECEIVERPARTITION \"$2\"" ;; $OG_ERR_PROTOCOLJOINMASTER) MSG="$MSG_ERR_PROTOCOLJOINMASTER \"$2\"" ;; + $OG_ERR_DONTMOUNT_IMAGE) MSG="$MSG_ERR_DONTMOUNT_IMAGE \"$2\"" ;; *) MSG="$MSG_ERR_GENERIC"; CODE=$OG_ERR_GENERIC ;; esac diff --git a/client/shared/etc/lang.ca_ES.conf b/client/shared/etc/lang.ca_ES.conf index 496c3001..45b76c86 100644 --- a/client/shared/etc/lang.ca_ES.conf +++ b/client/shared/etc/lang.ca_ES.conf @@ -1,4 +1,4 @@ -# Idioma español. +# Fichero de idioma: español. # Mensajes de error. MSG_ERR_GENERIC="Error imprevisto no definido" @@ -8,6 +8,7 @@ MSG_ERR_NOTFOUND="Fichero o dispositivo no encontrado" MSG_ERR_PARTITION="Partición errónea o desconocida" MSG_ERR_LOCKED="Recurso bloqueado por operación de uso exclusivo" MSG_ERR_CACHE="Error en partición de caché local" +MSG_ERR_NOGPT="El disco indicado no contiene una particion GPT" MSG_ERR_FILESYS="Sistema de archivos desconocido o no se puede montar" MSG_ERR_NOTOS="Sistema operativo no instalado o no detectado" MSG_ERR_IMAGE="No se puede crear o restaurar una image de sistema" @@ -74,6 +75,7 @@ MSG_POWEROFF="Apagar el equipo" MSG_SPEED="Velocidad" # Mensajes de descripción breve de las funciones de la API. +MSG_HELP_ogAddCmd="Añade comandos al fichero creado por la función ogInstalMiniSetup." MSG_HELP_ogAddRegistryKey="Añade una nueva clave al registro de Windows." MSG_HELP_ogAddRegistryValue="Añade un nuevo valor al registro de Windows." MSG_HELP_ogBoot="Arranca un sistema operativo instalado." @@ -82,9 +84,13 @@ MSG_HELP_ogCheckFs="Comprueba la consistencia de un sistema de archivos." MSG_HELP_ogCompareChecksumFiles="Compara si coinciden las sumas de comprobación almacenadas de 2 ficheros." MSG_HELP_ogCopyFile="Copia un fichero a otro almacenamiento." MSG_HELP_ogCreateCache="Reserva espacio para la partición de caché al final del disco 1." +MSG_HELP_ogCreateFileImage="Crea el archivo de la imagen sincronizada" MSG_HELP_ogCreateImage="Genera una imagen exacta de un sistema operativo instalado localmente." +MSG_HELP_ogCreateInfoImage="Crea informacion del contenido de la imagen" MSG_HELP_ogCreateMbrImage="Genera una imagen del sector de arranque (MBR)." MSG_HELP_ogCreatePartitions="Define la estructura de particiones de un disco." +MSG_HELP_ogCreatePartitionTable="Genera una tabla de particiones en caso de que no sea valida." +MSG_HELP_ogDeleteCache="Elimina la partición de caché local." MSG_HELP_ogDeleteFile="Borra un fichero de un espacio de almacenamiento." MSG_HELP_ogDeletePartitionTable="Elimina la tabla de particiones del disco" MSG_HELP_ogDeleteRegistryKey="Borra una clave vacía del registro de Windows." @@ -101,20 +107,25 @@ MSG_HELP_ogFormatFs=$MSG_HELP_ogFormat MSG_HELP_ogGetArch="Devuelve el tipo de arquitectura del cliente." MSG_HELP_ogGetCacheSize="Devuelve el tamaño de la partición de caché local." MSG_HELP_ogGetCacheSpace="Devuelve el espacio máximo disponible que puede ser reservado para la partición de caché local." +MSG_HELP_ogGetDiskSize="Devuelve el tamaño del disco." MSG_HELP_ogGetFsSize="Devuelve el tamaño de un sistema de archivos." MSG_HELP_ogGetFsType="Devuelve el mnemónico de tipo de sistema de archivos." +MSG_HELP_ogGetGroupDir="Devuelve el cmaino del directorio por defecto para el grupo del cliente." +MSG_HELP_ogGetGroupName="Devuelve el nombre del grupo al que pertenece el cliente." MSG_HELP_ogGetHivePath="Devuelve el camino completo del fichero de una sección del registro de Windows." MSG_HELP_ogGetHostname="Devuelve el nombre de la máquina local." MSG_HELP_ogGetIpAddress="Devuelve la dirección IP del cliente." MSG_HELP_ogGetImageSize="Devuelve el tamaño de una imagen de sistema." +MSG_HELP_ogGetLastSector="Devuelve el último sector usable del disco o de una partición." MSG_HELP_ogGetMacAddress="Devuelve la dirección Ethernet del cliente." MSG_HELP_ogGetMountPoint="Devuelve el directorio donde está montado un sistema de archivos local." MSG_HELP_ogGetOsType="Devuelve el tipo de un sistema operativo instalado." MSG_HELP_ogGetOsVersion="Devuelve el tipo y la versión de un sistema operativo instalado." -MSG_HELP_ogGetParentPath=$"Devuelve el camino completo del directorio padre de un fichero de sistema OpenGnSys." +MSG_HELP_ogGetParentPath="Devuelve el camino completo del directorio padre de un fichero de sistema OpenGnSys." MSG_HELP_ogGetPartitionActive="Indica cual es la partición marcada como activa en un disco." MSG_HELP_ogGetPartitionId="Devuelve el identificador de tipo de una partición." MSG_HELP_ogGetPartitionSize="Devuelve el tamaño de una partición." +MSG_HELP_ogGetPartitionTableType="Devuelve el tipo de tabla de particiones del disco" MSG_HELP_ogGetPartitionType="Devuelve el mnemónico de tipo de una partición." MSG_HELP_ogGetPath="Devuelve el camino completo de un fichero de sistema OpenGnSys." MSG_HELP_ogGetRegistryValue="Devuelve el dato de un valor del registro de Windows." @@ -124,6 +135,9 @@ MSG_HELP_ogGetWindowsName="Devuelve el nombre del cliente guardado en el registr MSG_HELP_ogHelp="Muestra mensajes de ayudas para las funciones." MSG_HELP_ogHidePartition="Oculta una partición de Windows." MSG_HELP_ogIdToType="Devuelve el mnemónico asociado al identificador de tipo de partición." +MSG_HELP_ogInstallLinuxClient="Instala el cliente OpenGnSys en un sistema operativo GNU/Linux." +MSG_HELP_ogInstallMiniSetup="Instala un archivo que se ejecutará en el arranque de Windows." +MSG_HELP_ogInstallWindowsClient="Instala el cliente OpenGnSys en un sistema operativo Window." MSG_HELP_ogIsFormated="Comprueba si un sistema de archivos está formateado." MSG_HELP_ogIsLocked="Comprueba si una partición está bloqueada por una operación de uso exclusivo." MSG_HELP_ogIsImageLocked="Comprueba si una imagen está bloqueada por una operación de uso exclusivo." @@ -149,6 +163,7 @@ MSG_HELP_ogMountFs=$MSG_HELP_ogMount MSG_HELP_ogRaiseError="Muestra y registra mensajes de error y devuelve el código correspondiente." MSG_HELP_ogReduceFs="Reduce el tamaño del sistema de archivos al mínimo ocupado por sus datos." MSG_HELP_ogRestoreImage="Restaura una imagen de sistema operativo." +MSG_HELP_ogRestoreInfoImage="Restablece informacion del sistema: acl y enlaces simbolicos" MSG_HELP_ogRestoreMbrImage="Restaura una imagen del sector de arranque (MBR)." MSG_HELP_ogSetPartitionActive="Establece el número de partición activa de un disco." MSG_HELP_ogSetPartitionId="Modifica el tipo de una partición física usando el mnemónico del tipo." @@ -157,22 +172,32 @@ MSG_HELP_ogSetPartitionType="Modifica el identificador de tipo de una partición MSG_HELP_ogSetRegistryValue="Asigna un dato a un valor del registro de Windows." MSG_HELP_ogSetWindowsName="Asigna el nombre del cliente en el registro de Windows." MSG_HELP_ogSetWinlogonUser="Asigna el nombre de usuario por defecto para el gestor de entrada de Windows." +MSG_HELP_ogSyncCreate="Sincroniza los datos de la particion a la imagen" +MSG_HELP_ogSyncRestore="Sincroniza los datos de la imagen a la particion" MSG_HELP_ogTypeToId="Devuelve el identificador asociado al mnemónico de tipo de partición." MSG_HELP_ogUnhidePartition="Hace visible una partición de Windows." MSG_HELP_ogUnlock="Desbloquea una partición tras finalizar una operación de uso exclusivo." MSG_HELP_ogUnlockImage="Desbloquea una imagen tras finalizar una operación de uso exclusivo." MSG_HELP_ogUnlockPartition=$MSG_HELP_ogUnlock MSG_HELP_ogUnmount="Desmonta un sistema de archivos." +MSG_HELP_ogUnmountAll="Desmonta todos los sistemas de archivos." MSG_HELP_ogUnmountCache="Desmonta el sistema de archivos de caché local." MSG_HELP_ogUnmountFs=$MSG_HELP_ogUnmount -MSG_HELP_ogUnmountAll="Desmonta todos los sistemas de archivos." +MSG_HELP_ogUnmountImage="Desmonta la imagen" MSG_HELP_ogUpdatePartitionTable="Actualiza informacion tabla particiones del disco" +# scripts +MSG_HELP_configureOs="Post-configura de arranque del sistema" +MSG_HELP_restoreDiffImage="Genera imagen diferencial de la particion respecto a la imagen completa" +MSG_HELP_updateCache="Realiza la actualizacion de la cache" + + + # Mensajes de descripción breve de la interfaz. -MSG_INTERFACE_START="[START Interface ] Ejecutar comando: " +MSG_INTERFACE_START="[START Interface] Ejecutar comando: " MSG_INTERFACE_END="[END Interface] Comando terminado con este código: " -# SCRIPTS messages. +# Mensajes de scripts. MSG_SCRIPTS_START=" INICIO scripts : " MSG_SCRIPTS_END=" FIN scripts: " @@ -180,11 +205,11 @@ MSG_SCRIPTS_TASK_SLEEP="Esperando para iniciar" MSG_SCRIPTS_TASK_START="Iniciando" MSG_SCRIPTS_TASK_ERR="Error" -# scripts createImage +# Script createImage. MSG_SCRIPTS_FILE_RENAME=" Renombrar fichero-imagen previo: " MSG_SCRIPTS_CREATE_SIZE=" Calcular espacio (KB) requerido para almacenarlo y el disponible: " -#scripts updateCache +# Script updateCache. MSG_SCRIPTS_UPDATECACHE_DOUPDATE="Comprobamos si Actualizacion - existe una imagen con igual nombre pero distinto sum-" MSG_SCRIPTS_UPDATECACHE_CHECKSIZECACHE="Comprobar que el tamaño de la cache es mayor que el fichero a descargar." MSG_SCRIPTS_UPDATECACHE_IFNOTCACHEDO="Comprobar el espacio libre de la cache y actuar según engine.cfg" @@ -202,5 +227,17 @@ MSG_SCRIPTS_OS_CONFIGURE="Iniciar la configuracion del sistema restaurado" MSG_SCRIPTS_TIME_TOTAL="tiempo total del proceso" MSG_SCRIPTS_TIME_PARTIAL="tiempo parcial del subproceso" -#HTTPLOG +# HTTPLOG MSG_HTTPLOG_NOUSE="No apague este ordenador por favor" + +# mensajes syncronizadas +MSG_SYNC_RESIZE="Redimensiona la imagen al tamaño necesario" +MSG_SYNC_RESTORE="Trae el listado ficheros y baja la imagen" +MSG_SYNC_DELETE="Diferencial: Borra archivos antiguos" +MSG_SYNC_SLEEP="Espera que se monte la imagen" +# mensajes syncronizadas complementarios a errores +MSG_SYNC_EXTENSION="Las extensiones de la imagenes deben ser img o diff" + +MSG_RESTORE="Restaura la imagen en" +MSG_FORMAT="Formateamos la particion" + diff --git a/client/shared/etc/lang.en_GB.conf b/client/shared/etc/lang.en_GB.conf index d4d1c0a1..27b680f5 100644 --- a/client/shared/etc/lang.en_GB.conf +++ b/client/shared/etc/lang.en_GB.conf @@ -82,7 +82,9 @@ MSG_HELP_ogCheckFs="Check a filesystem." MSG_HELP_ogCompareChecksumFiles="Compare if the checksums match." MSG_HELP_ogCopyFile="Copy a file to other storage." MSG_HELP_ogCreateCache="Reserve space for the cache partition at the end of disc 1." +MSG_HELP_ogCreateFileImage="Crea el archivo de la imagen sincronizada" MSG_HELP_ogCreateImage="Create an exact image from a local filesystem." +MSG_HELP_ogCreateInfoImage="Crea informacion del contenido de la imagen" MSG_HELP_ogCreateMbrImage="Create an MBR image." MSG_HELP_ogCreatePartitions="Create the disc partition table." MSG_HELP_ogDeleteFile="Delete a file." @@ -149,6 +151,7 @@ MSG_HELP_ogMountFs=$MSG_HELP_ogMount MSG_HELP_ogRaiseError="Muestra y registra mensajes de error y devuelve el código correspondiente." MSG_HELP_ogReduceFs="Reduce el tamaño del sistema de archivos al mínimo ocupado por sus datos." MSG_HELP_ogRestoreImage="Restore a filesystem image." +MSG_HELP_ogRestoreInfoImage="Restablece informacion del sistema: acl y enlaces simbolicos" MSG_HELP_ogRestoreMbrImage="Restore the boot sector image (MBR)." MSG_HELP_ogSetPartitionActive="Establece el número de partición activa de un disco." MSG_HELP_ogSetPartitionId="Change the partition identification using mnemonic." @@ -157,17 +160,25 @@ MSG_HELP_ogSetPartitionType="Change the partition identification usign hexadecim MSG_HELP_ogSetRegistryValue="Asigna un dato a un valor del registro de Windows." MSG_HELP_ogSetWindowsName="Asign the Windows hostname." MSG_HELP_ogSetWinlogonUser="Asign the Windows default username." +MSG_HELP_ogSyncCreate="Sincroniza los datos de la particion a la imagen" +MSG_HELP_ogSyncRestore="Sincroniza los datos de la imagen a la particion" MSG_HELP_ogTypeToId="Devuelve el identificador asociado al mnemónico de tipo de partición." MSG_HELP_ogUnhidePartition="Unhide a Windows partition." MSG_HELP_ogUnlock="Desbloquea una partición tras finalizar una operación de uso exclusivo." MSG_HELP_ogUnlockImage="Desbloquea una imagen tras finalizar una operación de uso exclusivo." MSG_HELP_ogUnlockPartition=$MSG_HELP_ogUnlock MSG_HELP_ogUnmount="Unmount a filesystem." +MSG_HELP_ogUnmountAll="Unmount all filesystems." MSG_HELP_ogUnmountCache="Unmount the cache filesystem." MSG_HELP_ogUnmountFs=$MSG_HELP_ogUnmount -MSG_HELP_ogUnmountAll="Unmount all filesystems." +MSG_HELP_ogUnmountImage="Desmonta la imagen" MSG_HELP_ogUpdatePartitionTable="Update info about disk partition table " +# scripts +MSG_HELP_configureOs="Post-configura de arranque del sistema" +MSG_HELP_restoreDiffImage="Genera imagen diferencial de la particion respecto a la imagen completa" +MSG_HELP_updateCache="Realiza la actualizacion de la cache" + # INTERFACE functions menssages. MSG_INTERFACE_START="[START Interface] Run this command: " MSG_INTERFACE_END="[END Interface] Command finished with this code: " @@ -205,3 +216,14 @@ MSG_SCRIPTS_TIME_PARTIAL="Part-time process" #HTTPLOG MSG_HTTPLOG_NOUSE="NOT POWEROFF THIS COMPUTER" + +# mensajes syncronizadas +MSG_SYNC_RESIZE="Redimensiona la imagen al tamaño necesario" +MSG_SYNC_RESTORE="Trae el listado ficheros y baja la imagen" +MSG_SYNC_DELETE="Diferencial: Borra archivos antiguos" +MSG_SYNC_SLEEP="Espera que se monte la imagen" +# mensajes syncronizadas complementarios a errores +MSG_SYNC_EXTENSION="Las extensiones de la imagenes deben ser img o diff" + +MSG_RESTORE="Restaura la imagen en" +MSG_FORMAT="Formateamos la particion" diff --git a/client/shared/etc/lang.es_ES.conf b/client/shared/etc/lang.es_ES.conf index cb2cd22b..45b76c86 100644 --- a/client/shared/etc/lang.es_ES.conf +++ b/client/shared/etc/lang.es_ES.conf @@ -84,7 +84,9 @@ MSG_HELP_ogCheckFs="Comprueba la consistencia de un sistema de archivos." MSG_HELP_ogCompareChecksumFiles="Compara si coinciden las sumas de comprobación almacenadas de 2 ficheros." MSG_HELP_ogCopyFile="Copia un fichero a otro almacenamiento." MSG_HELP_ogCreateCache="Reserva espacio para la partición de caché al final del disco 1." +MSG_HELP_ogCreateFileImage="Crea el archivo de la imagen sincronizada" MSG_HELP_ogCreateImage="Genera una imagen exacta de un sistema operativo instalado localmente." +MSG_HELP_ogCreateInfoImage="Crea informacion del contenido de la imagen" MSG_HELP_ogCreateMbrImage="Genera una imagen del sector de arranque (MBR)." MSG_HELP_ogCreatePartitions="Define la estructura de particiones de un disco." MSG_HELP_ogCreatePartitionTable="Genera una tabla de particiones en caso de que no sea valida." @@ -161,6 +163,7 @@ MSG_HELP_ogMountFs=$MSG_HELP_ogMount MSG_HELP_ogRaiseError="Muestra y registra mensajes de error y devuelve el código correspondiente." MSG_HELP_ogReduceFs="Reduce el tamaño del sistema de archivos al mínimo ocupado por sus datos." MSG_HELP_ogRestoreImage="Restaura una imagen de sistema operativo." +MSG_HELP_ogRestoreInfoImage="Restablece informacion del sistema: acl y enlaces simbolicos" MSG_HELP_ogRestoreMbrImage="Restaura una imagen del sector de arranque (MBR)." MSG_HELP_ogSetPartitionActive="Establece el número de partición activa de un disco." MSG_HELP_ogSetPartitionId="Modifica el tipo de una partición física usando el mnemónico del tipo." @@ -169,17 +172,26 @@ MSG_HELP_ogSetPartitionType="Modifica el identificador de tipo de una partición MSG_HELP_ogSetRegistryValue="Asigna un dato a un valor del registro de Windows." MSG_HELP_ogSetWindowsName="Asigna el nombre del cliente en el registro de Windows." MSG_HELP_ogSetWinlogonUser="Asigna el nombre de usuario por defecto para el gestor de entrada de Windows." +MSG_HELP_ogSyncCreate="Sincroniza los datos de la particion a la imagen" +MSG_HELP_ogSyncRestore="Sincroniza los datos de la imagen a la particion" MSG_HELP_ogTypeToId="Devuelve el identificador asociado al mnemónico de tipo de partición." MSG_HELP_ogUnhidePartition="Hace visible una partición de Windows." MSG_HELP_ogUnlock="Desbloquea una partición tras finalizar una operación de uso exclusivo." MSG_HELP_ogUnlockImage="Desbloquea una imagen tras finalizar una operación de uso exclusivo." MSG_HELP_ogUnlockPartition=$MSG_HELP_ogUnlock MSG_HELP_ogUnmount="Desmonta un sistema de archivos." +MSG_HELP_ogUnmountAll="Desmonta todos los sistemas de archivos." MSG_HELP_ogUnmountCache="Desmonta el sistema de archivos de caché local." MSG_HELP_ogUnmountFs=$MSG_HELP_ogUnmount -MSG_HELP_ogUnmountAll="Desmonta todos los sistemas de archivos." +MSG_HELP_ogUnmountImage="Desmonta la imagen" MSG_HELP_ogUpdatePartitionTable="Actualiza informacion tabla particiones del disco" +# scripts +MSG_HELP_configureOs="Post-configura de arranque del sistema" +MSG_HELP_restoreDiffImage="Genera imagen diferencial de la particion respecto a la imagen completa" +MSG_HELP_updateCache="Realiza la actualizacion de la cache" + + # Mensajes de descripción breve de la interfaz. MSG_INTERFACE_START="[START Interface] Ejecutar comando: " @@ -218,3 +230,14 @@ MSG_SCRIPTS_TIME_PARTIAL="tiempo parcial del subproceso" # HTTPLOG MSG_HTTPLOG_NOUSE="No apague este ordenador por favor" +# mensajes syncronizadas +MSG_SYNC_RESIZE="Redimensiona la imagen al tamaño necesario" +MSG_SYNC_RESTORE="Trae el listado ficheros y baja la imagen" +MSG_SYNC_DELETE="Diferencial: Borra archivos antiguos" +MSG_SYNC_SLEEP="Espera que se monte la imagen" +# mensajes syncronizadas complementarios a errores +MSG_SYNC_EXTENSION="Las extensiones de la imagenes deben ser img o diff" + +MSG_RESTORE="Restaura la imagen en" +MSG_FORMAT="Formateamos la particion" + diff --git a/client/shared/etc/preinit/loadenviron.sh b/client/shared/etc/preinit/loadenviron.sh index 78288fac..0524b3a2 100755 --- a/client/shared/etc/preinit/loadenviron.sh +++ b/client/shared/etc/preinit/loadenviron.sh @@ -101,6 +101,7 @@ export OG_ERR_CACHESIZE=16 # No hay espacio en la cache para almacenar fichero-i export OG_ERR_REDUCEFS=17 # Error al reducir sistema archivos export OG_ERR_EXTENDFS=18 # Error al expandir el sistema de archivos export OG_ERR_OUTOFLIMIT=19 # Valor fuera de rango o no válido. +export OG_ERR_FILESYS=20 # Sistema de archivos desconocido o no se puede montar export OG_ERR_IMGSIZEPARTITION=30 # Error al restaurar partición más pequeña que la imagen @@ -116,4 +117,4 @@ export OG_ERR_MCASTSENDPARTITION=58 # Error en envio MULTICAST de una particion export OG_ERR_MCASTRECEIVERPARTITION=59 # Error en la recepcion MULTICAST de una particion export OG_ERR_PROTOCOLJOINMASTER=60 # Error en la conexion de una sesion UNICAST|MULTICAST con el MASTER - +export OG_ERR_DONTMOUNT_IMAGE=70 # Error al montar una imagen sincronizada. diff --git a/client/shared/scripts/createBaseImage b/client/shared/scripts/createBaseImage index 1e301aa8..14557877 100755 --- a/client/shared/scripts/createBaseImage +++ b/client/shared/scripts/createBaseImage @@ -24,6 +24,7 @@ #*/ ## trap "ogUnlockImage $3 \"/$4.$IMGEXT\"; ogUnlock $1 $2; hose $REPOIP 2009 --out sh -c \"echo -ne UMOUNT_IMAGE $4 $IMGEXT\" ; umount \"$DIRMOUNT\"; exit 1" 1 2 3 6 9 14 15 +#ogUnmountImage $3 "$4" $IMGEXT TIME1=$SECONDS @@ -43,8 +44,10 @@ fi IMGEXT="img" REPOIP=$(ogGetRepoIp) -echo "[1] $MSG_SCRIPTS_START $0 $*" | tee -a $OGLOGFILE +# Limpiamos fichero de log +echo -n ""> $OGLOGSESSION +echo "[1] $MSG_SCRIPTS_START $0 $*" | tee -a $OGLOGSESSION $OGLOGFILE # Comprobamos si la imagen o la particion estan bloqueada: ogIsImageLocked "$3" "$4.$IMGEXT" && echo "$MSG_ERR_LOCKED $3 $4.$IMGEXT" | tee -a $OGLOGSESSION $OGLOGFILE && exit $(ogRaiseError $OG_ERR_LOCKED "$3 $4.$IMGEXT" ; echo $?) @@ -52,7 +55,7 @@ ogIsLocked "$1" "$2" && echo "$MSG_ERR_LOCKED $1 $2" | tee -a $OGLOGSESSION $ # Si el repositorio es CACHE comprobamos que exista if [ "$3" == "CACHE" -o "$3" == "cache" ]; then - ! ogFindCache >/dev/null && exit $(ogRaiseError $OG_ERR_NOTCACHE "CACHE " | tee -a $OGLOGSESSION $OGLOGFIL | tee -a $OGLOGSESSION $OGLOGFILEE ; echo $?) + ! ogFindCache >/dev/null && exit $(ogRaiseError $OG_ERR_NOTCACHE "CACHE " | tee -a $OGLOGSESSION $OGLOGFILE ; echo $?) fi echo " " > $OGLOGCOMMAND @@ -81,24 +84,16 @@ else ogRaiseError $OG_ERR_PARTITION "$1 $2" exit $? fi -echo "[16] $PROG: $MSG_SCRIPTS_CREATE_SIZE $SIZEREQUIRED $SIZEFREE" | tee -a $OGLOGSESSION $OGLOGFILE +echo "[16]$MSG_SCRIPTS_CREATE_SIZE $SIZEREQUIRED $SIZEFREE" | tee -a $OGLOGSESSION $OGLOGFILE [ $SIZEREQUIRED -gt $SIZEFREE ] && exit $(ogRaiseError $OG_ERR_CACHESIZE "$3" || echo $?) IMGDIR=$(ogGetParentPath "$3" "/$4") IMGFILE=${IMGDIR[$3]}/$(basename "/$4").$IMGEXT -ogLockImage "$3" "/$4.$IMGEXT" - -# Si existe el fichero de la imagen se hace copia de seguridad y se redimensiona, si no existe se crea. -ogCreateFileImage $3 "$4" $IMGEXT $SIZEREQUIRED - - -DIRMOUNT="mount/$4" - # Comprobar consistencia del sistema de archivos. echo " " > $OGLOGCOMMAND SIZEFS=$(ogGetFsSize $1 $2) -FSTYPE=$(ogGetFsType $1 $2) +#FSTYPE=$(ogGetFsType $1 $2) echo "[20] $MSG_HELP_ogCheckFs $PART $SIZEFS (KB) " | tee -a $OGLOGSESSION $OGLOGFILE ogUnmount $1 $2 ogCheckFs $1 $2 &> $OGLOGCOMMAND || exit $(ogRaiseError $OG_ERR_PARTITION "ogCheckFs $1 $2" && echo $?) @@ -106,31 +101,40 @@ ogCheckFs $1 $2 &> $OGLOGCOMMAND || exit $(ogRaiseError $OG_ERR_PARTITION "ogChe # Crear la imagen. echo " " > $OGLOGCOMMAND TIME2=$SECONDS -echo "[40] $MSG_HELP_ogCreateImage $1 $2 $3 $4 " | tee -a $OGLOGSESSION $OGLOGFILE + + +ogLockImage "$3" "/$4.$IMGEXT" + +# Si existe el fichero de la imagen se hace copia de seguridad y se redimensiona, si no existe se crea. +echo "[30] $MSG_HELP_ogCreateFileImage." | tee -a $OGLOGSESSION $OGLOGFILE +ogCreateFileImage $3 "$4" $IMGEXT $SIZEREQUIRED # Creamos la lista del contenido y lo situamos en la particion a copiar. +echo "[50] $MSG_HELP_ogCreateImage $1 $2 $3 $4 " | tee -a $OGLOGSESSION $OGLOGFILE +echo " $MSG_HELP_ogCreateInfoImage" | tee -a $OGLOGSESSION $OGLOGFILE ogCreateInfoImage $1 $2 $IMGEXT TIMEAUX3=$[SECONDS-TIME2] -echo " Fin listado contenido y lista de control de acceso: $[TIMEAUX3/60]m $[TIMEAUX3%60]s" | tee -a $OGLOGSESSION $OGLOGFILE +echo " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL : $[TIMEAUX3/60]m $[TIMEAUX3%60]s" | tee -a $OGLOGSESSION $OGLOGFILE # Esperamos que el servidor termine de crear y montar la imagen #ogWaitMountImage "$3" "$4" $IMGEXT $SIZEREQUIRED || exit $(ogRaiseError "Error al montar la imagen $1 $2 $3: time_out $TIMEAUX seg."; echo $?) -ogWaitMountImage "$3" "$4" $IMGEXT $SIZEREQUIRED +ogWaitMountImage "$3" "$4" $IMGEXT $SIZEREQUIRED || exit $(ogRaiseError $OG_ERR_DONTMOUNT_IMAGE "$3 $4 $IMGEXT: time_out $TIMEAUX seg."; echo $?) + # Sincronizamos los datos de la particion con la imagen. -echo "[70] Sincronizamos los datos de la particion con la imagen." +echo " $MSG_HELP_ogSyncCreate." | tee -a $OGLOGSESSION $OGLOGFILE ogSyncCreate $1 $2 $3 "$4" $IMGEXT -echo " Desmontamos la imagen en $3" | tee -a $OGLOGSESSION $OGLOGFILE +echo " $MSG_HELP_ogUnmountImage: $3 /$4.$IMGEXT" | tee -a $OGLOGSESSION $OGLOGFILE ogUnmountImage $3 "$4" $IMGEXT ogUnlockImage "$3" "/$4.$IMGEXT" ogUnlock $1 $2 - TIMEAUX5=$[SECONDS-TIMEAUX3] -echo " Fin copia de ficheros a la imagen: $[TIMEAUX3/60]m $[TIMEAUX3%60]s" | tee -a $OGLOGSESSION $OGLOGFILE +echo " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL: $[TIMEAUX3/60]m $[TIMEAUX3%60]s" | tee -a $OGLOGSESSION $OGLOGFILE + # Comprobamos que la imagen esta bien detectacdo que es un sistema de ficheros. file $IMGFILE|grep "BTRFS Filesystem" 2>&1 >/dev/null [ $? == 0 ] || exit $(ogRaiseError $OG_ERR_IMAGE "$3 $4" ; echo $?) @@ -139,7 +143,6 @@ TIMEAUX7=$[SECONDS-TIME2] echo " $MSG_SCRIPTS_TIME_PARTIAL : $[TIMEAUX7/60]m $[TIMEAUX7%60]s" | tee -a $OGLOGSESSION $OGLOGFILE - #resumen de la operacion IMGSIZE=$(ls -s $IMGFILE | cut -f1 -d" ") # TODO: Hay que cambiar la funcion ogGetImageInfo @@ -147,5 +150,5 @@ IMGSIZE=$(ls -s $IMGFILE | cut -f1 -d" ") TIME=$[SECONDS-TIME1] echo "[100] $MSG_SCRIPTS_TIME_TOTAL $[TIME/60]m $[TIME%60]s" | tee -a $OGLOGSESSION $OGLOGFILE -echo " FileSystem $PART with $NEWSIZEFS KB data created onto file-image as $4 and used $IMGSIZE KB acros DFS rsync " | tee -a $OGLOGSESSION $OGLOGFILE -echo " Image-file $4 metada: $IMGOS " | tee -a $OGLOGSESSION $OGLOGFILE +echo " FileSystem $PART with $SIZEDATA KB data created onto file-image as $4 and used $IMGSIZE KB acros DFS rsync " | tee -a $OGLOGSESSION $OGLOGFILE +#echo " Image-file $4 metada: $IMGOS " | tee -a $OGLOGSESSION $OGLOGFILE diff --git a/client/shared/scripts/createDiffImage b/client/shared/scripts/createDiffImage index 7c5f868b..a8d60e2c 100755 --- a/client/shared/scripts/createDiffImage +++ b/client/shared/scripts/createDiffImage @@ -32,7 +32,6 @@ CREATESPEED=${CREATESPEED:-"100000*4"} TIME1=$SECONDS - PROG="$(basename $0)" if [ $# -lt 5 ]; then ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG ndisco nparticion REPO|CACHE base_image diff_image" @@ -53,7 +52,6 @@ ogIsLocked "$1" "$2" && exit $(ogRaiseError $OG_ERR_LOCKED "$1 $2"; echo $?) IMGFILE=$(ogGetPath "$3" "$4.$IMGEXT") || exit $(ogRaiseError $OG_ERR_NOTFOUND "$3 $4.$IMGEXT"; echo $?) # Comprobar que es sincronizable -#echo " Comprobamos que la imagen es sincronizable" file $IMGFILE | grep " BTRFS Filesystem" >/dev/null [ $? == 0 ] || exit $(ogRaiseError $OG_ERR_IMAGE "$3 $4"; echo $?) # Comprobar que no está bloqueada @@ -92,34 +90,37 @@ ogUnmount $1 $2 ogCheckFs $1 $2 >$OGLOGCOMMAND || exit $(ogRaiseError $OG_ERR_PARTITION "ogCheckFs $1 $2" && echo $?) TIMEAUX1=$[SECONDS-TIME1] -echo " Fin chequeo sistema de ficheros : $[TIMEAUX1/60]m $[TIMEAUX1%60]s" | tee -a $OGLOGSESSION $OGLOGFILE +echo " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL: $[TIMEAUX1/60]m $[TIMEAUX1%60]s" | tee -a $OGLOGSESSION $OGLOGFILE # Crear la imagen. echo " " > $OGLOGCOMMAND TIME2=$SECONDS -echo "[40] Genera imagen diferencial de la particion $1 $2 respecto a la imagen $3 $4" | tee -a $OGLOGSESSION $OGLOGFILE +echo "[40] $MSG_HELP_restoreDiffImage: $1 $2 $3 $4" | tee -a $OGLOGSESSION $OGLOGFILE # Creamos la lista del contenido y lo situamos en la particion a copiar. FSTYPE=$(ogGetFsType $1 $2) IMGDIRAUX=$(ogGetMountDir "$4" $IMGEXT) # Montamos imagen completa (con la que vamos a comparar) -ogMountImage $3 "$4" $IMGEXT +ogMountImage $3 "$4" $IMGEXT >/dev/null # Comprobar que la imagen completa se ha montado -ogWaitMountImage $3 "$4" $IMGEXT || exit $(ogRaiseError "Error al montar la imagen $1 $2 $3: time_out $TIMEAUX seg."; echo $?) -echo "[50] Creamos información de las diferencias" -echo ogCreateInfoImage $1 $2 $3 "$4" "$DIFFEXT" +#ogWaitMountImage $3 "$4" $IMGEXT || exit $(ogRaiseError "$MSG_ERR_DONTMOUNT_IMAGE $3 $4 $IMGEXT: time_out $TIMEAUX seg."; echo $?) +ogWaitMountImage $3 "$4" $IMGEXT || exit $(ogRaiseError $OG_ERR_DONTMOUNT_IMAGE "$3 $4 $IMGEXT: time_out $TIMEAUX seg."; echo $?) + +# Creamos la informacion de la imagen. +echo "[50] $MSG_HELP_ogCreateInfoImage " | tee -a $OGLOGSESSION $OGLOGFILE ogCreateInfoImage $1 $2 $3 "$4" "$DIFFEXT" TIMEAUX3=$[SECONDS-TIME2] -echo " Fin listado contenido y lista de control de acceso: $[TIMEAUX3/60]m $[TIMEAUX3%60]s" | tee -a $OGLOGSESSION $OGLOGFILE +echo " $MSG_SCRIPTS_TASK_END $MSG_SCRIPTS_TIME_PARTIAL: $[TIMEAUX3/60]m $[TIMEAUX3%60]s" | tee -a $OGLOGSESSION $OGLOGFILE #Calculamos el tamaño de la imagen: -ogMount $1 $2 +ogMount $1 $2 >/dev/null ogLock $1 $2 -cd $ORIG -SIZEREQUIRED=$(cat /tmp/ogimg.info | tr '\n' '\0'| du -c --files0-from=- 2>/dev/null|tail -n1 |cut -f1) -let SIZEREQUIRED=SIZEREQUIRED*115/100 +echo -n " $MSG_SCRIPTS_CREATE_SIZE" | tee -a $OGLOGSESSION $OGLOGFILE +cd $ORIG +SIZEDATA=$(cat /tmp/ogimg.info | tr '\n' '\0'| du -c --files0-from=- 2>/dev/null|tail -n1 |cut -f1) +let SIZEREQUIRED=SIZEDATA*115/100 # El tamaño mínimo del sistema de ficheros btrfs es 250M, ponemos 300 [ $SIZEREQUIRED -lt 300000 ] && SIZEREQUIRED=300000 TIMEAUX4=$[SECONDS-TIMEAUX3] @@ -127,29 +128,34 @@ TIMEAUX4=$[SECONDS-TIMEAUX3] # TODO: Comprueba que quepa en el repositorio [ "$3" == "CACHE" -o "$3" == "cache" ] && SIZEFREE=$(ogGetFreeSize `ogFindCache`) && ogMountCache >/dev/null [ "$3" == "REPO" -o "$3" == "repo" ] && SIZEFREE=$(df -k | grep $OGIMG | awk '{print $4}') -echo " $MSG_SCRIPTS_CREATE_SIZE $SIZEREQUIRED $SIZEFREE" | tee -a $OGLOGSESSION $OGLOGFILE +echo " $SIZEREQUIRED $SIZEFREE" | tee -a $OGLOGSESSION $OGLOGFILE + [ $SIZEREQUIRED -gt $SIZEFREE ] && exit $(ogRaiseError $OG_ERR_CACHESIZE "$3" || echo $?) -echo " Fin calculo tamaño imagen $SIZEREQUIRED: $[TIMEAUX4/60]m $[TIMEAUX4%60]s" | tee -a $OGLOGSESSION $OGLOGFILE +echo " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL $SIZEREQUIRED: $[TIMEAUX4/60]m $[TIMEAUX4%60]s" | tee -a $OGLOGSESSION $OGLOGFILE + +# Configuro la informacion del tamaño de los datos en /tmp/ogimg.info +sed -i s/SIZEDATA/"$SIZEDATA"/g /tmp/ogimg.info # Creamos o redimensionamos la imagen -echo "[60] Creamos el archivo de la imagen." | tee -a $OGLOGSESSION $OGLOGFILE +echo "[60] $MSG_HELP_ogCreateFileImage." | tee -a $OGLOGSESSION $OGLOGFILE ogCreateFileImage $3 "$5" $DIFFEXT $SIZEREQUIRED # Esperamos que se monte la imagen despues de crarla en el servidor -ogWaitMountImage "$3" "$5" "$DIFFEXT" $SIZEREQUIRED ||exit $(ogRaiseError "Error al montar la imagen $1 $2 $3: time_out $TIMEAUX seg."; echo $?) +ogWaitMountImage "$3" "$5" "$DIFFEXT" $SIZEREQUIRED ||exit $(ogRaiseError $OG_ERR_DONTMOUNT_IMAGE "$1 $2 $3: time_out $TIMEAUX seg."; echo $?) TIMEAUX6=$[SECONDS-TIMEAUX5] -echo -e " Fin preparacion imagen: $[TIMEAUX6/60]m $[TIMEAUX6%60]s" | tee -a $OGLOGSESSION $OGLOGFILE +echo -e " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL: $[TIMEAUX6/60]m $[TIMEAUX6%60]s" | tee -a $OGLOGSESSION $OGLOGFILE -echo "[80] Sincronizo los datos de la imagen." +echo "[80] $MSG_HELP_ogSyncCreate" | tee -a $OGLOGSESSION $OGLOGFILE # Copio los datos a la imagen diferecial : ogSyncCreate $1 $2 $3 "$5" $DIFFEXT ogUnmountImage $3 "$5" $DIFFEXT ogUnmountImage $3 "$4" $IMGEXT + TIMEAUX7=$[SECONDS-TIMEAUX6] -echo " Fin copia dato a diferencial: $[TIMEAUX7/60]m $[TIMEAUX7%60]s" | tee -a $OGLOGSESSION $OGLOGFILE +echo " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL: $[TIMEAUX7/60]m $[TIMEAUX7%60]s" | tee -a $OGLOGSESSION $OGLOGFILE TIMEAUX8=$[SECONDS-TIME2] @@ -160,7 +166,6 @@ ogUnlockImage "$3" "/$5.$DIFFEXT" ogUnlock $1 $2 # Comprobamos que la imagen esta bien -echo file "$DIFFFILE" |grep "BTRFS Filesystem" file "$DIFFFILE" |grep "BTRFS Filesystem" >/dev/null [ $? == 0 ] || exit $(ogRaiseError $OG_ERR_IMAGE "$3 $4"; echo $?) @@ -170,4 +175,4 @@ IMGSIZE=$(ls -s ${DIFFFILE[CACHE]}| cut -f1 -d" ") TIME=$[SECONDS-TIME1] echo "[100] $MSG_SCRIPTS_TIME_TOTAL $[TIME/60]m $[TIME%60]s" | tee -a $OGLOGSESSION $OGLOGFILE -echo " FileSystem $PART with $NEWSIZEFS KB data created onto file-image as $4 and used $IMGSIZE KB acros DFS rsync " | tee -a $OGLOGSESSION $OGLOGFILE +echo " FileSystem $PART with $SIZEDATA KB data created onto file-image as $4 and used $IMGSIZE KB acros DFS rsync " | tee -a $OGLOGSESSION $OGLOGFILE diff --git a/client/shared/scripts/restoreBaseImage b/client/shared/scripts/restoreBaseImage index cd0cb9f5..38e3e410 100755 --- a/client/shared/scripts/restoreBaseImage +++ b/client/shared/scripts/restoreBaseImage @@ -46,6 +46,21 @@ ogIsLocked "$3" "$4" && exit $(ogRaiseError $OG_ERR_LOCKED "$3 $4"; echo $?) # Procesar parámetros de entrada REPOFILE=$(ogGetPath "REPO" "$2.$IMGEXT") || exit $(ogRaiseError $OG_ERR_NOTFOUND "REPO, $2.$IMGEXT"; echo $?) +# Comprobamos si el sistema de ficheros se puede montar +ogMount "$3" "$4" &>/dev/null +if [ $? -ne 0 ] ; then + # TODO ogGetImageInfo + DIRMOUNT="/tmp/mount$$" + mkdir $DIRMOUNT + mount -o compress=lzo $REPOFILE $DIRMOUNT + FSTYPE=$(head -1 $DIRMOUNT/ogimg.info |cut -d: -f3) + umount $DIRMOUNT + echo " $MSG_FORMAT: $3 $4 $FSTYPE" | tee -a $OGLOGFILE + ogFormat "$3" "$4" "$FSTYPE" || exit $(ogRaiseError $OG_ERR_FILESYS "$3 $4"; echo $?) + ogMount "$3" "$4" || exit $(ogRaiseError $OG_ERR_FILESYS "$3 $4"; echo $?) +fi + + # Comprobar que es sincronizable (con REPO) # TODO: crear mensaje de error @@ -56,65 +71,56 @@ PROTO=${5:-"UNICAST"} if [ "$1" == "CACHE" -o "$1" == "cache" ]; then # Las imagenes sincronizables aunque sean iguales no tienen el mismo sum. # Sincronizamos si existe el fichero y si no usamos updateCache. - echo "[10] Realizando un updateCache REPO $2.img $PROTO $6" | tee -a $OGLOGFILE + echo "[10] $MSG_SCRIPTS_TASK_START updateCache REPO $2.img $PROTO $6" | tee -a $OGLOGFILE echo " updateCache REPO" "/$2.img" "$PROTO" "$6" | tee -a $OGLOGFILE updateCache REPO "/$2.img" "$PROTO" "$6" &>> $OGLOGCOMMAND RETVAL=$? if [ "$RETVAL" != "0" ] then - echo "[49] Fin del updateCache REPO $2.img $5 $6 con error $RETVAL" | tee -a $OGLOGFILE + echo "[39] $MSG_SCRIPTS_TASK_END updateCache REPO $2.img $5 $6 con error $RETVAL" | tee -a $OGLOGFILE # RC=15 No hay cache # RC=16 no hay espacio sufiente exit $RETVAL fi + TIMEAUX1=$[SECONDS-TIME] + echo " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL : $[TIMEAUX1/60]m $[TIMEAUX1%60]s" | tee -a $OGLOGFILE + fi + + TIME2=$SECONDS -PART=$(ogDiskToDev "$3" "$4") || exit $? # Restaurar la imagen. -echo "[40] Restaurar imagen en $PART" | tee -a $OGLOGFILE -DEST=$(ogMount "$3" "$4") -# Formateamos si es necesario -if [ $? -ne 0 ] ; then - # TODO ogGetImageInfo - DIRMOUNT="/tmp/mount$$" - mkdir $DIRMOUNT - mount -o compress=lzo $REPOFILE $DIRMOUNT - FSTYPE=$(head -1 $DIRMOUNT/ogimg.info |cut -d: -f3) - umount $DIRMOUNT - echo " Es necesario formatear la partición en $FSTYPE" | tee -a $OGLOGFILE - ogFormat "$3" "$4" "$FSTYPE" - ogMount "$3" "$4" || exit $? -fi +echo "[40] $MSG_HELP_ogRestoreImage: $1 $2 $3 $4" | tee -a $OGLOGFILE ogLock $3 $4 # Montamos la imagen basica. -ogMountImage "$1" "$2" "img" +ogMountImage "$1" "$2" "img" >/dev/null # Comprobar que la imagen completa se ha montado. ogWaitMountImage "$1" "$2" "img" # Sincronizamos la partición con la imagen. -echo "[60] Sincronizando la partición con la imagen" |tee -a $OGLOGFILE +echo "[60] $MSG_HELP_ogSyncRestore: $1 $2 img $3 $4" |tee -a $OGLOGFILE ogSyncRestore "$1" "$2" "img" $3 $4 TIMEAUX2=$[SECONDS-TIME2] -echo " Fin Restauracion: tiempo parcial : $[TIMEAUX2/60]m $[TIMEAUX2%60]s" | tee -a $OGLOGFILE +echo " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL : $[TIMEAUX2/60]m $[TIMEAUX2%60]s" | tee -a $OGLOGFILE # Desmontamos imagen basica. ogUnmountImage "$1" "$2" "img" # Restableciendo acl ogUnlock $3 $4 -echo "[70] Restableciendo lista de control de acceso." |tee -a $OGLOGFILE +echo "[70] $MSG_HELP_ogRestoreInfoImage" |tee -a $OGLOGFILE ogRestoreInfoImage $3 $4 &>>$OGLOGCOMMAND # Llamar al script de post-configuración del sistema operativo. -echo "[90] Post-configuracion de arranque del sistema." |tee -a $OGLOGFILE +echo "[90] $MSG_HELP_configureOs" |tee -a $OGLOGFILE configureOs $3 $4 &>>$OGLOGCOMMAND TIME=$[SECONDS-TIME1] -echo "[100] Duracion de la operacion $[TIME/60]m $[TIME%60]s" |tee -a $OGLOGFILE +echo "[100] $MSG_SCRIPTS_END $MSG_SCRIPTS_TIME_TOTAL: $[TIME/60]m $[TIME%60]s" |tee -a $OGLOGFILE diff --git a/client/shared/scripts/restoreDiffImage b/client/shared/scripts/restoreDiffImage index 168e94cb..a108f275 100755 --- a/client/shared/scripts/restoreDiffImage +++ b/client/shared/scripts/restoreDiffImage @@ -53,56 +53,56 @@ file $REPODIFFFILE | grep " BTRFS Filesystem" >/dev/null PROTO=${5:-"UNICAST"} if [ "$1" == "CACHE" -o "$1" == "cache" ]; then - echo "[10] Realizando la actualizacion de la cache." | tee -a $OGLOGFILE + echo "[10] $MSG_HELP_updateCache." | tee -a $OGLOGFILE echo " updateCache REPO" "/$2.$DIFFEXT" "$PROTO" "$6" | tee -a $OGLOGFILE updateCache REPO "/$2.$DIFFEXT" "$PROTO" "$6" &>> $OGLOGCOMMAND RETVAL=$? if [ "$RETVAL" != "0" ] then - echo "[49] Fin del updateCache REPO $2.$DIFFEXT $5 $6 con error $RETVAL" | tee -a $OGLOGFILE + echo "[39] $MSG_SCRIPTS_TASK_END updateCache REPO $2.$DIFFEXT $5 $6 con error $RETVAL" | tee -a $OGLOGFILE # RC=15 No hay cache # RC=16 no hay espacio sufiente exit $RETVAL fi TIMEAUX1=$[SECONDS-TIME] - echo " Fin actualizacion cache $1 $2 $3 $4 tiempo parcial : $[TIMEAUX2/60]m $[TIMEAUX2%60]s" | tee -a $OGLOGFILE + echo " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL : $[TIMEAUX1/60]m $[TIMEAUX1%60]s" | tee -a $OGLOGFILE + fi TIME2=$SECONDS PART=$(ogDiskToDev "$3" "$4" 2>/dev/null ) || exit $(ogRaiseError $OG_ERR_PARTITION "$1 $2"; echo $?) # Restaurar la imagen. -echo "[40] Restaurar imagen en $PART" - +echo "[40] $MSG_RESTORE $PART" # Montamos la diferencial -ogMountImage "$1" "$2" "diff" +ogMountImage "$1" "$2" "diff" &>/dev/null # Comprobar que la imagen diferencial se ha montado -ogWaitMountImage "$1" "$2" "diff" +ogWaitMountImage "$1" "$2" "diff" || exit $(ogRaiseError $OG_ERR_DONTMOUNT_IMAGE "$3 $4 diff: time_out $TIMEAUX seg."; echo $?) ogMount $3 $4 >/dev/null ogLock $3 $4 # Sincronizamos la partición con la imagen. +echo "[60] $MSG_HELP_ogSyncRestore: $1 $2 diff $3 $4" |tee -a $OGLOGFILE ogSyncRestore "$1" "$2" "diff" $3 $4 # Desmontamos la imagen ogUnmountImage "$1" "$2" "diff" - ogUnlock $3 $4 -# creando enlaces y restableciendo ACL (en windows) -echo " Diferencial: creando enlaces y borrando" | tee -a $OGLOGFILE -ogRestoreInfoImage "$3" "$4" &>$OGLOGCOMMAND TIMEAUX2=$[SECONDS-TIME2] -echo " Fin Restauracion $1 $2 $3 $4 tiempo parcial : $[TIMEAUX2/60]m $[TIMEAUX2%60]s" | tee -a $OGLOGFILE +echo " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL : $[TIMEAUX2/60]m $[TIMEAUX2%60]s" | tee -a $OGLOGFILE +# creando enlaces y restableciendo ACL (en windows) +echo "[70] $MSG_HELP_ogRestoreInfoImage" |tee -a $OGLOGFILE +ogRestoreInfoImage "$3" "$4" &>$OGLOGCOMMAND # Llamar al script de post-configuración del sistema operativo. -echo "[90] Post-configuracion de arranque del sistema." +echo "[90] $MSG_HELP_configureOs." configureOs $3 $4 TIME=$[SECONDS-TIME1] -echo "[100] Duracion de la operacion $[TIME/60]m $[TIME%60]s" +echo "[100] $MSG_SCRIPTS_END $MSG_SCRIPTS_TIME_TOTAL: $[TIME/60]m $[TIME%60]s" |tee -a $OGLOGFILE |