summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoririna <irinagomez@us.es>2014-04-10 12:44:32 +0000
committeririna <irinagomez@us.es>2014-04-10 12:44:32 +0000
commite2a744261040894f9214705de012e7222319de70 (patch)
tree9221df3ceb0f44cfae90d496a99cebbb38d556af
parent48b5016fd9f1f198572c80f4d503345638f6cf32 (diff)
#565 Sincronizadas. Se bloquean igual que las monoliticas. Al crear diferenciales se detecta si la particion es igual que la basica
git-svn-id: https://opengnsys.es/svn/branches/version1.0@4234 a21b9725-9963-47de-94b9-378ad31fedc9
-rwxr-xr-xadmin/Interface/CambiarAcceso2
-rwxr-xr-xadmin/Interface/CrearImagenBasica16
-rwxr-xr-xadmin/Interface/CrearSoftIncremental18
-rwxr-xr-xadmin/Sources/Services/ogAdmRepoAux19
-rwxr-xr-xclient/engine/Rsync.lib2
-rwxr-xr-xclient/shared/scripts/createBaseImage19
-rwxr-xr-xclient/shared/scripts/createDiffImage22
7 files changed, 44 insertions, 54 deletions
diff --git a/admin/Interface/CambiarAcceso b/admin/Interface/CambiarAcceso
index 64516e4f..73275eef 100755
--- a/admin/Interface/CambiarAcceso
+++ b/admin/Interface/CambiarAcceso
@@ -9,7 +9,7 @@
# Error si llamada no se realliza desde OpenGnSys Client.
PROG=$(basename $0)
CALLER=$(ogGetCaller)
-if [ "$CALLER" != "CrearImagen" -a "$CALLER" != "ConsolaRemota" ]; then
+if ! $(ogCheckStringInGroup "$CALLER" "CrearImagen ConsolaRemota CrearImagenBasica CrearSoftIncremental"); then
ogRaiseError $OG_ERR_NOTEXEC "$CALLER -> $PROG"
exit $?
fi
diff --git a/admin/Interface/CrearImagenBasica b/admin/Interface/CrearImagenBasica
index f89ef401..8aaf5aa8 100755
--- a/admin/Interface/CrearImagenBasica
+++ b/admin/Interface/CrearImagenBasica
@@ -51,13 +51,21 @@
# Registro de inicio de ejecución
ogEcho log session "$MSG_INTERFACE_START $0 $*"
+ # Si el destino es REPO y el cliente no está en modo "admin"; activar repositorio para escritura,
+ PATH=$PATH:$(dirname $0)
+ CLIENTIP=$(ogGetIpAddress)
+ [ "$4" == "$CLIENTIP" ] && DEST=CACHE || DEST=REPO
+ if [ "$DEST" == "REPO" -a "$boot" != "admin" ]; then
+ CambiarAcceso admin &>> $OGLOGFILE
+ RETVAL=$?
+ [ $RETVAL -gt 0 ] && exit $RETVAL
+ fi
+
if [ $7 -eq 1 ]; then
#sincronizacion1
ogCrearImagenBasica "$@"
RETVAL=$?
fi
-
-
if [ $7 -eq 2 ]; then
# Sincronizacion2
@@ -72,13 +80,15 @@
[ $DELFILE -eq 1 ] && export ogrsyncdel=true || export ogrsyncdel=false
[ $COMPRESS -eq 1 ] && export ogrsyncz=true || export ogrsyncz=false
- [ "$4" == "0.0.0.0" ] && DEST="CACHE" || DEST="REPO"
+ # [ "$4" == "0.0.0.0" ] && DEST="CACHE" || DEST="REPO"
createBaseImage $1 $2 $DEST "$3"
RETVAL=$?
fi
+ # Si estamos en modo user montamos el repositorio en modo lectura.
+ [ "$DEST" == "REPO" -a "$boot" != "admin" ] && CambiarAcceso user
# Registro de fin de ejecución
ogEcho log session "$MSG_INTERFACE_END $RETVAL"
diff --git a/admin/Interface/CrearSoftIncremental b/admin/Interface/CrearSoftIncremental
index 74edc4b5..fc29451e 100755
--- a/admin/Interface/CrearSoftIncremental
+++ b/admin/Interface/CrearSoftIncremental
@@ -50,6 +50,17 @@
# Registro de inicio de ejecución
ogEcho log session "$MSG_INTERFACE_START $0 $*"
+
+ # Si el destino es REPO y el cliente no está en modo "admin"; activar repositorio para escritura,
+ PATH=$PATH:$(dirname $0)
+ CLIENTIP=$(ogGetIpAddress)
+ [ "$4" == "$CLIENTIP" ] && DEST=CACHE || DEST=REPO
+ if [ "$DEST" == "REPO" -a "$boot" != "admin" ]; then
+ CambiarAcceso admin &>> $OGLOGFILE
+ RETVAL=$?
+ [ $RETVAL -gt 0 ] && exit $RETVAL
+ fi
+
if [ $8 -eq 1 ]; then
#sincronizacion1
ogCrearSoftIncremental "$@"
@@ -71,13 +82,16 @@
[ $COMPRESS -eq 1 ] && export ogrsyncz=true || export ogrsyncz=false
# REPOSITORIO: Si la ip es la del propio equipo CACHE, si no REPO
- CLIENTIP=$(ogGetIpAddress)
- [ "$4" == "$CLIENTIP" ] && DEST=CACHE || DEST=REPO
+ #CLIENTIP=$(ogGetIpAddress)
+ #[ "$4" == "$CLIENTIP" ] && DEST=CACHE || DEST=REPO
createDiffImage $1 $2 $DEST "$3" "$5"
RETVAL=$?
fi
+ # Si estamos en modo user montamos el repositorio en modo lectura.
+ [ "$DEST" == "REPO" -a "$boot" != "admin" ] && CambiarAcceso user
+
# Registro de fin de ejecución
ogEcho log session "$MSG_INTERFACE_END $RETVAL"
diff --git a/admin/Sources/Services/ogAdmRepoAux b/admin/Sources/Services/ogAdmRepoAux
index 1884f5d5..05bac0ce 100755
--- a/admin/Sources/Services/ogAdmRepoAux
+++ b/admin/Sources/Services/ogAdmRepoAux
@@ -231,7 +231,7 @@ case "$PARM1" in
file $IMGFILE |grep -i -e " ext4 filesystem " 2>&1 > /dev/null || exit 0
[ -d $DIRMOUNT ] || mkdir $DIRMOUNT
- mountImage "$IMGFILE" "$DIRMOUNT" || (echolog "Error al montar la imagen"; exit 1)
+ mountImage "$IMGFILE" "$DIRMOUNT" || (echolog "Error al montar la imagen $IMGFILE"; exit 1)
# Si el espacio libre menor que 500Mb desmontamos la imagen y nos salimos
AVAILABLE=$(df -k|grep $DIRMOUNT|awk '{print $4}')
@@ -259,31 +259,16 @@ case "$PARM1" in
# Calculamos el tamaño final del archivo
INTSIZE=$(df -k|grep "$DIRMOUNT"|awk '{print $2}')
let EXTSIZE=$INTSIZE+$EDGESIZE
- umount $DIRMOUNT
+ umount $DIRMOUNT || (echolog "Error al desmontar la imagen $IMGFILE"; exit 1)
# Si existe dispositivo loop lo borramos.
[ $LOOPDEVICE ] && losetup -a| grep $LOOPDEVICE &> /dev/null && losetup -d $LOOPDEVICE
# Corto el archivo al tamaño del sistema de ficheros
echo "truncate --size=\"$EXTSIZE\"k $IMGFILE"
echolog "truncate --size=\"$EXTSIZE\"k $IMGFILE"
truncate --size="$EXTSIZE"k $IMGFILE
-
rmdir $DIRMOUNT
;;
- LOCK_IMAGE)
- # Bloquea el archivo de la imagen.
- #1 LOCK_IMAGE
- #2 Nombre_Imagen.extension
- echolog "Bloqueamos imagen $REPODIR$PARM2"
- touch "$REPODIR$PARM2.lock"
- ;;
- UNLOCK_IMAGE)
- # Desloquea el archivo de la imagen.
- #1 UNLOCK_IMAGE
- #2 Nombre_Imagen.extension
- echolog "Desbloqueamos imagen $REPODIR$PARM2"
- rm -f "$REPODIR$PARM2.lock"
- ;;
default)
echolog "Solicitud con parametros \"$PARM\" no realizada, no registrada o con errores"
;;
diff --git a/client/engine/Rsync.lib b/client/engine/Rsync.lib
index b4811226..2c05b26f 100755
--- a/client/engine/Rsync.lib
+++ b/client/engine/Rsync.lib
@@ -209,7 +209,7 @@ else
# Comprobamos que los ficheros de diferencias no esten vacios o salimos con error.
if [ $(grep -v -e "^$" -e "^#" $IMGINFO /tmp/ogimg.ln /tmp/ogimg.rm |wc -l) -eq 0 ]; then
ogRaiseError $OG_ERR_NOTDIFFERENT "$1 $2 $3 $4 $5"
- return $0
+ return $?
fi
fi
diff --git a/client/shared/scripts/createBaseImage b/client/shared/scripts/createBaseImage
index b3b3b4b1..4aa5acd3 100755
--- a/client/shared/scripts/createBaseImage
+++ b/client/shared/scripts/createBaseImage
@@ -29,13 +29,8 @@ trap "onexit $1 $2 $3 \"$4\"" 1 2 3 6 9 14 15 EXIT
# Si salimos con error demontamos la imagen y desbloqueamos la imagen y la particion
function onexit() {
local exit_status=$?
- ogUnmountImage $3 "$4" $IMGEXT &>/dev/null
if [ $exit_status -ne 4 ]; then
- if [ "$3" == "CACHE" -o "$3" == "cache" ]; then
- ogUnlockImage "$3" "/$4.$IMGEXT"
- else
- hose $REPOIP 2009 --out sh -c "echo -ne UNLOCK_IMAGE \"$4.$IMGEXT\" "
- fi
+ ogUnlockImage "$3" "/$4.$IMGEXT"
ogUnlock $1 $2
fi
exit $exit_status
@@ -130,17 +125,10 @@ IMGFILE=${IMGDIR[$3]}/$(basename "/$4").$IMGEXT
echo " " > $OGLOGCOMMAND
TIME2=$SECONDS
-if [ "$3" == "CACHE" -o "$3" == "cache" ]; then
- ogLockImage "$3" "/$4.$IMGEXT"
-else
- ogEcho log session "hose $REPOIP 2009 --out sh -c echo -ne LOCK_IMAGE $4.$IMGEXT"
- hose $REPOIP 2009 --out sh -c "echo -ne LOCK_IMAGE \"$4.$IMGEXT\" "
-fi
-exit
-
ogEcho log session "[40] $MSG_HELP_ogCreateImage $1 $2 $3 $4 "
# Si existe el fichero de la imagen se hace copia de seguridad y se redimensiona, si no existe se crea.
ogEcho log session "[50] $MSG_HELP_ogCreateFileImage."
+ogLockImage "$3" "/$4.$IMGEXT"
ogCreateFileImage $3 "$4" $IMGEXT $SIZEREQUIRED
# Creamos la lista del contenido y lo situamos en la particion a copiar.
@@ -165,11 +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
-sleep 10
+# TODO: necesaria funcion que espere a que se reduzca la imagen para continuar el script
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 73ac893c..ef4b280f 100755
--- a/client/shared/scripts/createDiffImage
+++ b/client/shared/scripts/createDiffImage
@@ -33,13 +33,8 @@ function onexit() {
ogUnmountImage $3 "$5" $DIFFTYPE &>/dev/null
ogUnmountImage $3 "$4" $IMGEXT &>/dev/null
if [ $exit_status -ne 4 ]; then
- if [ "$3" == "CACHE" -o "$3" == "cache" ]; then
- ogUnlockImage "$3" "/$4.$IMGEXT" &>/dev/null
- ogUnlockImage "$3" "/$5.$DIFFEXT" &>/dev/null
- else
- hose $REPOIP 2009 --out sh -c "echo -ne UNLOCK_IMAGE \"$4.$IMGEXT\" "
- hose $REPOIP 2009 --out sh -c "echo -ne UNLOCK_IMAGE \"$5.$DIFFEXT\" "
- fi
+ ogUnlockImage "$3" "/$4.$IMGEXT" &>/dev/null
+ ogUnlockImage "$3" "/$5.$DIFFEXT" &>/dev/null
ogUnlock $1 $2 &>/dev/null
fi
exit $exit_status
@@ -109,13 +104,8 @@ ORIG=$(ogMount $1 $2) || exit $(ogRaiseError session $OG_ERR_PARTITION "$1 $2"
DIFFDIR="$(ogGetParentPath "$3" "/$5")"
DIFFFILE="$DIFFDIR/$5.$DIFFEXT"
-if [ "$3" == "CACHE" -o "$3" == "cache" ]; then
- ogLockImage "$3" "/$4.$IMGEXT"
- ogLockImage "$3" "/$5.$DIFFEXT"
-else
- hose $REPOIP 2009 --out sh -c "echo -ne LOCK_IMAGE \"$4.$IMGEXT\" "
- hose $REPOIP 2009 --out sh -c "echo -ne LOCK_IMAGE \"$5.$DIFFEXT\" "
-fi
+ogLockImage "$3" "/$4.$IMGEXT"
+ogLockImage "$3" "/$5.$DIFFEXT"
# Comprobar consistencia del sistema de archivos.
echo " " > $OGLOGCOMMAND
@@ -153,6 +143,7 @@ ogWaitMountImage $3 "$4" $IMGEXT || exit $(ogRaiseError session $OG_ERR_DONTMOUN
# Creamos la informacion de la imagen.
ogEcho log session "[50] $MSG_HELP_ogCreateInfoImage "
ogCreateInfoImage $1 $2 $3 "$4" "${DIFFTYPE}"
+[ $? -eq $OG_ERR_NOTDIFFERENT ] && exit $(ogRaiseError session $OG_ERR_NOTDIFFERENT; echo $?)
#Calculamos el tamaño de la imagen:
ogMount $1 $2 >/dev/null
@@ -203,11 +194,12 @@ 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
-sleep 10
+# TODO: necesaria funcion que espere a que se reduzca la imagen para continuar el script
echo " " > $OGLOGCOMMAND
# Comprobamos que la imagen esta bien
ogEcho log session "[95] $MSG_HELP_ogCheckSyncImage"
+sleep 10
ogCheckSyncImage $3 "$5" diff || exit $(ogRaiseError session $OG_ERR_IMAGE "$3 $5 diff"; echo $?)
#resumen de la operacion