diff options
author | irina <irinagomez@us.es> | 2014-04-21 11:58:04 +0000 |
---|---|---|
committer | irina <irinagomez@us.es> | 2014-04-21 11:58:04 +0000 |
commit | c8bbcdc04f2c3960623c414552dbd1450451b162 (patch) | |
tree | d4301ac25aee8d1fe01b275f7fb11e19d4d72e70 | |
parent | 5b893bee9f58790a7d1aaca28ae60324421d45ee (diff) |
#565 se resuelve problema de corromper la imagen sincronizada al reducirla
git-svn-id: https://opengnsys.es/svn/branches/version1.0@4240 a21b9725-9963-47de-94b9-378ad31fedc9
-rwxr-xr-x | admin/Sources/Services/ogAdmRepoAux | 22 | ||||
-rwxr-xr-x | client/engine/Rsync.lib | 48 | ||||
-rw-r--r-- | client/shared/etc/lang.ca_ES.conf | 4 | ||||
-rw-r--r-- | client/shared/etc/lang.en_GB.conf | 4 | ||||
-rw-r--r-- | client/shared/etc/lang.es_ES.conf | 4 | ||||
-rwxr-xr-x | client/shared/scripts/createBaseImage | 6 | ||||
-rwxr-xr-x | client/shared/scripts/createDiffImage | 6 | ||||
-rwxr-xr-x | client/shared/scripts/restoreBaseImage | 22 | ||||
-rwxr-xr-x | client/shared/scripts/restoreDiffImage | 4 |
9 files changed, 72 insertions, 48 deletions
diff --git a/admin/Sources/Services/ogAdmRepoAux b/admin/Sources/Services/ogAdmRepoAux index 05bac0ce..7d21b241 100755 --- a/admin/Sources/Services/ogAdmRepoAux +++ b/admin/Sources/Services/ogAdmRepoAux @@ -101,9 +101,10 @@ case "$PARM1" in IMGFILE="$REPODIR/$PARM2.$IMGEXT" IMGDIR="$(dirname $IMGFILE)" [ -d $IMGDIR ] || mkdir -p $IMGDIR - mkdir -p "$DIRMOUNT" + LOCKFILE="$IMGFILE.lock" + SIZEREQUIRED="$PARM4" # Si existe la imagen hacemos copia de seguridad y la redimesionamos @@ -173,7 +174,8 @@ case "$PARM1" in exit $RETVAL fi - touch "$DIRMOUNT/ogimg.info" + #touch "$DIRMOUNT/ogimg.info" + echo "mounted"> "$LOCKFILE" TIME2=$[SECONDS-TIME] echolog "Fin creación/redimension de la imagen: $[TIME2/60]m $[TIME2%60]s" # Si existe dispositivo loop lo borramos. @@ -194,22 +196,30 @@ case "$PARM1" in DIRMOUNT="$DIRMOUNT.diff" fi IMGFILE="$REPODIR/$PARM2.$IMGEXT" + LOCKFILE="$IMGFILE.lock" echolog "Montamos la imagen $IMGFILE " mkdir -p "$DIRMOUNT" mountImage "$IMGFILE" "$DIRMOUNT" ro || (echolog "Error al montar la imagen"; exit 1) ;; UMOUNT_IMAGE) # Desmontamos el fichero imagen. - # Si el directorio esta ocupado no se desmontará + # Si el directorio esta ocupado no se desmontará #1 UMOUNT_IMAGE #2 nombre imagen #3 tipo de imagen [ img | diff ] IMGTYPE="$PARM3" DIRMOUNT="$REPODIR/mount/$PARM2" - [ "$IMGTYPE" == "diff" ] && DIRMOUNT="$DIRMOUNT.$IMGTYPE" + if [ "$IMGTYPE" == "img" ]; then + IMGEXT="img" + else + DIRMOUNT="$DIRMOUNT.$IMGTYPE" + IMGEXT="img.diff" + fi + LOCKFILE="$REPODIR/$PARM2.$IMGEXT.lock" echolog "Desmontamos la imagen $PARM2 $PARM3 " umount $DIRMOUNT rmdir $DIRMOUNT + [ -f $LOCKFILE ] && sed -i s/mounted//g $LOCKFILE ;; REDUCE_IMAGE) @@ -217,7 +227,7 @@ case "$PARM1" in #1 REDUCE_IMAGE #2 Nombre Imagen #3 Tipo de imagen [ img |diff ] - DIRMOUNT="$REPODIR""mount/${PARM2}" + DIRMOUNT="${REPODIR}mount/${PARM2}" if [ "$PARM3" == "img" ] ; then IMGEXT="img" else @@ -225,6 +235,7 @@ case "$PARM1" in DIRMOUNT="$DIRMOUNT.diff" fi IMGFILE="$REPODIR$PARM2.$IMGEXT" + LOCKFILE="$IMGFILE.lock" [ ! -f $IMGFILE ] && echolog "Imagen $IMGFILE no existe" && exit 1 # Solo funciona si la imagen es ext4, si no nos salimos sin error @@ -267,6 +278,7 @@ case "$PARM1" in echolog "truncate --size=\"$EXTSIZE\"k $IMGFILE" truncate --size="$EXTSIZE"k $IMGFILE rmdir $DIRMOUNT + echo "reduced" >$LOCKFILE ;; default) diff --git a/client/engine/Rsync.lib b/client/engine/Rsync.lib index 2c05b26f..0d750800 100755 --- a/client/engine/Rsync.lib +++ b/client/engine/Rsync.lib @@ -95,7 +95,8 @@ if [ "$1" == "CACHE" -o "$1" == "cache" ]; then # Monto la imagen ogMountImage $1 "$2" $3 &>/dev/null [ $? -eq 0 ] || return $( ogRaiseError $OG_ERR_IMAGE "$3 $4"; echo $?) - touch "$DIRMOUNT/ogimg.info" + #touch "$DIRMOUNT/ogimg.info" + echo "mounted"> $IMGFILE.lock # Si existe dispositivo de loop lo borro. [ $LOOPDEVICE ] && losetup -d $LOOPDEVICE 2>&1 &>/dev/null @@ -576,6 +577,7 @@ if [ "$1" == "CACHE" -o "$1" == "cache" ]; then DIRMOUNT="/tmp/$(ogGetMountImageDir "$2" $IMGTYPE)" umount "$DIRMOUNT" rmdir "$DIRMOUNT" + [ -f $IMGFILE.lock ] && sed -i s/"mounted"//g $IMGFILE.lock else [ -z $REPOIP ] && REPOIP=$(ogGetRepoIp) echo " hose $REPOIP 2009 --out sh -c echo -ne UMOUNT_IMAGE \"$2\" $IMGTYPE" @@ -616,34 +618,42 @@ echo "$DIRMOUNT" #/** -# ogWaitMountImage image_name extension imagen_size +# ogWaitSyncImage image_name extension stado imagen_size #@brief Se espera un tiempo a que se monte la imagen en el servidor. #@brief Cuando se esta creando la imagen hay que dar el tamaño, para que espere el tiempo de creación. #@param 1 Respositorio [ REPO | CACHE ] #@param 2 Nombre Imagen #@param 3 Tipo imagen [ img | diff ] -#@param 4 Tamaño imagen (opcional) +#@param 4 Estado [ mounted | reduced ] +#@param 5 Tamaño imagen (opcional) #*/ -function ogWaitMountImage () { -local SIZE TIME DIRMOUNT TIMEOUT TIMEAUX +function ogWaitSyncImage () { +local SIZE TIME DIRMOUNT TIMEOUT TIMEAUX LOCKFILE IMGDIR IMGEXT STATE TIME=$SECONDS # Ayuda o menos de 5 parametros y la imagen no es basica if [ "$*" == "help" ]; then ogHelp "$FUNCNAME": "$MSG_HELP_ogWaitMountImage" \ - "$FUNCNAME [ REPO | CACHE ] image_name extension [ image_size ] " \ + "$FUNCNAME [ REPO | CACHE ] image_name extension state [ image_size ] " \ "$FUNCNAME REPO Ubuntu12 img 30000000" \ "$FUNCNAME CACHE Windows7 diff " return fi -if [ $# -lt 2 ]; then - ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $FUNCNAME [ REPO | CACHE ] image_name extension [ image_size ] " +if [ $# -lt 4 ]; then + ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $FUNCNAME [ REPO | CACHE ] image_name extension state [ image_size ] " return $? fi -SIZE=${4:-"300000"} +SIZE=${5:-"300000"} +STATE="$4" +ogCheckStringInGroup "$STATE" "mounted reduced" || \ + return $(ogRaiseError command $OG_ERR_FORMAT "STATE = [ mounted | reduced ]" ) + +IMGDIR="$(ogGetParentPath "$1" "/$2")" +[ "$3" == "img" ] && IMGEXT="img" || IMGEXT="img.diff" +LOCKFILE="${IMGDIR}/$(basename "/$2").$IMGEXT.lock" if [ "$1" == "CACHE" -o "$1" == "cache" ]; then DIRMOUNT="/tmp/$(ogGetMountImageDir "$2" $3)" @@ -653,10 +663,14 @@ fi echo -n -e " $MSG_SYNC_SLEEP: $DIRMOUNT\n #" | tee -a $OGLOGSESSION $OGLOGFILE +# Comprobamos: mounted -> que exista $DIRMOUNT/ogimg.info o que el fichero de lock contenga mounted +# reduced -> que el fichero de lock contenga reduced. + # 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 +until $(grep -i $STATE $LOCKFILE &>/dev/null) ; do + [ $STATE = "mounted" -a -f "$DIRMOUNT/ogimg.info" ] && ogEcho session "" && return 0 TIMEAUX=$[SECONDS-TIME] [ "$TIMEAUX" -lt "$TIMEOUT" ] || return $(ogRaiseError $OG_ERR_DONTMOUNT_IMAGE "$3 $4 $IMGEXT"; echo $?) echo -n "#" | tee -a $OGLOGSESSION $OGLOGFILE @@ -702,21 +716,19 @@ file "$IMGFILE" | grep -i " ext4 filesystem " 2>&1 > /dev/null || return 0 if [ "$1" == "CACHE" -o "$1" == "cache" ]; then # Al montar se comprueba la existencia de la imagen - DIRMOUNT="$(ogMountImage $1 "$2" ${IMGEXT#*\.}) " - + DIRMOUNT="$(ogMountImage $1 "$2" ${IMGEXT#*\.})" AVAILABLE=$(df -k|grep "$DIRMOUNT$"|awk '{print $4}') # Si el espacio libre menor que 500Mb nos salimos if [ $AVAILABLE -lt 200000 ]; then ogUnmountImage $1 "$2" ${IMGEXT#*\.} + echo "reduced" > "$IMGFILE.lock" return 0 fi - # Calculamos la diferencia entre el tamaño interno y externo EXTSIZE=$(ls -l --block-size=1024 "$IMGFILE" | cut -f5 -d" ") INTSIZE=$(df -k|grep "$DIRMOUNT"|awk '{print $2}') let EDGESIZE=$EXTSIZE-$INTSIZE - ogUnmountImage $1 "$2" ${IMGEXT#*\.} LOOPDEVICE=$(losetup -f) losetup $LOOPDEVICE "$IMGFILE" @@ -724,7 +736,7 @@ if [ "$1" == "CACHE" -o "$1" == "cache" ]; then # Redimensiono sistema de ficheros echo " resize2fs -fpM $LOOPDEVICE" resize2fs -fpM $LOOPDEVICE |tee -a $OGLOGCOMMAND - ogMountImage $1 "$2" ${IMGEXT#*\.} + ogMountImage $1 "$2" ${IMGEXT#*\.} >/dev/null # Calculamos el tamaño final del archivo INTSIZE=$(df -k|grep "$DIRMOUNT"|awk '{print $2}') @@ -738,8 +750,8 @@ if [ "$1" == "CACHE" -o "$1" == "cache" ]; then echo " truncate --size=\"$EXTSIZE\"k $IMGFILE " truncate --size="$EXTSIZE"k "$IMGFILE" - # Desmonto y desbloqueo la imagen - rm -f "$IMGFILE.lock" + # Desmonto la imagen + echo "reduced" > "$IMGFILE.lock" rmdir "$DIRMOUNT" else @@ -799,7 +811,7 @@ file "$IMGFILE" | grep -i -e " BTRFS Filesystem " -e " ext4 filesystem " >/dev/n #@exception OG_ERR_FORMAT # 1 formato incorrecto. #@exception OG_ERR_NOTFOUND # 2 Fichero o dispositivo no encontrado. #*/ -ogCheckSyncImage (){ +function ogCheckSyncImage () { local IMGEXT IMGDIR IMGFILE DIRMOUNT RETVAL if [ "$*" == "help" ]; then diff --git a/client/shared/etc/lang.ca_ES.conf b/client/shared/etc/lang.ca_ES.conf index 789eae76..47c1ea51 100644 --- a/client/shared/etc/lang.ca_ES.conf +++ b/client/shared/etc/lang.ca_ES.conf @@ -31,7 +31,7 @@ MSG_ERR_MCASTRECEIVERFILE="Error en la recepcion MULTICAST de un fichero" MSG_ERR_MCASTSENDPARTITION="Error en envio MULTICAST de una particion" MSG_ERR_MCASTRECEIVERPARTITION="Error en la recepcion MULTICAST de un fichero" MSG_ERR_PROTOCOLJOINMASTER="Error en la conexion de una sesion UNICAST|MULTICAST con el MASTER" -MSG_ERR_DONTMOUNT_IMAGE="Error al montar la imagen" +MSG_ERR_DONTMOUNT_IMAGE="Error al montar/reducir la imagen" MSG_ERR_DONTUNMOUNT_IMAGE="Error al desmontar la imagen" MSG_ERR_DONTSYNC_IMAGE="Imagen no sincronizable" MSG_ERR_NOTDIFFERENT="No se detectan diferencias entre la imagen basica y la particion." @@ -255,7 +255,7 @@ MSG_HTTPLOG_NOUSE="No apague este ordenador por favor" 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" +MSG_SYNC_SLEEP="Espera que se monte/reduzca la imagen" # mensajes syncronizadas complementarios a errores MSG_SYNC_DIFFERENTFS="El sistema de ficheros de destino no coincide con el de la imagen" MSG_SYNC_EXTENSION="Las extensiones de la imagenes deben ser img o diff" diff --git a/client/shared/etc/lang.en_GB.conf b/client/shared/etc/lang.en_GB.conf index d26b90cd..c8ea82d1 100644 --- a/client/shared/etc/lang.en_GB.conf +++ b/client/shared/etc/lang.en_GB.conf @@ -31,7 +31,7 @@ MSG_ERR_MCASTRECEIVERFILE="Error en la recepcion MULTICAST de un fichero" MSG_ERR_MCASTSENDPARTITION="Error en envio MULTICAST de una particion" MSG_ERR_MCASTRECEIVERPARTITION="Error en la recepcion MULTICAST de un fichero" MSG_ERR_PROTOCOLJOINMASTER="Error in connecting a Unicast|Multicast session to the master" -MSG_ERR_DONTMOUNT_IMAGE="Failed to mount image" +MSG_ERR_DONTMOUNT_IMAGE="Failed to mount/reduce image" MSG_ERR_DONTUNMOUNT_IMAGE="Failed to unmount image" MSG_ERR_DONTSYNC_IMAGE="Not synchronized image" MSG_ERR_NOTDIFFERENT="No differences were detected between the basic image and partition" @@ -255,7 +255,7 @@ MSG_HTTPLOG_NOUSE="NOT POWEROFF THIS COMPUTER" 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" +MSG_SYNC_SLEEP="Espera que se monte/reduzca la imagen" # mensajes syncronizadas complementarios a errores MSG_SYNC_DIFFERENTFS="El sistema de ficheros de destino no coincide con el de la imagen" MSG_SYNC_EXTENSION="Las extensiones de la imagenes deben ser img o diff" diff --git a/client/shared/etc/lang.es_ES.conf b/client/shared/etc/lang.es_ES.conf index b8a95c2d..3d26227d 100644 --- a/client/shared/etc/lang.es_ES.conf +++ b/client/shared/etc/lang.es_ES.conf @@ -31,7 +31,7 @@ MSG_ERR_MCASTRECEIVERFILE="Error en la recepción Multicast de un fichero" MSG_ERR_MCASTSENDPARTITION="Error en envío Multicast de una partición" MSG_ERR_MCASTRECEIVERPARTITION="Error en la recepción Multicast de un fichero" MSG_ERR_PROTOCOLJOINMASTER="Error en la conexión de una sesión Unicast|Multicast con el Master" -MSG_ERR_DONTMOUNT_IMAGE="Error al montar la imagen" +MSG_ERR_DONTMOUNT_IMAGE="Error al montar/reducir la imagen" MSG_ERR_DONTUNMOUNT_IMAGE="Error al desmontar la imagen" MSG_ERR_DONTSYNC_IMAGE="Imagen no sincronizable" MSG_ERR_NOTDIFFERENT="No se detectan diferencias entre la imagen básica y la partición" @@ -255,7 +255,7 @@ MSG_HTTPLOG_NOUSE="No apague este ordenador por favor" 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" +MSG_SYNC_SLEEP="Espera que se monte/reduzca la imagen" # mensajes syncronizadas complementarios a errores MSG_SYNC_DIFFERENTFS="El sistema de ficheros de destino no coincide con el de la imagen" MSG_SYNC_EXTENSION="Las extensiones de la imagenes deben ser img o diff" diff --git a/client/shared/scripts/createBaseImage b/client/shared/scripts/createBaseImage index 4aa5acd3..538aa74b 100755 --- a/client/shared/scripts/createBaseImage +++ b/client/shared/scripts/createBaseImage @@ -139,7 +139,7 @@ TIMEAUX3=$[SECONDS-TIME2] ogEcho log session " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL : $[TIMEAUX3/60]m $[TIMEAUX3%60]s" # Esperamos que el servidor termine de crear y montar la imagen -ogWaitMountImage "$3" "$4" $IMGEXT $SIZEREQUIRED || exit $(ogRaiseError session $OG_ERR_DONTMOUNT_IMAGE "$3 $4 $IMGEXT: time_out."; echo $?) +ogWaitSyncImage "$3" "$4" $IMGEXT "mounted" $SIZEREQUIRED || exit $(ogRaiseError session $OG_ERR_DONTMOUNT_IMAGE "$3 $4 $IMGEXT: time_out."; echo $?) # Sincronizamos los datos de la particion con la imagen. ogEcho log session "[70] $MSG_HELP_ogSyncCreate." @@ -153,12 +153,12 @@ ogEcho log session " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL: $[TI # Reducimos la imagen: solo para kernel <= 3.7, imagenes con FS ext4. (Desmonta y desbloquea la imagen) ogEcho log session "[80] $MSG_HELP_ogReduceImage: $3 /$4.$IMGEXT" ogReduceImage $3 "$4" $IMGEXT -# TODO: necesaria funcion que espere a que se reduzca la imagen para continuar el script +# Esperamos que el servidor termine de reducir la imagen +ogWaitSyncImage "$3" "$4" $IMGEXT "reduced" $SIZEREQUIRED || exit $(ogRaiseError session $OG_ERR_DONTMOUNT_IMAGE "$3 $4 $IMGEXT: time_out."; echo $?) echo " " > $OGLOGCOMMAND # Comprobamos que la imagen esta bien detectacdo que es un sistema de ficheros. ogEcho log session "[95] $MSG_HELP_ogCheckSyncImage" -sleep 10 ogCheckSyncImage $3 "$4" "img" || exit $(ogRaiseError session $OG_ERR_IMAGE "$3 $4 img" ; echo $?) #resumen de la operacion diff --git a/client/shared/scripts/createDiffImage b/client/shared/scripts/createDiffImage index ef4b280f..e9806939 100755 --- a/client/shared/scripts/createDiffImage +++ b/client/shared/scripts/createDiffImage @@ -138,7 +138,7 @@ ogEcho log session "[40] $MSG_HELP_createDiffImage: $1 $2 $3 $4" ogMountImage $3 "$4" $IMGEXT >/dev/null # Comprobar que la imagen completa se ha montado -ogWaitMountImage $3 "$4" $IMGEXT || exit $(ogRaiseError session $OG_ERR_DONTMOUNT_IMAGE "$3 $4 $IMGEXT: time_out."; echo $?) +ogWaitSyncImage $3 "$4" $IMGEXT "mounted" || exit $(ogRaiseError session $OG_ERR_DONTMOUNT_IMAGE "$3 $4 $IMGEXT: time_out."; echo $?) # Creamos la informacion de la imagen. ogEcho log session "[50] $MSG_HELP_ogCreateInfoImage " @@ -181,7 +181,7 @@ ogEcho log session "[60] $MSG_HELP_ogCreateFileImage." ogCreateFileImage $3 "$5" $DIFFTYPE $SIZEREQUIRED # Esperamos que se monte la imagen despues de crarla en el servidor -ogWaitMountImage "$3" "$5" "$DIFFTYPE" $SIZEREQUIRED || exit $(ogRaiseError session $OG_ERR_DONTMOUNT_IMAGE "$3 $5 $DIFFTYPE: time_out."; echo $?) +ogWaitSyncImage "$3" "$5" "$DIFFTYPE" "mounted" $SIZEREQUIRED || exit $(ogRaiseError session $OG_ERR_DONTMOUNT_IMAGE "$3 $5 $DIFFTYPE: time_out."; echo $?) ogEcho log session "[70] $MSG_HELP_ogSyncCreate" # Copio los datos a la imagen diferecial : @@ -194,6 +194,8 @@ ogEcho log session " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL: $[ # Reducimos la imagen diferencial -> solo para kernel <= 3.7, imagenes con FS ext4 ogEcho log session "[80] $MSG_HELP_ogReduceImage: $3 /$4.$IMGEXT" ogReduceImage $3 "$5" $DIFFTYPE +# Esperamos que el servidor termine de reducir la imagen +ogWaitSyncImage "$3" "$5" $DIFFTYPE "reduced" $SIZEREQUIRED || exit $(ogRaiseError session $OG_ERR_DONTMOUNT_IMAGE "$3 $4 $IMGEXT: time_out."; echo $?) # TODO: necesaria funcion que espere a que se reduzca la imagen para continuar el script echo " " > $OGLOGCOMMAND diff --git a/client/shared/scripts/restoreBaseImage b/client/shared/scripts/restoreBaseImage index 9d8fd1be..318e7c6f 100755 --- a/client/shared/scripts/restoreBaseImage +++ b/client/shared/scripts/restoreBaseImage @@ -63,17 +63,21 @@ REPOFILE="$(ogGetPath "REPO" "$2.$IMGEXT")" || exit $(ogRaiseError session $OG_E # Comprobar que es sincronizable (con REPO) ogIsSyncImage REPO "$2" $IMGEXT || exit $(ogRaiseError session $OG_ERR_DONTSYNC_IMAGE "$1 $2"; echo $?) +IMGEXT="img" +# Comprobamos si la imagen o la particion estan bloqueada: +ogIsImageLocked "$1" "$2.$IMGEXT" && exit $(ogRaiseError session $OG_ERR_LOCKED "$1 $2.$IMGEXT"; echo $?) +ogIsLocked "$3" "$4" && exit $(ogRaiseError session $OG_ERR_LOCKED "$3 $4"; echo $?) + # Detectamos el sistema de ficheros de la imagen # TODO ogGetImageInfo DIRMOUNT=$(ogMountImage "$1" "$2") -ogWaitMountImage "$1" "$2" "$IMGEXT" || exit $(ogRaiseError session $OG_ERR_DONTMOUNT_IMAGE "$1 $2 $IMGEXT: time_out."; echo $?) +ogWaitSyncImage "$1" "$2" "$IMGEXT" "mounted" || exit $(ogRaiseError session $OG_ERR_DONTMOUNT_IMAGE "$1 $2 $IMGEXT: time_out."; echo $?) IMGFSTYPE=$(head -1 $DIRMOUNT/ogimg.info |cut -d: -f3) # Comprobamos si el sistema de ficheros se puede montar ogMount "$3" "$4" &>/dev/null || RETVAL=$? # Si da error formateamos el sistema de ficheros. if [ "$RETVAL" ] ; then - ogUnmountImage $1 "$2" ogEcho log session " $MSG_HELP_ogFormat: $3 $4 $IMGFSTYPE" ogFormat "$3" "$4" "$IMGFSTYPE" || exit $(ogRaiseError session $OG_ERR_FILESYS "$3 $4"; echo $?) ogMount "$3" "$4" || exit $(ogRaiseError session $OG_ERR_FILESYS "$3 $4"; echo $?) @@ -82,11 +86,6 @@ fi # Warning si el sistema de ficheros de la imagen es distinto del de la particion destino [ "$IMGFSTYPE" == "$(ogGetFsType $3 $4)" ] || ogEcho session warning "$MSG_SYNC_DIFFERENTFS" -IMGEXT="img" - -# Comprobamos si la imagen o la particion estan bloqueada: -ogIsImageLocked "$1" "$2.$IMGEXT" && exit $(ogRaiseError session $OG_ERR_LOCKED "$1 $2.$IMGEXT"; echo $?) -ogIsLocked "$3" "$4" && exit $(ogRaiseError session $OG_ERR_LOCKED "$3 $4"; echo $?) PROTO=${5:-"UNICAST"} if [ "$1" == "CACHE" -o "$1" == "cache" ]; then @@ -106,6 +105,9 @@ if [ "$1" == "CACHE" -o "$1" == "cache" ]; then TIMEAUX1=$[SECONDS-TIME] ogEcho log session " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL : $[TIMEAUX1/60]m $[TIMEAUX1%60]s" + # Montamos la imagen de cache + ogMountImage "$1" "$2" >/dev/null + ogWaitSyncImage "$1" "$2" "$IMGEXT" "mounted" || exit $(ogRaiseError session $OG_ERR_DONTMOUNT_IMAGE "$1 $2 $IMGEXT: time_out."; echo $?) fi TIME2=$SECONDS @@ -115,10 +117,6 @@ ogEcho log session "[40] $MSG_HELP_ogRestoreImage: $1 $2 $3 $4" ogLock $3 $4 -# Montamos la imagen basica. -ogMountImage "$1" "$2" "$IMGEXT" >/dev/null -# Comprobar que la imagen completa se ha montado. -ogWaitMountImage "$1" "$2" "$IMGEXT" || exit $(ogRaiseError session $OG_ERR_DONTMOUNT_IMAGE "$1 $2 $IMGEXT: time_out."; echo $?) # Sincronizamos la partición con la imagen. ogEcho log session "[60] $MSG_HELP_ogSyncRestore: $1 $2 $IMGEXT $3 $4" ogSyncRestore "$1" "$2" "$IMGEXT" $3 $4 @@ -134,7 +132,7 @@ ogUnmountImage "$1" "$2" "$IMGEXT" # Restableciendo acl ogUnlock $3 $4 ogEcho log session "[70] $MSG_HELP_ogRestoreInfoImage" -ogRestoreInfoImage $3 $4 +ogRestoreInfoImage $3 $4 2>&1 | tee -a $OGLOGCOMMAND # Llamar al script de post-configuración del sistema operativo. # Si a este script lo ha llamado el script restoreDiffImage no post-configuramos diff --git a/client/shared/scripts/restoreDiffImage b/client/shared/scripts/restoreDiffImage index 64ed388d..9af1064f 100755 --- a/client/shared/scripts/restoreDiffImage +++ b/client/shared/scripts/restoreDiffImage @@ -102,7 +102,7 @@ ogEcho log session "[40] $MSG_RESTORE $PART" # Montamos la diferencial ogMountImage "$1" "$3" "$DIFFTYPE" &>/dev/null # Comprobar que la imagen diferencial se ha montado -ogWaitMountImage "$1" "$3" "$DIFFTYPE" || exit $(ogRaiseError session $OG_ERR_DONTMOUNT_IMAGE "$1 $3 $DIFFTYPE: time_out $TIMEAUX seg.";echo $?) +ogWaitSyncImage "$1" "$3" "$DIFFTYPE" "mounted" || exit $(ogRaiseError session $OG_ERR_DONTMOUNT_IMAGE "$1 $3 $DIFFTYPE: time_out $TIMEAUX seg.";echo $?) ogMount $4 $5 >/dev/null ogLock $4 $5 @@ -121,7 +121,7 @@ ogEcho log session " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL : $[T # creando enlaces y restableciendo ACL (en windows) ogEcho log session "[70] $MSG_HELP_ogRestoreInfoImage" -ogRestoreInfoImage "$4" "$5" &>$OGLOGCOMMAND +ogRestoreInfoImage "$4" "$5" 2>&1 | tee -a $OGLOGCOMMAND # Llamar al script de post-configuración del sistema operativo. ogEcho log session "[90] $MSG_HELP_configureOs." |