summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xadmin/Sources/Services/ogAdmRepoAux13
-rwxr-xr-xclient/engine/Rsync.lib6
-rw-r--r--client/shared/etc/lang.ca_ES.conf2
-rw-r--r--client/shared/etc/lang.en_GB.conf2
-rw-r--r--client/shared/etc/lang.es_ES.conf2
-rwxr-xr-xserver/bin/createfileimage55
-rwxr-xr-xserver/bin/mountimage55
-rwxr-xr-xserver/bin/reduceimage50
-rwxr-xr-xserver/bin/unmountimage45
9 files changed, 218 insertions, 12 deletions
diff --git a/admin/Sources/Services/ogAdmRepoAux b/admin/Sources/Services/ogAdmRepoAux
index b26773a6..e1d40406 100755
--- a/admin/Sources/Services/ogAdmRepoAux
+++ b/admin/Sources/Services/ogAdmRepoAux
@@ -67,10 +67,9 @@ case "$PARM1" in
MOUNTDIR="$REPODIR/mount/${PARM2}"
[ "$IMGEXT" == "diff" ] && MOUNTDIR="$MOUNTDIR.$IMGEXT"
+ mkdir -p "$MOUNTDIR"
- # Aumentamos El tamaño por el error de rsycn -> Probar con menos tamaño
SIZEREQUIRED="$PARM4"
- #let SIZEREQUIRED=$PARM4*4/3
if [ -f "$IMGFILE" ]; then
echolog "Redimensionamos la imagen $IMGFILE al tamaño necesario: $SIZEREQUIRED"
@@ -117,15 +116,14 @@ case "$PARM1" in
fi
# Montamos la imagen.
- mkdir -p "$MOUNTDIR"
echolog "mount -o compress=lzo $IMGFILE $MOUNTDIR"
mount -o compress=lzo "$IMGFILE" "$MOUNTDIR"
[ "$?" == "0" -o "$?" == "32" ] || (echolog "Error al crear/redimensionar la imagen"; exit 1)
touch "$MOUNTDIR/ogimg.info"
TIME2=$[SECONDS-TIME]
echolog "Fin creación/redimension de la imagen: $[TIME2/60]m $[TIME2%60]s"
- echo losetup -d $LOOPDEVICE
- losetup -d $LOOPDEVICE
+ # Si existe dispositivo loop lo borramos.
+ [ $LOOPDEVICE ] && losetup -d $LOOPDEVICE
# TODO: comprobar que no se quede el losetup bloqueado.
;;
@@ -151,8 +149,9 @@ case "$PARM1" in
IMGEXT="$PARM3"
MOUNTDIR="$REPODIR/mount/$PARM2"
[ "$IMGEXT" == "diff" ] && MOUNTDIR="$MOUNTDIR.$IMGEXT"
- echolog "Desmontamos la imagen $IMGFILE "
+ echolog "Desmontamos la imagen $PARM2 $PARM3 "
umount $MOUNTDIR
+ rmdir $MOUNTDIR
;;
REDUCE_IMAGE)
@@ -162,7 +161,7 @@ case "$PARM1" in
#3 Extensión [ img |diff ]
IMGEXT="$PARM3"
IMGFILE="$REPODIR$PARM2.$IMGEXT"
- [ ! -f $IMGFILE ] && echolog "Imagen no existe" && exit 1
+ [ ! -f $IMGFILE ] && echolog "Imagen $IMGFILE no existe" && exit 1
MOUNTDIR="$REPODIR""mount/${PARM2}"
[ "$IMGEXT" == "diff" ] && MOUNTDIR="$MOUNTDIR.$IMGEXT"
diff --git a/client/engine/Rsync.lib b/client/engine/Rsync.lib
index 425f20c6..aa4e2d95 100755
--- a/client/engine/Rsync.lib
+++ b/client/engine/Rsync.lib
@@ -82,7 +82,8 @@ if [ "$1" == "CACHE" -o "$1" == "cache" ]; then
touch "$DIRMOUNT/ogimg.info"
#fi
- losetup -d $LOOPDEVICE 2>&1 &>/dev/null
+ # Si existe dispositivo de loop lo borro.
+ [ $LOOPDEVICE ] && losetup -d $LOOPDEVICE 2>&1 &>/dev/null
else
[ -z $REPOIP ] && REPOIP=$(ogGetRepoIp)
@@ -483,7 +484,7 @@ if [ "$*" == "help" ]; then
fi
if [ $# -lt 2 ]; then
- ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $FUNCNAME image_name [ extension ]"
+ ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $FUNCNAME [ REPO|CACHE ] image_name [ extension ]"
return $?
fi
@@ -492,6 +493,7 @@ fi
if [ "$1" == "CACHE" -o "$1" == "cache" ]; then
DIRMOUNT=/tmp/$(ogGetMountDir "$2" $IMGEXT)
umount "$DIRMOUNT"
+ rmdir "$DIRMOUNT"
else
[ -z $REPOIP ] && REPOIP=$(ogGetRepoIp)
echo " hose $REPOIP 2009 --out sh -c echo -ne UMOUNT_IMAGE \"$2\" $IMGEXT" |tee -a $OGLOGFILE
diff --git a/client/shared/etc/lang.ca_ES.conf b/client/shared/etc/lang.ca_ES.conf
index 4c5ae882..47f23037 100644
--- a/client/shared/etc/lang.ca_ES.conf
+++ b/client/shared/etc/lang.ca_ES.conf
@@ -88,7 +88,7 @@ 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_ogCreateFileImage="Crea/Redimensiona 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)."
diff --git a/client/shared/etc/lang.en_GB.conf b/client/shared/etc/lang.en_GB.conf
index 25270e45..201f941f 100644
--- a/client/shared/etc/lang.en_GB.conf
+++ b/client/shared/etc/lang.en_GB.conf
@@ -86,7 +86,7 @@ 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_ogCreateFileImage="Crea/Redimensiona 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."
diff --git a/client/shared/etc/lang.es_ES.conf b/client/shared/etc/lang.es_ES.conf
index 74098143..63ae63cd 100644
--- a/client/shared/etc/lang.es_ES.conf
+++ b/client/shared/etc/lang.es_ES.conf
@@ -87,7 +87,7 @@ 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_ogCreateFileImage="Crea/redimensiona 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)."
diff --git a/server/bin/createfileimage b/server/bin/createfileimage
new file mode 100755
index 00000000..181a99da
--- /dev/null
+++ b/server/bin/createfileimage
@@ -0,0 +1,55 @@
+#!/bin/bash
+#/**
+# mountimage
+#@brief Monta imagen sincronizable en el repositorio con permisos de escritura
+#@param 1 imagen
+#@param 2 extension [ img|diff ] opcional, por defecto img
+#@return
+#@exception OG_ERR_FORMAT # 1 formato incorrecto.
+#@exception OG_ERR_NOTFOUND # 2 Fichero o dispositivo no encontrado
+#@exception OG_ERR_DONTSYNC_IMAGE #71 Imagen no sincronizable (es monolitica)
+#@exception OG_ERR_DONTMOUNT_IMAGE # 70 Error al montar una imagen sincronizada
+#@version 1.0 - Montar imagen sincronizable
+#@author Irina Gomez
+#@date 2013-05-15
+#*/ ##
+BASEDIR=/opt/opengnsys
+REPODIR="$BASEDIR/images"
+REPOLOG=$BASEDIR/log/ogAdmRepo.log
+source $BASEDIR/client/etc/lang.$LANG.conf
+
+PROG="$(basename $0)"
+# Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ echo -e " $PROG: $MSG_HELP_ogCreateFileImage \n" \
+ "$MSG_FORMAT: $PROG image [ img|diff ] size_kb \n" \
+ "base -> $PROG Windows7 img 3900000 \n" \
+ "diff -> $PROG Ubuntu12 diff 450000"
+ exit 0
+fi
+
+[ $# -lt 3 ] && echo -e "$PROG: Error: $MSG_ERR_FORMAT \n $MSG_FORMAT: $PROG image [ img | diff ] size_Kb " && exit 1
+
+if [ "$USER" != "root" ]; then
+ echo "$PROG: Error: solo ejecutable por root" >&2
+ exit 1
+fi
+
+IMGEXT="$2"
+
+# Si existe imagen, Comprobamos que es sincronizable
+IMGFILE="$REPODIR/$1.$IMGEXT"
+if [ -f $IMGFILE ]; then
+ if ! file $IMGFILE | grep " BTRFS Filesystem" >/dev/null ; then
+ echo "$PROG: Error: $MSG_ERR_DONTSYNC_IMAGE $1 $2"
+ exit 71
+ fi
+fi
+
+# El tamaño minimo de la imagen es 300000 para podre formatear en fs btrfs.
+SIZEREQUIRED=$3
+[ $SIZEREQUIRED -lt 300000 ] && SIZEREQUIRED=300000
+
+echo CREATE_IMAGE "$1" $IMGEXT $SIZEREQUIRED
+echo -ne CREATE_IMAGE "$1" $IMGEXT $SIZEREQUIRED| /opt/opengnsys/sbin/ogAdmRepoAux
+echo "Los resultado se registran en $REPOLOG. "
diff --git a/server/bin/mountimage b/server/bin/mountimage
new file mode 100755
index 00000000..5bcfd788
--- /dev/null
+++ b/server/bin/mountimage
@@ -0,0 +1,55 @@
+#!/bin/bash
+#/**
+# mountimage
+#@brief Monta imagen sincronizable en el repositorio con permisos de escritura
+#@param 1 imagen
+#@param 2 extension [ img|diff ] opcional, por defecto img
+#@return
+#@exception OG_ERR_FORMAT # 1 formato incorrecto.
+#@exception OG_ERR_NOTFOUND # 2 Fichero o dispositivo no encontrado
+#@exception OG_ERR_DONTSYNC_IMAGE #71 Imagen no sincronizable (es monolitica)
+#@exception OG_ERR_DONTMOUNT_IMAGE # 70 Error al montar una imagen sincronizada
+#@version 1.0 - Montar imagen sincronizable
+#@author Irina Gomez
+#@date 2013-05-15
+#*/ ##
+BASEDIR=/opt/opengnsys
+REPODIR="$BASEDIR/images"
+source $BASEDIR/client/etc/lang.$LANG.conf
+
+PROG="$(basename $0)"
+# Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ echo -e " $PROG: $MSG_HELP_ogMountImage \n" \
+ "$MSG_FORMAT: $PROG nombre_image [ img|diff ] \n" \
+ "base -> $PROG Windows7 \n" \
+ "diff -> $PROG Ubuntu12 diff"
+ exit 0
+fi
+
+[ $# -lt 1 ] && echo -e "$PROG: Error: $MSG_ERR_FORMAT \n $MSG_FORMAT: $PROG image [ img | diff ]" && exit 1
+
+if [ "$USER" != "root" ]; then
+ echo "$PROG: Error: solo ejecutable por root" >&2
+ exit 1
+fi
+
+[ "$2" == "" ] && IMGEXT="img" || IMGEXT="$2"
+# Comprobamos que existe imagen
+IMGFILE="$REPODIR/$1.$IMGEXT"
+[ ! -f $IMGFILE ] && echo "$PROG: Error: $MSG_ERR_NOTFOUND $1 $IMGEXT" && exit 2
+
+
+# Comprobar que la imagen es sincronizable
+if ! file $IMGFILE | grep " BTRFS Filesystem" >/dev/null ; then
+ echo "$PROG: Error: $MSG_ERR_DONTSYNC_IMAGE $1 $2"
+ exit 71
+fi
+
+MOUNTDIR="$REPODIR/mount/$1"
+[ "$IMGEXT" == "diff" ] && MOUNTDIR="$MOUNTDIR.$IMGEXT"
+mkdir -p "$MOUNTDIR"
+mount -o compress=lzo "$IMGFILE" "$MOUNTDIR"
+[ "$?" == "0" ] || ( echo "$MSG_ERR_DONTMOUNT_IMAGE $1 $2" ; exit 70)
+echo "$MOUNTDIR"
+
diff --git a/server/bin/reduceimage b/server/bin/reduceimage
new file mode 100755
index 00000000..69094769
--- /dev/null
+++ b/server/bin/reduceimage
@@ -0,0 +1,50 @@
+#!/bin/bash
+#/**
+# mountimage
+#@brief Monta imagen sincronizable en el repositorio con permisos de escritura
+#@param 1 imagen
+#@param 2 extension [ img|diff ] opcional, por defecto img
+#@return
+#@exception OG_ERR_FORMAT # 1 formato incorrecto.
+#@exception OG_ERR_NOTFOUND # 2 Fichero o dispositivo no encontrado
+#@exception OG_ERR_DONTSYNC_IMAGE #71 Imagen no sincronizable (es monolitica)
+#@exception OG_ERR_DONTMOUNT_IMAGE # 70 Error al montar una imagen sincronizada
+#@version 1.0 - Montar imagen sincronizable
+#@author Irina Gomez
+#@date 2013-05-15
+#*/ ##
+BASEDIR=/opt/opengnsys
+REPODIR="$BASEDIR/images"
+REPOLOG=$BASEDIR/log/ogAdmRepo.log
+source $BASEDIR/client/etc/lang.$LANG.conf
+
+PROG="$(basename $0)"
+# Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ echo -e " $PROG: $MSG_HELP_ogReduceImage \n" \
+ "$MSG_FORMAT: $PROG nombre_image [ img|diff ] \n" \
+ "base -> $PROG Windows7 \n" \
+ "diff -> $PROG Ubuntu12 diff"
+ exit 0
+fi
+
+[ $# -lt 1 ] && echo -e "$PROG: Error: $MSG_ERR_FORMAT \n $MSG_FORMAT: $PROG image [ img | diff ]" && exit 1
+
+if [ "$USER" != "root" ]; then
+ echo "$PROG: Error: solo ejecutable por root" >&2
+ exit 1
+fi
+
+[ "$2" == "" ] && IMGEXT="img" || IMGEXT="$2"
+# Comprobamos que existe imagen
+IMGFILE="$REPODIR/$1.$IMGEXT"
+[ ! -f $IMGFILE ] && echo "$PROG: Error: $MSG_ERR_NOTFOUND $1 $IMGEXT" && exit 2
+
+
+# Comprobar que la imagen es sincronizable
+if ! file $IMGFILE | grep " BTRFS Filesystem" >/dev/null ; then
+ echo "$PROG: Error: $MSG_ERR_DONTSYNC_IMAGE $1 $2"
+ exit 71
+fi
+echo -ne REDUCE_IMAGE "$1" $IMGEXT | /opt/opengnsys/sbin/ogAdmRepoAux
+echo "Los resultado se registran en $REPOLOG. "
diff --git a/server/bin/unmountimage b/server/bin/unmountimage
new file mode 100755
index 00000000..ad5eeee6
--- /dev/null
+++ b/server/bin/unmountimage
@@ -0,0 +1,45 @@
+#!/bin/bash
+#/**
+# mountimage
+#@brief Monta imagen sincronizable en el repositorio con permisos de escritura
+#@param 1 imagen
+#@param 2 extension [ img|diff ] opcional, por defecto img
+#@return
+#@exception OG_ERR_FORMAT # 1 formato incorrecto.
+#@exception OG_ERR_NOTFOUND # 2 Fichero o dispositivo no encontrado
+#@exception OG_ERR_DONTSYNC_IMAGE #71 Imagen no sincronizable (es monolitica)
+#@exception OG_ERR_DONTMOUNT_IMAGE # 70 Error al montar una imagen sincronizada
+#@version 1.0 - Montar imagen sincronizable
+#@author Irina Gomez
+#@date 2013-05-15
+#*/ ##
+BASEDIR=/opt/opengnsys
+REPODIR="$BASEDIR/images"
+REPOLOG=$BASEDIR/log/ogAdmRepo.log
+source $BASEDIR/client/etc/lang.$LANG.conf
+
+PROG="$(basename $0)"
+# Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ echo -e " $PROG: $MSG_HELP_ogUnmountImage \n" \
+ "$MSG_FORMAT: $PROG nombre_image [ img|diff ] \n" \
+ "base -> $PROG Windows7 \n" \
+ "diff -> $PROG Ubuntu12 diff"
+ exit 0
+fi
+
+[ $# -lt 1 ] && echo -e "$PROG: Error: $MSG_ERR_FORMAT \n $MSG_FORMAT: $PROG image [ img | diff ]" && exit 1
+
+if [ "$USER" != "root" ]; then
+ echo "$PROG: Error: solo ejecutable por root" >&2
+ exit 1
+fi
+
+[ "$2" == "" ] && IMGEXT="img" || IMGEXT="$2"
+# Comprobamos que imagen la imagen esta montada
+MOUNTDIR="$REPODIR/mount/$1"
+[ "$IMGEXT" == "diff" ] && MOUNTDIR="$MOUNTDIR.$IMGEXT"
+[ ! -r $MOUNTDIR/ogimg.info ] && echo "La imagen REPO $1 $2 no esta montada" && exit 0
+
+echo -ne UMOUNT_IMAGE "$1" $IMGEXT | /opt/opengnsys/sbin/ogAdmRepoAux
+echo "Los resultado se registran en $REPOLOG. "