diff --git a/client/engine/Rsync.lib b/client/engine/Rsync.lib deleted file mode 100755 index 2478956..0000000 --- a/client/engine/Rsync.lib +++ /dev/null @@ -1,900 +0,0 @@ -#!/bin/bash - -#/** -# rsync -#@brief Función para utilizar la versión de rsync situada en $OPENGNSYS/bin en vez de la del sistema operativo. -#@param los mismos que el comando rsync del sistema operativo. -#@warning Solo en clientes ogLive de 32 bits. -#@return instrucción para ser ejecutada. -#*/ -function rsync () -{ -local RSYNC -[ "$(arch)" == "i686" -a -x $OPENGNSYS/bin/rsync ] && RSYNC=$OPENGNSYS/bin/rsync -RSYNC=${RSYNC:-$(which rsync)} - -$RSYNC "$@" -} - - -#/** -# ogCreateFileImage [ REPO | CACHE ] image_name extension size -#@brief Crear el archivo -#@param 1 Repositorio [ REPO | CACHE ] -#@param 2 Nombre Imagen -#@param 3 Tipo imagen [ img |diff ] -#@param 4 Tamaño de la imagen -#@return instrucción para ser ejecutada. -#*/ - -function ogCreateFileImage () { -local SIZEREQUIRED IMGDIR IMGFILE DIRMOUNT LOOPDEVICE IMGSIZE IMGEXT KERNELVERSION - -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" \ - "$FUNCNAME [ REPO|CACHE ] image_name extension size(K)" \ - "$FUNCNAME REPO Ubuntu12 img 300000" \ - "$FUNCNAME CACHE Windows7 diff 20000000" - return -fi - - -if [ $# -lt 4 ]; then - ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $FUNCNAME [ REPO|CACHE ] image_name extension size(k)" - return $? -fi - -SIZEREQUIRED=$4 -[ $SIZEREQUIRED -lt 300000 ] && SIZEREQUIRED=300000 -KERNELVERSION=$(uname -r| awk '{printf("%d",$1);sub(/[0-9]*\./,"",$1);printf(".%02d",$1)}') - -if [ "$1" == "CACHE" -o "$1" == "cache" ]; then - IMGDIR="$(ogGetParentPath "$1" "/$2")" - [ "$3" == "img" ] && IMGEXT="img" || IMGEXT="img.diff" - IMGFILE="${IMGDIR}/$(basename "/$2").$IMGEXT" - ## Si no existe, crear subdirectorio de la imagen. - if [ $? != 0 ]; then - ogEcho log session " $MSG_HELP_ogMakeDir \"$1 $(dirname "$2")." - ogMakeDir "$1" "$(dirname "/$2")" || return $(ogRaiseError $OG_ERR_NOTWRITE "$3 /$4"; echo $?) - IMGDIR="$(ogGetParentPath "$1" "/$2")" || return $(ogRaiseError $OG_ERR_NOTWRITE "$3 /$4"; echo $?) - fi - DIRMOUNT="/tmp/$(ogGetMountImageDir "$2" "$3")" - mkdir -p "$DIRMOUNT" - LOOPDEVICE=$(losetup -f) - # Si existe el fichero de la imagen se hace copia de seguridad, si no existe se crea. - if [ -f "$IMGFILE" ]; then - # Si la imagen esta montada la desmonto - if [ -r "$DIRMOUNT/ogimg.info" ]; then - umount "$DIRMOUNT" - [ $? -ne 0 ] && return $(ogRaiseError $OG_ERR_DONTUNMOUNT_IMAGE "$1 $2.$IMGEXT"; echo $?) - fi - - if [ "$BACKUP" == "true" -o "$BACKUP" == "TRUE" ]; then - # Copia seguridad - ogEcho log session " $MSG_SCRIPTS_FILE_RENAME \"$IMGFILE\" -> \"$IMGFILE.ant\"." - cp -f "$IMGFILE" "$IMGFILE.ant" - mv -f "$IMGFILE.torrent" "$IMGFILE.torrent.ant" 2>/dev/null - rm -f "$IMGFILE.sum" - fi - - IMGSIZE=$(ls -l --block-size=1024 "$IMGFILE" | awk '{print $5}') - if [ $IMGSIZE -lt $SIZEREQUIRED ];then - ogEcho log session " $MSG_SYNC_RESIZE" - echo " truncate --size=>$SIZEREQUIRED k $IMGFILE" - truncate --size=">$SIZEREQUIRED"k "$IMGFILE" &> $OGLOGCOMMAND - # FS de la imagen segun el contenido del archivo .img - if file "$IMGFILE" |grep -i -e " ext4 filesystem " 2>&1 > /dev/null ; then - losetup $LOOPDEVICE "$IMGFILE" - echo " resize2fs -f $LOOPDEVICE" - resize2fs -f $LOOPDEVICE &> $OGLOGCOMMAND - - else - echo " ogMountImage $1 "$2" $3" - ogMountImage $1 "$2" $3 - echo " btrfs filesystem resize max $DIRMOUNT" - btrfs filesystem resize max "$DIRMOUNT" &> $OGLOGCOMMAND - fi - fi - else - touch "$IMGFILE" - echo " truncate --size=>$SIZEREQUIRED k $IMGFILE" - truncate --size=">$SIZEREQUIRED"k "$IMGFILE" &> $OGLOGCOMMAND - #Formateamos imagen - losetup $LOOPDEVICE $IMGFILE - # FS de la imagen segun la configuracion y la version del kernel: < 3.7 ext4, si >= btrfs - [ $KERNELVERSION \< 3.07 ] && IMGFS="EXT4" || IMGFS=${IMGFS:-"BTRFS"} - - if [ "$IMGFS" == "EXT4" ]; then - echo " mkfs.ext4 -i 4096 -b 4096 -L "${2##*\/}" $LOOPDEVICE" - mkfs.ext4 -i 4096 -b 4096 -L "${2##*\/}" $LOOPDEVICE 2>&1 |tee -a $OGLOGCOMMAND - else - echo " mkfs.btrfs -L ${2##*\/} $LOOPDEVICE " - mkfs.btrfs -L "${2##*\/}" $LOOPDEVICE 2>&1 | tee -a $OGLOGCOMMAND - fi - fi - # Monto la imagen - ogMountImage $1 "$2" $3 &>/dev/null - [ $? -eq 0 ] || return $( ogRaiseError $OG_ERR_IMAGE "$3 $4"; echo $?) - echo "mounted"> $IMGFILE.lock - - # Si existe dispositivo de loop lo borro. - [ $LOOPDEVICE ] && losetup -d $LOOPDEVICE 2>&1 &>/dev/null - -else - [ -z $REPOIP ] && REPOIP=$(ogGetRepoIp) - echo " hose $REPOIP 2009 --out sh -c \"echo -ne CREATE_IMAGE $2 $3 $SIZEREQUIRED \"" - hose $REPOIP 2009 --out sh -c "echo -ne CREATE_IMAGE \"$2\" $3 $SIZEREQUIRED" -fi - -} - - -#/** -# ogCreateInfoImage -#@brief Crear listados con la informacion de la imagen, los situa en /tmp. -#@param 1 num_disk -#@param 2 num_part -#@param 3 Repositorio [ REPO | CACHE ] (opcional en las completas) -#@param 4 Nombre Imagen Basica (opcional en las completas) -#@param 5 Tipo imagen [ img | diff ] -#@version 1.0.6 rsync opcion W (whole) para que sea más rápido -#*/ -function ogCreateInfoImage () { -local IMGTYPE IMGDIRAUX DIRMOUNT DESTRSYNC PASSWORD USERRSYNC ORIG FSTYPE PART DIREMPTY IMGLIST IMGINFO IMGACL KERNELVERSION -# Ayuda o menos de 5 parametros y la imagen no es basica -if [ "$*" == "help" -o $# -lt 5 -a "$3" != "img" ]; then - ogHelp "$FUNCNAME" \ - "$FUNCNAME num_disk num_part [ REPO|CACHE ] [ base_image_name ] extension " \ - "base image -> $FUNCNAME 1 2 img" \ - "diff image -> $FUNCNAME 1 1 CACHE Windows7 diff " - return -fi - -if [ $# -lt 3 ]; then - ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $FUNCNAME num_disk num_part [ REPO|CACHE ] [ base_image_name] extension " - return $? -fi - -# Comprobar errores. -PART=$(ogDiskToDev "$1" "$2") || return $? -ORIG=$(ogMount $1 $2) || return $? - -if [ $3 == "img" ]; then - IMGTYPE="img" -else - # Comprobamos que las extension sea valida - ogCheckStringInGroup $5 "img diff" || return $( ogRaiseError $OG_ERR_FORMAT "$MSG_SYNC_EXTENSION"; echo $?) - IMGTYPE=$5 - if [ "$IMGTYPE" == "diff" ]; then - # Imagen completa con la que comparo la particion. - IMGDIRAUX="$(ogGetMountImageDir "$4" "img")" - if [ "$3" == "CACHE" -o "$3" == "cache" ]; then - DIRMOUNT="/tmp/$IMGDIRAUX" - DESTRSYNC="$DIRMOUNT" - else - [ -z $REPOIP ] && REPOIP=$(ogGetRepoIp) - DIRMOUNT="$OGIMG/$IMGDIRAUX" - USERRSYNC="opengnsys" - PASSWORD="--password-file=/scripts/passrsync" - DESTRSYNC="$USERRSYNC@$REPOIP::ogimages/$IMGDIRAUX" - fi - fi -fi - - -FSTYPE=$(ogGetFsType $1 $2) - -# Creamos la lista del contenido y lo situamos en la particion a copiar. -DIREMPTY="/tmp/empty$$" -IMGLIST="/tmp/ogimg.list" -IMGINFO="/tmp/ogimg.info" -IMGACL="/tmp/ogimg.acl" - -# Borramos archivos antiguos. -rm -f /tmp/ogimg.* 2>/dev/null -rm -f $ORIG/ogimg.* 2>/dev/null - -# En las diferenciales no sabemos el tamaño -> ponemos una constante. -SIZEDATA=${SIZEDATA:-"SIZEDATA"} - -# Incluimos información de la imagen. Segun el kernel sera ext4 o btrfs. -KERNELVERSION=$(uname -r| awk '{printf("%d",$1);sub(/[0-9]*\./,"",$1);printf(".%02d",$1)}') -[ $KERNELVERSION \< 3.07 ] && IMGFS="EXT4" || IMGFS=${IMGFS:-"BTRFS"} -echo "#$IMGFS:NO:$FSTYPE:$SIZEDATA" > $IMGINFO - -if [ "$IMGTYPE" == "img" ]; then - # Imagen Basica - echo " rsync -aHAXWvn --delete $ORIG/ $DIREMPTY >> $IMGINFO" - rsync -aHAXWvn --delete $ORIG/ $DIREMPTY>> $IMGINFO - sed -i -e s/"^sent.*.bytes\/sec"//g -e s/^total.*.speedup.*.$//g -e s/"sending.*.list"//g $IMGINFO - sed -i '/^\.\//d' $IMGINFO - -else - # Imagen Diferencial - echo " rsync -aHAXWvn --delete $ORIG/ $DESTRSYNC a $IMGLIST" - rsync -aHAXWvn $PASSWORD --delete "$ORIG/" "$DESTRSYNC" >> $IMGLIST - sed -i -e s/"^sent.*.bytes\/sec"//g -e s/^total.*.speedup.*.$//g -e s/"sending.*.list"//g $IMGLIST - sed -i '/^\.\//d' $IMGLIST - - # Creamos informacion de la imagen - grep -e '\->' -e '\=>' $IMGLIST > /tmp/ogimg.ln - grep -e ^deleting $IMGLIST | sed s/^deleting\ //g | grep -v ^ogimg > /tmp/ogimg.rm - #grep -v -e '\->' -e '\=>' -e ^deleting $IMGLIST >> $IMGINFO - grep -v -e '\->' -e '\=>' -e ^deleting -e ^created $IMGLIST >> $IMGINFO - - rm -f $IMGLIST - - # 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 $? - fi - -fi - -# Guardamos el contenido de las acl (Solo win) Necesario particion desmontada (esta asi) -ogUnmount $1 $2 -if [ $FSTYPE == "NTFS" ]; then - echo " ntfs-3g.secaudit -b $PART /" - ntfs-3g.secaudit -b $PART / > $IMGACL -fi - -} - - -#/** -# ogAclFilter -#@brief Del fichero de acl de la partición extraemos las acl de los ficheros de la diferencial (falla: no se usa) -#@param No. -#@return (nada) -#*/ -function ogAclFilter () { -local IMGACL IMGINFO FILES ACLTMP - -# Ayuda -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" "$FUNCNAME" - return -fi - -IMGACL="/tmp/ogimg.acl" -IMGINFO="/tmp/ogimg.info" -FILES="/tmp/files$$" -ACLTMP="/tmp/acl$$.tmp" -ACLFILES="/tmp/aclfiles$$" - -# comprobamos que existan los archivos de origen. Si no salimos sin error. -[ -f $IMGACL -a -f $IMGINFO ] || return 0 - -echo "" > $ACLTMP -grep -n -e "File" -e "Directory" $IMGACL > $ACLFILES - -# Al listado de ficheros le quitamos las líneas sobrantes: comentarios y lineas vacias. -sed -e s/"^#.*$"//g -e '/^$/d' $IMGINFO > $FILES - - -# Recorremos el listado y extraemos la acl correspondiente al fichero o directorio. -while read LINE; do - read END INI <<< "$(grep -A 1 "$LINE" $ACLFILES | awk -F : '!(NR%2){print $1" "p}{p=$1}' )" - let NUM=$END-$INI-1 - # Si algún archivo no se encuentra, el error lo mandamos a /dev/null - sed -n -e $INI,+"$NUM"p $IMGACL 2>/dev/null >> $ACLTMP - echo "aclfilter: $LINE" >> $OGLOGCOMMAND -done < $FILES - -cp $ACLTMP $IMGACL -rm -f $FILES $ACLTMP $ACLFILES -} - - -#/** -# ogRestoreInfoImage -#@brief Crear o modificar enlaces y restaurar las ACL. La informacion esta ya copiada a la particion. -#@param 1 num_disk -#@param 2 num_part -#*/ -function ogRestoreInfoImage () { -local DEST PART IMGACL IMGLN OPTLN LINEA DESTLN ORIGLN TYPELN - -# Ayuda o menos de 5 parametros y la imagen no es basica -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" \ - "$FUNCNAME num_disk num_part" \ - "base image -> $FUNCNAME 1 2 " \ - "diff image -> $FUNCNAME 1 1 " - return -fi - -if [ $# -lt 2 ]; then - ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $FUNCNAME num_disk num_part " - return $? -fi - -# Control de errores. -PART=$(ogDiskToDev "$1" "$2") || return $? -DEST=$(ogMount $1 $2) || return $? - -IMGACL="ogimg.acl" -IMGLN="ogimg.ln" -IMGINFO="ogimg.info" - -# Copiamos informacion de la imagen a /tmp (para basicas) -[ -r $DEST/$IMGINFO ] && cp $DEST/ogimg.* /tmp - -#Creamos o modificamos los enlaces. -# La imagen diferencial tiene ogimg.ln -# para la completa lo generamos con los enlaces que contengan /mnt/ -[ -r "/tmp/$IMGLN" ] || grep -e "->" -e "=>" "/tmp/$IMGINFO"|grep "/mnt/" > "/tmp/$IMGLN" -if [ $(wc -l "/tmp/$IMGLN"|cut -f1 -d" ") -ne 0 ]; then - while read LINEA - do - ORIGLN="${LINEA#*> }" - # Si origen hace referencia a la particion lo modificamos - echo $ORIGLN|grep "/mnt/"> /dev/null && ORIGLN="$DEST/${ORIGLN#/mnt/*/}" - # rsync marca - los enlaces simbolicos y = enlaces "duros" - LINEA="${LINEA%>*}" - TYPELN="${LINEA##* }" - DESTLN="${LINEA% *}" - - if [ "$TYPELN" == "-" ] - then - OPTLN='-s' - else - OPTLN='' - fi - cd "$DEST/$(dirname "$DESTLN")" - rm -f "$(basename "$DESTLN")" - ln $OPTLN "$ORIGLN" "$(basename "$DESTLN")" - echo -n "." - done < "/tmp/$IMGLN" 2>/dev/null - echo "" - -fi -cd / -} - - -#/** -# ogRestoreAclImage -#@brief Restaurar las ACL. La informacion esta ya copiada al directorio /tmp -#@param 1 num_disk -#@param 2 num_part -#*/ -function ogRestoreAclImage () { -local PART IMGACL - -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" \ - "$FUNCNAME num_disk num_part" \ - "$FUNCNAME 1 1" - return -fi - -PART=$(ogDiskToDev "$1" "$2") || return $? -IMGACL="ogimg.acl" - -# Restauramos acl -if [ "$(ogGetFsType $1 $2)" == "NTFS" -a -f "/tmp/$IMGACL" ] ; then - cd / - ogUnmount "$1" "$2" - echo "ntfs-3g.secaudit -se $PART /tmp/$IMGACL" - ntfs-3g.secaudit -se $PART /tmp/$IMGACL - # Para evitar que de falso error - echo "" -fi -} - - -#/** -# ogSyncCreate -#@brief sincroniza los datos de la partición a la imagen para crearla. La imagen esta montada en un directorio. -#@param 1 num_disk -#@param 2 num_part -#@param 3 Repositorio [ REPO | CACHE ] -#@param 4 Nombre Imagen -#@param 5 Tipo imagen [ img | diff ] -#*/ -function ogSyncCreate () { -local ORIG DIRAUX DIRMOUNT DESTRSYNC USERRSYNC PASSWORD OPTRSYNC RETVAL - -# Limpiamos los archivo de log -echo "" >$OGLOGCOMMAND; - -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" \ - "$FUNCNAME num_disk num_part [ REPO|CACHE ] image_name extension " \ - "$FUNCNAME 1 2 REPO Ubuntu12 img" \ - "$FUNCNAME 1 1 CACHE Windows7 diff " - return -fi - - -if [ $# -lt 4 ]; then - ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $FUNCNAME num_disk num_part [ REPO|CACHE ] image_name extension " - return $? -fi - -ORIG=$(ogMount $1 $2) || return $? - -DIRMOUNT="$(ogGetMountImageDir "$4" $5)" -# Si la imagen es diferencial la lista de ficheros a transferir esta dentro de la imagen. -if [ "$5" == "diff" ]; then - FILESFROM=" --files-from=/tmp/ogimg.info" - # Borramos los directorios - sed -i '/\/$/d' /tmp/ogimg.info -else - FILESFROM="" -fi - -if [ "$3" == "CACHE" -o "$3" == "cache" ]; then - DESTRSYNC="/tmp/$DIRMOUNT" -else - [ -z $REPOIP ] && REPOIP=$(ogGetRepoIp) - PASSWORD="--password-file=/scripts/passrsync" - [ "$ogrsyncz" == "true" ] && OPTRSYNC="z " - [ "$ogrsyncw" == "true" ] && OPTRSYNC="W$OPTRSYNC" - USERRSYNC="opengnsys" - DESTRSYNC="$USERRSYNC@$REPOIP::ogimages/$DIRMOUNT" -fi -# Sincronizamos los datos de la partición a la imagen -echo " rsync -aHAX$OPTRSYNC --progress --inplace --delete $FILESFROM $ORIG/ $DESTRSYNC" -rsync -aHAX$OPTRSYNC $PASSWORD --progress --inplace --delete $FILESFROM "$ORIG/" "$DESTRSYNC" 2>$OGLOGCOMMAND | egrep "^deleting|^sent|^sending|^total|%" |tee -a $OGLOGCOMMAND -RETVAL=${PIPESTATUS[0]} -echo " rsync -aHAX$OPTRSYNC --inplace /tmp/ogimg* $DESTRSYNC" -rsync -aHAX$OPTRSYNC $PASSWORD --inplace /tmp/ogimg* "$DESTRSYNC" - -return $RETVAL -} - - -#/** -# ogSyncRestore -#@brief sincroniza los datos de la imagen a la partición para restaurarla. -#@param 1 Repositorio [ REPO | CACHE ] -#@param 2 Nombre Imagen -#@param 3 Tipo imagen [ img | diff ] -#@param 4 num_disk -#@param 5 num_part -#*/ -function ogSyncRestore () { -local DIRMOUNT ORIG DESTRSYNC PASSWORD OPTRSYNC USERRSYNC IMGINFO FILESFROM - -# Limpiamos los archivo de log -echo "" >$OGLOGCOMMAND; - -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" \ - "$FUNCNAME [ REPO|CACHE ] image_name extension num_disk num_part " \ - "$FUNCNAME REPO Ubuntu12 img 1 2" \ - "$FUNCNAME CACHE Windows7 diff 1 1" - return -fi - - -if [ $# -lt 5 ]; then - ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $FUNCNAME [ REPO|CACHE ] image_name extension num_disk num_part " - return $? -fi - - -DIRMOUNT="$(ogGetMountImageDir "$2" "$3")" -DESTRSYNC=$(ogGetMountPoint $4 $5) - -# Borramos ficheros de informacion de restauraciones antiguas -rm -rf $DESTRSYNC/ogimg.* -rm -rf /tmp/ogimg.* - -# Origen y destino de la sincronizacion y en REPO opciones rsync -if [ "$1" == "CACHE" -o "$1" == "cache" ]; then - ORIG="/tmp/$DIRMOUNT" -else - [ -z $REPOIP ] && REPOIP=$(ogGetRepoIp) - PASSWORD="--password-file=/scripts/passrsync" - [ "$ogrsyncz" == "true" ] && OPTRSYNC="z " - [ "$ogrsyncw" == "true" ] && OPTRSYNC="W$OPTRSYNC" - USERRSYNC="opengnsys" - ORIG="$USERRSYNC@$REPOIP::ogimages/$DIRMOUNT" -fi - -# Opciones rsync en cache y repo -# Para la imagen basica, opcion de borrar archivos de la particion que no existen en la imagen -[ "$3" == "img" ] && [ "$ogrsyncdel" != "false" ] && OPTRSYNC="$OPTRSYNC --delete" - -# Nos traemos listado ficheros y bajamos la imagen - -ogEcho log session " $MSG_SYNC_RESTORE" - -# Si la imagen es diferencial nos traemos los archivos de informacion de la imagen. -if [ "$3" == "diff" ]; then - # Lista de archivos a copiar: - IMGINFO="ogimg.info" - FILESFROM=" --files-from=/tmp/$IMGINFO" - - echo " rsync -aHAX$OPTRSYNC --progress $ORIG/ogimg* /tmp" - rsync -aHAX$OPTRSYNC $PASSWORD --progress "$ORIG"/ogimg* /tmp - # Borramos linea de información de la imagen, sino busca un fichero con ese nombre - sed -i '/^\#/d' /tmp/$IMGINFO - - cd $DESTRSYNC - # Diferencial: Borramos archivos sobrantes. - ogEcho log session " $MSG_SYNC_DELETE" - sed -e s/^/\"/g -e s/$/\"/g "/tmp/ogimg.rm" 2>/dev/null | xargs rm -rf - -fi - -echo " rsync -aHAX$OPTRSYNC --progress $FILESFROM $ORIG/ $DESTRSYNC" -rsync -aHAX$OPTRSYNC $PASSWORD --progress $FILESFROM "$ORIG/" "$DESTRSYNC" 2>$OGLOGCOMMAND | egrep "^deleting|^sent|^sending|^total|%" |tee -a $OGLOGCOMMAND -RETVAL=${PIPESTATUS[0]} -cd / -#*/ " Comentario Doxygen -} - - -#/** -# ogMountImage -#@brief Monta la imagen para sincronizar. -#@param 1 Repositorio [ REPO | CACHE ] -#@param 2 Nombre Imagen -#@param 3 Tipo imagen [ img |diff ] -#@return punto de montaje -#*/ -function ogMountImage () { -local IMGEXT IMGFILE DIRMOUNT KERNELVERSION - -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" \ - "$FUNCNAME [ REPO|CACHE ] image_name [ extension ]" \ - "$FUNCNAME REPO Ubuntu12" \ - "$FUNCNAME CACHE Windows7 diff" - return -fi - - -if [ $# -lt 2 ]; then - ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $FUNCNAME [ REPO|CACHE ] image_name [ extension ]" - return $? -fi - -[ "$3" == "" -o "$3" == "img" ] && IMGEXT="img" || IMGEXT="img.diff" - -DIRMOUNT="$(ogGetMountImageDir "$2" ${IMGEXT#*\.})" - -if [ "$1" == "REPO" -o "$1" == "repo" ]; then - [ -z $REPOIP ] && REPOIP=$(ogGetRepoIp) - hose $REPOIP 2009 --out sh -c "echo -ne MOUNT_IMAGE \"$2\" ${IMGEXT#*\.}" - echo "$OGIMG/$DIRMOUNT" -else - # Si está montado nada que hacer. - df | grep "$DIRMOUNT$" 2>&1 >/dev/null && echo "/tmp/$DIRMOUNT" && return 0 - - IMGFILE="$(ogGetPath "$1" /"$2.$IMGEXT")" \ - || return $(ogRaiseError $OG_ERR_NOTFOUND "$1 $2.$IMGEXT"; echo $?) - mkdir -p "/tmp/$DIRMOUNT" - - - # FS de la imagen segun el contenido del archivo .img - if file "$IMGFILE" |grep -i -e " ext4 filesystem " 2>&1 > /dev/null ; then - mount -t ext4 -o loop "$IMGFILE" "/tmp/$DIRMOUNT" 1>/dev/null - else - mount -o compress=lzo "$IMGFILE" "/tmp/$DIRMOUNT" 1>/dev/null - fi - - # Comprobamos que se ha montado bien - [ $? -eq 0 ] || return $(ogRaiseError $OG_ERR_DONTMOUNT_IMAGE "$1 $2 $3"; echo $?) - echo "/tmp/$DIRMOUNT" -fi - -} - - -#/** -# ogUnmountImage [ REPO | CACHE ] Image_name [ extension ] -#@brief Desmonta la imagen para sincronizar. -#@param 1 Repositorio [ REPO | CACHE ] -#@param 2 Nombre Imagen -#@param 3 Tipo imagen [ img |diff ] -#*/ -function ogUnmountImage () { -local IMGTYPE DIRMOUNT - -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" \ - "$FUNCNAME [ REPO|CACHE ] image_name [ extension ]" \ - "$FUNCNAME REPO Ubuntu12" \ - "$FUNCNAME CACHE Windows7 diff" - return -fi - -if [ $# -lt 2 ]; then - ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $FUNCNAME [ REPO|CACHE ] image_name [ extension ]" - return $? -fi - -[ "$3" == "" ] && IMGTYPE="img" || IMGTYPE="$3" - -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" - hose $REPOIP 2009 --out sh -c "echo -ne UMOUNT_IMAGE \"$2\" $IMGTYPE" -fi -} - - -#/** -# ogGetMountImageDir -#@brief Devuelve el directorio de montaje de la imagen. -#@param 1 Nombre Imagen -#@param 2 Tipo imagen [ img |diff ] -#*/ -function ogGetMountImageDir () { -local DIRMOUNT -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" \ - "$FUNCNAME image_name [ extension ]" \ - "$FUNCNAME Ubuntu12" \ - "$FUNCNAME Windows7 diff" - return -fi - - -if [ $# -lt 1 ]; then - ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $FUNCNAME image_name [ extension ]" - return $? -fi - - -DIRMOUNT="mount/$1" -[ "$2" == "diff" ] && DIRMOUNT="$DIRMOUNT.diff" -echo "$DIRMOUNT" - -} - - -#/** -# 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 Estado [ mounted | reduced ] -#@param 5 Tamaño imagen (opcional) -#*/ -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" \ - "$FUNCNAME [ REPO | CACHE ] image_name extension state [ image_size ] " \ - "$FUNCNAME REPO Ubuntu12 img 30000000" \ - "$FUNCNAME CACHE Windows7 diff " - return -fi - -if [ $# -lt 4 ]; then - ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $FUNCNAME [ REPO | CACHE ] image_name extension state [ image_size ] " - return $? -fi - -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)" -else - DIRMOUNT="$OGIMG/$(ogGetMountImageDir "$2" $3)" -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 $(grep -i $STATE $LOCKFILE &>/dev/null) ; do - [ $STATE = "mounted" -a -f "$DIRMOUNT/ogimg.info" ] && ogEcho log session "" && return 0 - TIMEAUX=$[SECONDS-TIME] - [ "$TIMEAUX" -lt "$TIMEOUT" ] || return $(ogRaiseError $OG_ERR_DONTMOUNT_IMAGE "$3 $4 $IMGEXT: time_out."; echo $?) - echo -n "#" | tee -a $OGLOGSESSION $OGLOGFILE - sleep 5 -done -echo "" | tee -a $OGLOGSESSION $OGLOGFILE - -} - - -#/** -# ogReduceImage -#@brief Reduce el archivo de la imagen a tamaño datos + 500M -#@param 1 Repositorio [ REPO | CACHE ] -#@param 2 Nombre Imagen -#@param 3 Tipo Imagen [ img |diff ] -#@return -#@exception OG_ERR_FORMAT # 1 formato incorrecto. -#@exception OG_ERR_NOTFOUND # 2 Fichero o dispositivo no encontrado. -#*/ -function ogReduceImage () { -local IMGEXT DIRMOUNT AVAILABLE USED IMGDIR IMGFILE ENDSIZE LOOPDEVICE -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" \ - "$FUNCNAME [ REPO|CACHE ] image_name [ extension ]" \ - "$FUNCNAME REPO Ubuntu12" \ - "$FUNCNAME CACHE Windows7 diff" - return -fi - -if [ $# -lt 2 ]; then - ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $FUNCNAME [ REPO|CACHE ] image_name [ extension ]" - return $? -fi - - -[ "$3" == "" -o "$3" == "img" ] && IMGEXT="img" || IMGEXT="img.diff" -IMGDIR="$(ogGetParentPath "$1" "/$2")" -IMGFILE="${IMGDIR}/$(basename "/$2").$IMGEXT" - - -if [ "$1" == "CACHE" -o "$1" == "cache" ]; then - # Para imagenes EXT4 reduzco, para BTRFS solo desmonto. - if file "$IMGFILE" | grep -i " ext4 filesystem " 2>&1 > /dev/null; then - # Al montar se comprueba la existencia de la imagen - 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" - - # Redimensiono sistema de ficheros - echo " resize2fs -fpM $LOOPDEVICE" - resize2fs -fpM $LOOPDEVICE |tee -a $OGLOGCOMMAND - ogMountImage $1 "$2" ${IMGEXT#*\.} >/dev/null - - # Calculamos el tamaño final del archivo - INTSIZE=$(df -k|grep "$DIRMOUNT"|awk '{print $2}') - let EXTSIZE=$INTSIZE+$EDGESIZE - umount "$DIRMOUNT" - - # Si existe dispositivo de loop lo borro. - [ $LOOPDEVICE ] && losetup -d $LOOPDEVICE - - # Corto el archivo al tamaño del sistema de ficheros. - echo " truncate --size=\"$EXTSIZE\"k $IMGFILE " - truncate --size="$EXTSIZE"k "$IMGFILE" - else - # Desmonto la imagen - umount "$DIRMOUNT" - fi - - echo "reduced" > "$IMGFILE.lock" - rmdir "$DIRMOUNT" - -else - [ -z $REPOIP ] && REPOIP=$(ogGetRepoIp) - echo " hose $REPOIP 2009 --out sh -c echo -ne REDUCE_IMAGE \"$2\" ${IMGEXT#*\.}" - hose $REPOIP 2009 --out sh -c "echo -ne REDUCE_IMAGE \"$2\" ${IMGEXT#*\.}" -fi - -} - - - -#/** -# ogIsSyncImage -#@brief Comprueba si la imagen es sincronizable -#@param 1 Repositorio [ REPO | CACHE ] -#@param 2 Nombre Imagen -#@param 3 Tipo Imagen [ img |diff ] -#@return -#@exception OG_ERR_FORMAT # 1 formato incorrecto. -#@exception OG_ERR_NOTFOUND # 2 Fichero o dispositivo no encontrado. -#*/ -function ogIsSyncImage () { -local IMGEXT IMGDIR IMGFILE - -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" \ - "$FUNCNAME [ REPO|CACHE ] image_name [ extension ]" \ - "$FUNCNAME REPO Ubuntu12" \ - "$FUNCNAME CACHE Windows7 diff" - return -fi - -if [ $# -lt 2 ]; then - ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $FUNCNAME [ REPO|CACHE ] image_name [ extension ]" - return $? -fi - -[ "$3" == "" -o "$3" == "img" ] && IMGEXT="img" || IMGEXT="img.diff" -IMGDIR="$(ogGetParentPath "$1" "/$2")" -IMGFILE="${IMGDIR}"/$(basename "/$2").$IMGEXT - -file "$IMGFILE" | grep -i -e " BTRFS Filesystem " -e " ext4 filesystem " >/dev/null -[ $? -eq 0 ] && return 0 || return $OG_ERR_DONTSYNC_IMAGE - -} - - -#/** -# ogCheckSyncImage -#@brief Muestra el contenido de la imagen para comprobarla. -#@param 1 Repositorio [ REPO | CACHE ] -#@param 2 Nombre Imagen -#@param 3 Tipo Imagen [ img |diff ] -#@return -#@exception OG_ERR_FORMAT # 1 formato incorrecto. -#@exception OG_ERR_NOTFOUND # 2 Fichero o dispositivo no encontrado. -#*/ -function ogCheckSyncImage () { -local IMGEXT IMGDIR IMGFILE DIRMOUNT ISMOUNT RETVAL KERNELVERSION - -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" \ - "$FUNCNAME [ REPO|CACHE ] image_name [ extension ]" \ - "$FUNCNAME REPO Ubuntu12" \ - "$FUNCNAME CACHE Windows7 diff" - return -fi - -if [ $# -lt 2 ]; then - ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $FUNCNAME [ REPO|CACHE ] image_name [ extension ]" - return $? -fi - -[ "$3" == "" -o "$3" == "img" ] && IMGEXT="img" || IMGEXT="img.diff" -IMGDIR="$(ogGetParentPath "$1" "/$2")" -IMGFILE="${IMGDIR}/$(basename "/$2").$IMGEXT" - -ogIsSyncImage $1 "$2" "${IMGEXT#*\.}" || return $(ogRaiseError $OG_ERR_DONTSYNC_IMAGE "$3 $4"; echo $?) - -# Comprobamos que no esté montada (daria falso error) -if [ "$1" == "CACHE" -o "$1" == "cache" ]; then - $(df | grep "/tmp/mount/$2${IMGEXT#img}$" &>/dev/null) && ISMOUNT=TRUE -else - [ -f "$OGIMG/mount/$2${IMGEXT#img}/ogimg.info" ] && ISMOUNT=TRUE -fi -[ "$ISMOUNT" == TRUE ] && ogEcho log session warning "$MSG_SYNC_NOCHECK" && return 0 - -DIRMOUNT="/tmp/ogCheckImage$$" -mkdir "$DIRMOUNT" -# FS de la imagen segun el contenido del archivo .img -if file "$IMGFILE" |grep -i -e " ext4 filesystem " 2>&1 > /dev/null ; then - mount -t ext4 -o loop "$IMGFILE" "$DIRMOUNT" 2>&1 | tee -a $OGLOGCOMMAND - RETVAL=${PIPESTATUS[0]} -else - mount -o compress=lzo "$IMGFILE" "$DIRMOUNT" 2>&1 | tee -a $OGLOGCOMMAND - RETVAL=${PIPESTATUS[0]} -fi -ls -C "$DIRMOUNT" | tee -a $OGLOGCOMMAND -umount "$DIRMOUNT" - -rmdir "$DIRMOUNT" -return $RETVAL -} - diff --git a/client/shared/scripts/ImagenesSincronizadas.lib b/client/shared/scripts/ImagenesSincronizadas.lib deleted file mode 100755 index 717d052..0000000 --- a/client/shared/scripts/ImagenesSincronizadas.lib +++ /dev/null @@ -1,368 +0,0 @@ -#!/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) - - #___________________________________________________________________ - # - # Variables globales - #___________________________________________________________________ - - TIPOPARTICION="$(ogGetPartitionId $DISCO $NPART)"; # Tipo de particion - if [ -z $TIPOPARTICION ]; then - echo "No existe la partición $NPART, debe crearla" | tee -a $OGLOGSESSION $OGLOGFILE - exit $OG_ERR_PARTITION - fi - - PARTICION=$(ogMount $DISCO $NPART); # Monta partición - if [ -z $PARTICION ]; then - echo "No existe la unidad /dev/sda$NPART o no está formateada" | tee -a $OGLOGSESSION $OGLOGFILE - exit $OG_ERR_PARTITION - fi - - SISTEMAFICHERO="$(ogGetFsType $DISCO $NPART)" # Sistema de ficheros - if [ -z $SISTEMAFICHERO ]; then - echo "No se ha definido un sistema de fichero en la unidad /dev/sda$NPART. Debe formatearla previamente." | tee -a $OGLOGSESSION $OGLOGFILE - exit $OG_ERR_PARTITION - fi - - REPOSITORIO="opengnsys@$IPREPOSITORIO::ogimages" # Ruta de las imagenes en el repositorio - - FILE_ACL="ogwinimage.acl" - - - # Envío de archivo completo - OP_WHOLE="--whole" - if [ $WHLFILE -eq 0 ]; then - OP_WHOLE="" - fi - - # Borrar archivos en destino - OP_DELETE="--delete" - if [ $NOBORRACHIVOS -eq 1 ]; then - OP_DELETE="" - fi - if [ $RMVFILE -eq 0 ]; then - OP_DELETE="" - fi - - # Opción de compresión - OP_COMPRESS="-z" - if [ $CMPFILE -eq 0 ]; then - OP_COMPRESS="" - fi - - #___________________________________________________________________ - # - # Fichero con la clave remota del rsync para el parámetro - # "--password-file" para que no se pida ésta en el proceso. - #___________________________________________________________________ - # - FILE_PASSWD="--password-file=/scripts/passrsync" - - - #___________________________________________________________________ - # - # 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 - - # Otra forma - #sed -i -e s/"^sent.*.bytes\/sec"//g -e s/^total.*.speedup.*.$//g -e s/"sending.*.list"//g $IMGINFO - #sed -i '/^\.\//d' $IMGINFO - - } - - #___________________________________________________________________ - # - # 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: 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 - # $5: Vale - # 1=Para crear la lista de archivos a transferir - # 2= Cuando se quiere sincronizar usando la lista - # $6: Path a la lista de archivos - #___________________________________________________________________ - # - function crearImagen() - { - case "$3" in - NTFS) - OP_ARCHIVO="-aH" - rm "$1pagefile.sys" - #OP_EXCLUDE="--exclude 'pagefile.sys'" - ;; - EXT2 | EXT3 | EXT4 ) - OP_ARCHIVO="-alH" - OP_EXCLUDE="--exclude 'tmp' --exclude 'proc' --exclude 'sys'" - ;; - esac - - - case "$4" in - 1) - OP_PASSWD=$FILE_PASSWD - ;; - 2) - OP_PASSWD="" - ;; - esac - - FREG=$OGLOGCOMMAND # Por defecto se redirecciona al archivo de log de comandos - case "$5" in - 1) - OP_ARCHIVO=$OP_ARCHIVO"nv" # Simulación para crear lista - FREG=$6 - ;; - 2) - OP_FILELIST="--files-from=$6" - OP_ARCHIVO="$OP_ARCHIVO $OP_FILELIST" - ;; - esac - - echo "rsync $OP_ARCHIVO $OP_COMPRESS $OP_DELETE $OP_EXCLUDE $OP_PASSWD $1 $2 " | tee -a $OGLOGSESSION $OGLOGFILE - rsync $OP_ARCHIVO $OP_COMPRESS $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 - NTFS) - OP_ARCHIVO="-aH" - ;; - EXT2 | EXT3 | EXT4) - OP_ARCHIVO="-alH" - ;; - esac - - case "$4" in - 1) - OP_PASSWD=$FILE_PASSWD - ;; - 2) - OP_PASSWD="" - ;; - esac - - echo "rsync $OP_ARCHIVO $OP_COMPRESS $OP_DELETE $OP_PASSWD $1 $2" | tee -a $OGLOGSESSION $OGLOGFILE - rsync $OP_ARCHIVO $OP_COMPRESS $OP_DELETE $OP_PASSWD $1 $2>$OGLOGCOMMAND; - } - - #___________________________________________________________________ - # - # Función: crearListaAcl - # - # Descripción: - # - # Crea la lista de control de archivos para el sistema operativo - # que ocupa la partición que se quiere clonar - # - # Parámetros: - # - # $1: Origen - # $2: Destino - # $3: Sistema de ficheros de la partición - # $4: disco - # $5: partición - #___________________________________________________________________ - # - function crearListaAcl() - { - case "$3" in - NTFS) - echo "Creando lista de control de acceso a ficheros para el sistema windows de la particion $5" | tee -a $OGLOGSESSION $OGLOGFILE - echo "Desmontando la particion $5" | tee -a $OGLOGSESSION $OGLOGFILE - ogUnmount $4 $5 | tee -a $OGLOGSESSION $OGLOGFILE - echo "Ejecutando comando ntfs-3g.secaudit -b /dev/sda$5 /" | tee -a $OGLOGSESSION $OGLOGFILE - ntfs-3g.secaudit -b /dev/sda$5 / > /tmp/$FILE_ACL - echo "Montando de nuevo la particion $5" | tee -a $OGLOGSESSION $OGLOGFILE - ogMount $4 $5 - echo "Copiando archivo de listas de control (ACL) desde /tmp/$FILE_ACL a $1." | tee -a $OGLOGSESSION $OGLOGFILE - cp /tmp/$FILE_ACL $1. - ;; - esac - } - #___________________________________________________________________ - # - # Función: restauraListaAcl - # - # Descripción: - # - # Restaura la lista de control de archivos para el sistema operativo - # que ocupa la partición que se quiere restaurar - # - # Parámetros: - # - # $1: Origen - # $2: Destino - # $3: Sistema de ficheros de la partición - # $4: disco - # $5: partición - #___________________________________________________________________ - # - function restauraListaAcl() - { - case "$3" in - NTFS) - echo "Restaurando lista de control de acceso a ficheros para el sistema windows de la particion $5" | tee -a $OGLOGSESSION $OGLOGFILE - echo "Copiando archivo de listas de control (ACL) desde $2$FILE_ACL a /tmp/." | tee -a $OGLOGSESSION $OGLOGFILE - cp $2$FILE_ACL /tmp/. - echo "Desmontando la particion $5" | tee -a $OGLOGSESSION $OGLOGFILE - ogUnmount $4 $5 | tee -a $OGLOGSESSION $OGLOGFILE - echo "Ejecutando comando ntfs-3g.secaudit -se /dev/sda$5 /" | tee -a $OGLOGSESSION $OGLOGFILE - ntfs-3g.secaudit -se /dev/sda$5 /tmp/$FILE_ACL - echo "Montando de nuevo la particion $5" | tee -a $OGLOGSESSION $OGLOGFILE - ogMount $4 $5 - echo "Borrando archivo de listas de control (ACL) de $2$FILE_ACL" | tee -a $OGLOGSESSION $OGLOGFILE - rm $2$FILE_ACL - ;; - esac - } - #___________________________________________________________________ - # - # Función: eliminaListaAcl - # - # Descripción: - # - # Elimina la lista de control de archivos creada temporalmente - # para el proceso de creación e imagen - # - # Parámetros: - # - # $1: Origen - # $2: Sistema de ficheros de la partición - #___________________________________________________________________ - # - function eliminaListaAcl() - { - case "$2" in - NTFS) - echo "Borrando archivo de listas de control (ACL) de $1$FILE_ACL" | tee -a $OGLOGSESSION $OGLOGFILE - rm $1$FILE_ACL - ;; - esac - } - #___________________________________________________________________ - # - # Función: comprimeImagen - # - # Descripción: - # - # Comprimer la carpeta donde está se ha almacenado la imagen - # recientemente creada - # - # Parámetros: - # - # $1: Nombre de la imagen (Es el mismo que la carpeta que la alberga) - #___________________________________________________________________ - # - function comprimeImagen() - { - TIME1=$SECONDS - RUTAIMG="/opt/opengnsys/images" - CARPETAIMAGEN=$RUTAIMG/$1 - echo "Comprimiendo la imagen $1. Ruta de la imagen: $RUTAIMG" | tee -a $OGLOGSESSION $OGLOGFILE - echo "find $CARPETAIMAGEN | cpio -H newc -oa | gzip -9c en $CARPETAIMAGEN.IMG" | tee -a $OGLOGSESSION $OGLOGFILE - find $CARPETAIMAGEN | cpio -H newc -oa | gzip -9c > $CARPETAIMAGEN.IMG - TIME=$[SECONDS-TIME1] - echo "[100] $MSG_SCRIPTS_TIME_TOTAL $[TIME/60]m $[TIME%60]s" | tee -a $OGLOGSESSION $OGLOGFILE - } diff --git a/client/shared/scripts/createBaseImage b/client/shared/scripts/createBaseImage deleted file mode 100755 index f7ef2a5..0000000 --- a/client/shared/scripts/createBaseImage +++ /dev/null @@ -1,166 +0,0 @@ -#!/bin/bash - -#/** -# createBaseImage -#@brief Script de ejemplo para crear una imagen de un sistema de archivos. -#@brief Se usa como base para el programa de creación de imágenes de OpenGnsys Admin). -#@param 1 disco -#@param 2 particion -#@param 3 REPO|CACHE|IPREPO -#@param 4 imagen -#@return -#@exception OG_ERR_FORMAT # 1 formato incorrecto. -#@exception OG_ERR_PARTITION # 3 Error en partición de disco o en su sistema de archivos -#@exception OG_ERR_LOCKED # 4 Imagen o particion bloqueada -#@exception OG_ERR_IMAGE # 5 Error en funcion ogCreateImage o ogRestoreImage. -#@exception OG_ERR_NOTWRITE # 14 error de escritura -#@exception OG_ERR_NOTCACHE # 15 si cache no existe 15 -#@exception OG_ERR_CACHESIZE # 16 si espacio de la cache local o remota no tiene espacio 16 -#@exception OG_ERR_DONTMOUNT_IMAGE # 70 Error al montar una imagen sincronizada -#@note No necesario permiso se escritura por samba en repo. -#@todo: que hacer, si el tamaño de la cache es sufciente, pero no tiene espacio libre -#@version 1.0 - creación imagen con btrfs -#@author -#@date 2012-12-04 -#@version 1.1.0 - Se muestra el espacio necesario para alojar la imagen y el disponible (ticket #771) -#@author Irina Gomez - ETSII Universidad de Sevilla -#@date 2017-03-28 -#@version 1.1.1 - Varios repositorios para un mismo cliente (ticket #679). -#@author Irina Gomez - ETSII Universidad de Sevilla -#@date 2018/11/06 -#*/ ## - -trap "onexit $1 $2 $IMGFILE" 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=$? - if [ $exit_status -ne 4 ]; then - ogUnlockImage "$IMGFILE" - ogUnlock $1 $2 - fi - exit $exit_status -} - -TIME1=$SECONDS -#Carga el configurador del engine desde el fichero engine.cfg -[ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg - -PROG="$(basename $0)" -# Si se solicita, mostrar ayuda. -if [ "$*" == "help" ]; then - ogHelp "$PROG: $MSG_HELP_createBaseImage" \ - "$PROG ndisco nparticion REPO|CACHE base_image" \ - "$PROG 1 1 REPO Windows7" - exit 0 -fi - -[ $# -ne 4 ] && exit $(ogRaiseError session $OG_ERR_FORMAT "$MSG_FORMAT: $PROG ndisco nparticion REPO|CACHE imagen" ; echo $?) - -# Limpiamos fichero de log -echo " " > $OGLOGCOMMAND -[ "$(ogGetCaller)" == "CrearImagenBasica" ] || echo -n ""> $OGLOGSESSION - -ogEcho log session "[1] $MSG_SCRIPTS_START $0 $*" - -# Valores por defecto en etc/engine.cfg -IMGEXT=${IMGEXT:-"img"} -REPO="${3^^}" -# No permite directorios diferentes para OU -OGUNIT="" - -# Si es una ip y es igual a la del equipo restaura desde cache -[ "$REPO" == "$(ogGetIpAddress)" ] && REPO="CACHE" -# Si es una ip y es distinta a la del recurso samba cambiamos de REPO. -ogCheckIpAddress $REPO -if [ $? == 0 -o $REPO == "REPO" ] ; then - # Si falla el cambio -> salimos con error repositorio no valido - ogChangeRepo $REPO $OGUNIT || exit $(ogRaiseError $OG_ERR_NOTFOUND '$REPO'; echo $?) - REPO="REPO" -fi - -# Comprobamos si la imagen o la particion estan bloqueada: -ogIsImageLocked "$REPO" "$4.$IMGEXT" && exit $(ogRaiseError session $OG_ERR_LOCKED "$REPO $4.$IMGEXT"; echo $?) -ogIsLocked "$1" "$2" && exit $(ogRaiseError session $OG_ERR_LOCKED "$1 $2"; echo $?) - -# Si el repositorio es CACHE comprobamos que exista -if [ "$REPO" == "CACHE" -o "$REPO" == "cache" ]; then - ! ogFindCache >/dev/null && exit $(ogRaiseError session $OG_ERR_NOTCACHE "CACHE "; echo $?) -fi - -# Obtener información de los parámetros de entrada. -PART=$(ogDiskToDev "$1" "$2" 2>/dev/null) || exit $(ogRaiseError session $OG_ERR_PARTITION "$1 $2" ; echo $?) -# Comprobar consistencia del sistema de archivos. -echo " " > $OGLOGCOMMAND -SIZEFS=$(ogGetFsSize $1 $2) -ogEcho log session "[20] $MSG_HELP_ogCheckFs $PART $SIZEFS (KB) " -ogUnmount $1 $2 -ogCheckFs $1 $2 &> $OGLOGCOMMAND || exit $(ogRaiseError session $OG_ERR_PARTITION "ogCheckFs $1 $2"; echo $?) - -# Comprobamos que la particion se puede montar -ORIG=$(ogMount $1 $2) || exit $(ogRaiseError session $OG_ERR_PARTITION "$1 $2" ; echo $?) - -# Borramos ficheros de paginacion y configuracion -ogCleanOs $1 $2 - -#Comprobar espacio que requerira la imagen para ser almacenada -read SIZEDATA SIZEREQUIRED SIZEFREE ISENOUGHSPACE <<< $(ogGetSizeParameters $1 $2 "$REPO" "$4" SYNC) - -ogEcho log session "[16] $PROG: $MSG_SCRIPTS_CREATE_SIZE $SIZEREQUIRED $SIZEFREE" -[ "$ISENOUGHSPACE" == "TRUE" ] || exit $(ogRaiseError session $OG_ERR_CACHESIZE "$REPO"; echo $?) - -IMGDIR="$(ogGetParentPath "$REPO" "/$4")" -IMGFILE=${IMGDIR}/$(basename "/$4").$IMGEXT - -# Crear la imagen. -echo " " > $OGLOGCOMMAND -TIME2=$SECONDS - -ogEcho log session "[40] $MSG_HELP_ogCreateImage $1 $2 $REPO $4 " - -# Si existe el fichero de la imagen se hace copia de seguridad y se redimensiona, si no existe se crea. -# Bloqueo la imagen. Si esta en modo lectura dara error y nos salimos -ogEcho log session "[50] $MSG_HELP_ogCreateFileImage." -ogLockImage "$REPO" "/$4.$IMGEXT" || exit $? -ogCreateFileImage $REPO "$4" $IMGEXT $SIZEREQUIRED - -# Creamos la lista del contenido y lo situamos en la particion a copiar. -ogEcho log session "[60] $MSG_HELP_ogCreateInfoImage" -ogCreateInfoImage $1 $2 $IMGEXT - -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 -ogWaitSyncImage "$REPO" "$4" $IMGEXT "mounted" $SIZEREQUIRED || exit $(ogRaiseError session $OG_ERR_DONTMOUNT_IMAGE "$REPO $4 $IMGEXT: time_out."; echo $?) - -# Sincronizamos los datos de la particion con la imagen. -ogEcho log session "[70] $MSG_HELP_ogSyncCreate." -ogSyncCreate $1 $2 $REPO "$4" $IMGEXT -RETVAL=$? -[ $RETVAL == 0 ] || ogEcho session warning "$MSG_ERR_SYNCHRONIZING" - -TIMEAUX5=$[SECONDS-TIMEAUX3] -ogEcho log session " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL: $[TIMEAUX5/60]m $[TIMEAUX5%60]s" - -# Reducimos la imagen: solo para kernel <= 3.7, imagenes con FS ext4. (Desmonta y desbloquea la imagen) -ogEcho log session "[80] $MSG_HELP_ogReduceImage: $REPO /$4.$IMGEXT" -ogReduceImage $REPO "$4" $IMGEXT -# Esperamos que el servidor termine de reducir la imagen -ogWaitSyncImage "$REPO" "$4" $IMGEXT "reduced" $SIZEREQUIRED || exit $(ogRaiseError session $OG_ERR_DONTMOUNT_IMAGE "$REPO $4 $IMGEXT: time_out."; echo $?) - -echo " " > $OGLOGCOMMAND -sleep 2 -# Comprobamos que la imagen esta bien detectacdo que es un sistema de ficheros. -ogEcho log session "[95] $MSG_HELP_ogCheckSyncImage" -ogCheckSyncImage $REPO "$4" "img" || exit $(ogRaiseError session $OG_ERR_IMAGE "$REPO $4 img" ; echo $?) - -#resumen de la operacion -IMGSIZE=$(ls -l --block-size=1024 "$IMGFILE" | cut -f5 -d" ") - -TIME=$[SECONDS-TIME1] -ogEcho log session "[100] $MSG_SCRIPTS_TIME_TOTAL $[TIME/60]m $[TIME%60]s" -ogEcho log session " FileSystem $PART with $SIZEDATA KB data created onto file-image as $4 and used $IMGSIZE KB acros DFS rsync " - -# Si ha habido problema al sincronizar nos salimos con error -[ $RETVAL == 0 ] || exit $OG_ERR_SYNCHRONIZING diff --git a/client/shared/scripts/createDiffImage b/client/shared/scripts/createDiffImage deleted file mode 100755 index ddee5c7..0000000 --- a/client/shared/scripts/createDiffImage +++ /dev/null @@ -1,201 +0,0 @@ -#!/bin/bash - -#/** -# createDiffImage -#@brief Script de ejemplo para crear una imagen diferencial de un sistema de archivos. -#@brief Se usa como base para el programa de creación de imágenes de OpenGnsys Admin). -#@param 1 disco -#@param 2 particion -#@param 3 REPO|CACHE -#@param 4 imagen_completa -#@param 5 imagen_diferencial -#@return -#@exception OG_ERR_FORMAT # 1 formato incorrecto. -#@exception OG_ERR_PARTITION # 3 Error en partición de disco o en su sistema de archivos -#@exception OG_ERR_NOTFOUND # Fichero de registro no encontrado. -#@exception OG_ERR_IMAGE # 5 Error en funcion ogCreateImage o ogRestoreImage. -#@exception OG_ERR_NOTWRITE # 14 error de escritura -#@exception OG_ERR_NOTCACHE # 15 si cache no existe 15 -#@exception OG_ERR_CACHESIZE # 16 si espacio de la cache local o remota no tiene espacio 16 -#@exception OG_ERR_LOCKED # 4 Partición o fichero bloqueado. -#@exception OG_ERR_DONTMOUNT_IMAGE # 70 Error al montar una imagen sincronizada. -#@exception OG_ERR_DONTSYNC_IMAGE # 71 Imagen no sincronizable (es monolitica) -#@note Se toma como punto de partida el script createImage. -#@todo: que hacer, si el tamaño de la cache es sufciente, pero no tiene espacio libre -#@version 1.0 - creacion de la diferencial con rsync y btrfs -#@author -#@date 2012-12-04 -#@version 1.1.0 - Se muestra el espacio necesario para alojar la imagen y el disponible (ticket #771) -#@author Irina Gomez - ETSII Universidad de Sevilla -#@date 2017-03-28 -#@version 1.1.1 - Varios repositorios para un mismo cliente (ticket #679). -#@author Irina Gomez - ETSII Universidad de Sevilla -#@date 2018/11/06 -#*/ ## -trap "onexit $1 $2 \"$4\" \"$5\"" 1 2 3 6 9 14 15 EXIT - -function onexit() { - local exit_status=$? - ogUnmountImage $REPO "$5" $DIFFTYPE &>/dev/null - ogUnmountImage $REPO "$3" $IMGEXT &>/dev/null - if [ $exit_status -ne 4 ]; then - ogUnlockImage "$IMGFILE" &>/dev/null - ogUnlockImage "$DIFFFILE" &>/dev/null - ogUnlock $1 $2 &>/dev/null - fi - exit $exit_status -} - -#Carga el configurador del engine desde el fichero engine.cfg -[ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg - -TIME1=$SECONDS - -PROG="$(basename $0)" -# Si se solicita, mostrar ayuda. -if [ "$*" == "help" ]; then - ogHelp "$PROG: $MSG_HELP_createDiffImage" \ - "$PROG ndisco nparticion REPO|CACHE base_image diff_image" \ - "$PROG 1 1 REPO Windows7 Win7aula23" - exit 0 -fi - -[ $# -lt 5 ] && exit $(ogRaiseError session $OG_ERR_FORMAT "$MSG_FORMAT: $PROG ndisco nparticion REPO|CACHE base_image diff_image"; echo $?) - -# Limpiamos los archivo de log -echo -n "" >$OGLOGCOMMAND -[ "$(ogGetCaller)" == "RestaurarSoftIncremental" ] || echo -n "" > $OGLOGSESSION - -ogEcho log session "[1] $MSG_SCRIPTS_START $0 $*" - -# Valores por defecto en etc/engine.cfg -IMGEXT="img" -DIFFEXT="img.diff" -DIFFTYPE="diff" -REPO="${3^^}" -# No permite directorios diferentes para OU -OGUNIT="" - -# Si es una ip y es igual a la del equipo restaura desde cache -[ "$REPO" == "$(ogGetIpAddress)" ] && REPO="CACHE" -# Si es una ip y es distinta a la del recurso samba cambiamos de REPO. -ogCheckIpAddress $REPO -if [ $? == 0 -o $REPO == "REPO" ] ; then - # Si falla el cambio -> salimos con error repositorio no valido - ogChangeRepo $REPO $OGUNIT || exit $(ogRaiseError $OG_ERR_NOTFOUND '$REPO'; echo $?) - REPO="REPO" -fi - -# Comprobamos si la imagen diferencial o la particion estan bloqueada: -ogIsImageLocked "$REPO" "$5.$DIFFEXT" && exit $(ogRaiseError session $OG_ERR_LOCKED "$REPO $5.$DIFFEXT"; echo $?) -ogIsLocked "$1" "$2" && exit $(ogRaiseError session $OG_ERR_LOCKED "$1 $2"; echo $?) - -# Comprobar si la imagen completa existe. -IMGFILE="$(ogGetPath "$REPO" "$4.$IMGEXT")" -[ -n "$IMGFILE" ] || exit $(ogRaiseError session $OG_ERR_NOTFOUND "$REPO $4.$IMGEXT"; echo $?) - -# Comprobar que la imagen completa es sincronizable -ogIsSyncImage "$REPO" "$4" "img" || exit $(ogRaiseError session $OG_ERR_DONTSYNC_IMAGE "$REPO $4"; echo $?) -# Comprobar que no está bloqueada -ogIsImageLocked "$REPO" "$4.$IMGEXT" && exit $(ogRaiseError session $OG_ERR_LOCKED "$REPO $4.$IMGEXT"; echo $?) - -# Si el repositorio es CACHE comprobamos que exista -if [ "$REPO" == "CACHE" -o "$REPO" == "cache" ]; then - ! ogFindCache >/dev/null && exit $(ogRaiseError session $OG_ERR_NOTCACHE "CACHE "; echo $?) -fi - -echo " " > $OGLOGCOMMAND - -# Obtener información de los parámetros de entrada. -PART=$(ogDiskToDev "$1" "$2" 2>/dev/null) || exit $(ogRaiseError session $OG_ERR_PARTITION "$1 $2"; echo $?) -#Comprobamos que la partición se puede montar. -ORIG=$(ogMount $1 $2) || exit $(ogRaiseError session $OG_ERR_PARTITION "$1 $2"; echo $?) - -DIFFDIR="$(ogGetParentPath "$REPO" "/$5")" -DIFFFILE="$DIFFDIR/$5.$DIFFEXT" - -# Bloqueo las imagenes -> Si no hay acceso de escritura dara error y nos saldremos. -ogLockImage "$REPO" "/$4.$IMGEXT" || exit $? -ogLockImage "$REPO" "/$5.$DIFFEXT" || exit $? - -# Comprobar consistencia del sistema de archivos. -echo " " > $OGLOGCOMMAND -SIZEFS=$(ogGetFsSize $1 $2) -ogEcho log session "[20] $MSG_HELP_ogCheckFs $1 $2 $SIZEFS (KB) " -ogUnmount $1 $2 -ogCheckFs $1 $2 >$OGLOGCOMMAND || exit $(ogRaiseError session $OG_ERR_PARTITION "ogCheckFs $1 $2" ; echo $?) - -# Borramos ficheros de paginacion y configuracion -ogCleanOs $1 $2 - -# Crear la imagen. -echo " " > $OGLOGCOMMAND -TIME2=$SECONDS -ogEcho log session "[40] $MSG_HELP_createDiffImage: $1 $2 $REPO $4" -# Creamos la lista del contenido y lo situamos en la particion a copiar. - -# Montamos imagen completa (con la que vamos a comparar) -ogMountImage $REPO "$4" $IMGEXT >/dev/null - -# Comprobar que la imagen completa se ha montado -ogWaitSyncImage $REPO "$4" $IMGEXT "mounted" || exit $(ogRaiseError session $OG_ERR_DONTMOUNT_IMAGE "$REPO $4 $IMGEXT: time_out."; echo $?) - -# Creamos la informacion de la imagen. -ogEcho log session "[45] $MSG_HELP_ogCreateInfoImage " -ogCreateInfoImage $1 $2 $REPO "$4" "${DIFFTYPE}" -[ $? -eq $OG_ERR_NOTDIFFERENT ] && exit $(ogRaiseError session $OG_ERR_NOTDIFFERENT; echo $?) - -#Comprobar espacio que requerira la imagen para ser almacenada -read SIZEDATA SIZEREQUIRED SIZEFREE ISENOUGHSPACE <<< $(ogGetSizeParameters $1 $2 "$REPO" "$5" DIFF) - -ogEcho log session "[50] $PROG: $MSG_SCRIPTS_CREATE_SIZE $SIZEREQUIRED $SIZEFREE" -[ "$ISENOUGHSPACE" == "TRUE" ] || exit $(ogRaiseError session $OG_ERR_CACHESIZE "$REPO"; echo $?) - -#Calculamos el tamaño de la imagen: -ogMount $1 $2 >/dev/null -ogLock $1 $2 - -TIMEAUX3=$[SECONDS-TIME2] -ogEcho log session " $MSG_SCRIPTS_TASK_END $MSG_SCRIPTS_TIME_PARTIAL: $[TIMEAUX3/60]m $[TIMEAUX3%60]s" - -TIMEAUX5=$[SECONDS-TIMEAUX3] - -# 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 -ogEcho log session "[60] $MSG_HELP_ogCreateFileImage." -ogCreateFileImage $REPO "$5" $DIFFTYPE $SIZEREQUIRED - -# Esperamos que se monte la imagen despues de crarla en el servidor -ogWaitSyncImage "$REPO" "$5" "$DIFFTYPE" "mounted" $SIZEREQUIRED || exit $(ogRaiseError session $OG_ERR_DONTMOUNT_IMAGE "$REPO $5 $DIFFTYPE: time_out."; echo $?) - -ogEcho log session "[70] $MSG_HELP_ogSyncCreate" -# Copio los datos a la imagen diferecial : -ogSyncCreate $1 $2 $REPO "$5" $DIFFTYPE -RETVAL=$? -[ $RETVAL == 0 ] || ogEcho session warning "$MSG_ERR_SYNCHRONIZING" -TIMEAUX6=$[SECONDS-TIMEAUX5] -ogEcho log session " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL: $[TIMEAUX6/60]m $[TIMEAUX6%60]s" - -# Reducimos la imagen diferencial -> solo para kernel <= 3.7, imagenes con FS ext4 -ogEcho log session "[80] $MSG_HELP_ogReduceImage: $REPO /$4.$IMGEXT" -ogReduceImage $REPO "$5" $DIFFTYPE -# Esperamos que el servidor termine de reducir la imagen -ogWaitSyncImage "$REPO" "$5" $DIFFTYPE "reduced" $SIZEREQUIRED || exit $(ogRaiseError session $OG_ERR_DONTMOUNT_IMAGE "$REPO $4 $IMGEXT: time_out."; echo $?) -# TODO: necesaria funcion que espere a que se reduzca la imagen para continuar el script - -echo " " > $OGLOGCOMMAND -sleep 2 -# Comprobamos que la imagen esta bien -ogEcho log session "[95] $MSG_HELP_ogCheckSyncImage" -ogCheckSyncImage $REPO "$5" diff || exit $(ogRaiseError session $OG_ERR_IMAGE "$REPO $5 diff"; echo $?) - -#resumen de la operacion -IMGSIZE=$(ls -l --block-size=1024 "${DIFFFILE}"| cut -f5 -d" ") -TIME=$[SECONDS-TIME1] -ogEcho log session "[100] $MSG_SCRIPTS_TIME_TOTAL $[TIME/60]m $[TIME%60]s" -ogEcho log session " FileSystem $PART with $SIZEDATA KB data created onto file-image as $5 and used $IMGSIZE KB acros DFS rsync " - -# Si ha habido problema al sincronizar nos salimos con error -[ $RETVAL == 0 ] || exit $OG_ERR_SYNCHRONIZING diff --git a/client/shared/scripts/ogCrearImagenBasica b/client/shared/scripts/ogCrearImagenBasica deleted file mode 100755 index c4f622c..0000000 --- a/client/shared/scripts/ogCrearImagenBasica +++ /dev/null @@ -1,167 +0,0 @@ -#!/bin/bash -#___________________________________________________________________ -# -# CREAR IMAGEN BÁSICA -#___________________________________________________________________ -# -# Parámetros recibidos desde el cliente: -# -# $1 Número de disco -# $2 Número de particion -# $3 Nombre canónico de la imagen básica (sin extensión) -# $4 Dirección del repositorio -# $5 Es una cadena "nnn" tipo flags que codifica varios parametros. -# Tiene el formato "nnn" donde "n" vale 0 ó 1. -# 1XX: Gestionar fichero completo en lugar de diferencas -# X1X: Eliminar archivos de la imagen que no estén en la partición -# XX1: Comprimir archivos para enviarlos por la red -# El valor X indica que no importa el valor que tenga el dato -# $6 Es una cadena "nnnn" tipo flags que codifica varios parametros. -# Tiene el formato "nnnn" donde "n" vale 0 ó 1. -# 1XXX: Borrar la imagen del repositorio antes de crearla -# X1XX: Copiar Imagen básica también a la cache -# XX1X: Borrar previamente la imagen de la cache antes de copiarla -# XXX1: No borrar archivos en destino -# El valor X indica que no importa el valor que tenga el dato -# $7 Método de syncronización 1=Sincronización1 2=Sincronizacion2 -# $8 Ruta de origen de la Imagen (Carpeta) - - -#___________________________________________________________________ -# -# Control parámetros -#___________________________________________________________________ - - PROG="$(basename $0)" - if [ $# -lt 7 ]; then - usage=" ndisco nparticion nombre_imagen_basica ip_repositorio" - usage="$usage copiar_a_caché Borrar_cache_previamente Ruta_origen" - ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG $usage" - exit $? - fi - - DISCO=$1 - NPART=$2 - NOMBREIMG=$3 - IPREPOSITORIO=$4 - - flag=$5 - echo "flah:$flag">/tmp/log - WHLFILE=${flag:0:1} - RMVFILE=${flag:1:1} - CMPFILE=${flag:2:1} - - flag=$6 - echo "flah:$flag">/tmp/log - BORRARIMG=${flag:0:1} - COPIACACHE=${flag:1:1} - BORRACACHE=${flag:2:1} - NOBORRACHIVOS=${flag:3:1} - - RUTAORIGEN=$8 -#___________________________________________________________________ -# -# Variables y configuración logs -#___________________________________________________________________ - - source /opt/opengnsys/scripts/ImagenesSincronizadas.lib - -#___________________________________________________________________ -# -# Activa navegador para ver progreso -#___________________________________________________________________ - - coproc /opt/opengnsys/bin/browser -qws http://localhost/cgi-bin/httpd-log.sh -#___________________________________________________________________ -# -# Proceso -#___________________________________________________________________ - - echo "Creacion de imagen basica..." | tee -a $OGLOGSESSION $OGLOGFILE - - ORIGEN=$PARTICION$RUTAORIGEN/ - DESTINO="$REPOSITORIO/$NOMBREIMG/" - - # Borrado previo de imagen en repositorio - if [ $BORRARIMG -eq 1 ]; then - echo "Borrando previamente imagen del repositorio" | tee -a $OGLOGSESSION $OGLOGFILE - fi - - ## Marca de localizacion Repositorio - FILE_IMG=".marcimg" - MARCA=$ORIGEN$FILE_IMG - ## Marca de localizacion Repositorio en Imagen - if [[ ! -f $MARCA ]]; then - ##echo "Creando Marca Repositorio en Imagen $MARCA" | tee -a $OGLOGSESSION $OGLOGFILE - touch $MARCA - fi - - # Creación de la imagen básica - echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE - crearListaAcl $ORIGEN $DESTINO $SISTEMAFICHERO $DISCO $NPART - crearImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1 - RETVAL=$? - if [ $RETVAL -ne 0 ]; then - kill $COPROC_PID - exit $OG_ERR_IMAGE - fi - - echo "!!! Finaliza correctamente !!! la creacion de imagen básica $NOMBREIMG entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE - - # Copia opcional a la caché - if [ $COPIACACHE -eq 1 ]; then - echo "Copiando imagen a cache" | tee -a $OGLOGSESSION $OGLOGFILE - CACHE=$(montaCache) - if [ -z $CACHE ]; then - echo "No se ha podido copiar la imagen a la cache" | tee -a $OGLOGSESSION $OGLOGFILE - kill $COPROC_PID - exit $OG_ERR_NOTCACHE - fi - - # Borrar imagen de la caché - if [ $BORRACACHE -eq 1 ]; then - echo "Borrando imagen $NOMBREIMG de la cache" | tee -a $OGLOGSESSION $OGLOGFILE - rm -R $CACHE$OGIMG/$NOMBREIMG - fi - - # Redefinir destino - DESTINO="$CACHE$OGIMG/$NOMBREIMG/" - - ## Marca de localizacion Repositorio - FILE_IMG=".marcimg" - MARCA=$ORIGEN$FILE_IMG - ## Marca de localizacion Repositorio en Imagen - if [[ ! -f $MARCA ]]; then - ##echo "Creando Marca Repositorio en Imagen $MARCA" | tee -a $OGLOGSESSION $OGLOGFILE - touch $MARCA - fi - - echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE - - crearImagen $ORIGEN $DESTINO $SISTEMAFICHERO 2 - - RETVAL=$? - if [ $RETVAL -ne 0 ]; then - kill $COPROC_PID - exit $OG_ERR_IMAGE - fi - echo "!!! Finaliza correctamente !!! la copia de imagen basica $NOMBREIMG a la cache" | tee -a $OGLOGSESSION $OGLOGFILE - fi - - eliminaListaAcl $ORIGEN $SISTEMAFICHERO - ## Eliminar Marca Repositorio - rm $MARCA - - #comprimeImagen $NOMBREIMG - RETVAL=$? - if [ $RETVAL -ne 0 ]; then - kill $COPROC_PID - exit $OG_ERR_IMAGE - fi -#___________________________________________________________________ -# -# Retorno -#___________________________________________________________________ - - kill $COPROC_PID - exit 0 diff --git a/client/shared/scripts/ogCrearSoftIncremental b/client/shared/scripts/ogCrearSoftIncremental deleted file mode 100755 index de91670..0000000 --- a/client/shared/scripts/ogCrearSoftIncremental +++ /dev/null @@ -1,185 +0,0 @@ -#!/bin/bash -#___________________________________________________________________ -# -# CREAR IMAGEN INCREMENTAL -#___________________________________________________________________ -# -# Parámetros recibidos desde el cliente: -# -# $1 Número de disco -# $2 Número de particion -# $3 Nombre canónico de la imagen básica (sin extensión) -# $4 Dirección del repositorio -# $5 Nombre canónico de la imagen incremental (sin extensión) -# $6 Es una cadena "nnn" tipo flags que codifica varios parametros. -# Tiene el formato "nnn" donde "n" vale 0 ó 1. -# 1XX: Gestionar fichero completo en lugar de diferencas -# X1X: Eliminar archivos de la imagen que no estén en la partición -# XX1: Comprimir archivos para enviarlos por la red -# El valor X indica que no importa el valor que tenga el dato -# $7 Es una cadena "nnnn" tipo flags que codifica varios parametros. -# Tiene el formato "nnnn" donde "n" vale 0 ó 1. -# 1XXX: Borrar la imagen incremental del repositorio antes de crearla -# X1XX: Copiar imagen incremental también a la cache -# XX1X: Borrar previamente la imagen incremental de la cache antes de copiarla -# XXX1: No borrar archivos en destino -# El valor X indica que no importa el valor que tenga el dato -# $8 Método de syncronización 1=Sincronización1 2=Sincronizacion2 -# $9 Ruta de origen de la Imagen (Carpeta) - -#___________________________________________________________________ -# -# Control parámetros -#___________________________________________________________________ - - PROG="$(basename $0)" - if [ $# -lt 7 ]; then - usage=" ndisco nparticion nombre_imagen_basica ip_repositorio nombre_imagen_incremental" - usage="$usage copiar_a_caché Borrar_cache_previamente Ruta_origen" - ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG $usage" - exit $? - fi - - DISCO=$1 - NPART=$2 - NOMBREIMG=$3 - IPREPOSITORIO=$4 - NOMBREIMGINC=$5 - - flag=$6 - echo "flah:$flag">/tmp/log - WHLFILE=${flag:0:1} - RMVFILE=${flag:1:1} - CMPFILE=${flag:2:1} - - flag=$7 - echo "flah:$flag">/tmp/log - BORRARIMG=${flag:0:1} - COPIACACHE=${flag:1:1} - BORRACACHE=${flag:2:1} - NOBORRACHIVOS=${flag:3:1} - - RUTAORIGEN=$9 -#___________________________________________________________________ -# -# Variables y configuración logs -#___________________________________________________________________ - - source /opt/opengnsys/scripts/ImagenesSincronizadas.lib -#___________________________________________________________________ -# -# Activa navegador para ver progreso -#___________________________________________________________________ - - coproc /opt/opengnsys/bin/browser -qws http://localhost/cgi-bin/httpd-log.sh -#___________________________________________________________________ -# -# Lista de archivos a sincronizar -#___________________________________________________________________ - - TMPFILELIST="/tmp/_listatmp_" - FILELIST="/tmp/_lista_" -#___________________________________________________________________ -# -# Proceso -#___________________________________________________________________ - - echo "Creacion de imagen incremental..." | tee -a $OGLOGSESSION $OGLOGFILE - - ORIGEN=$PARTICION$RUTAORIGEN/ - DESTINO="$REPOSITORIO/$NOMBREIMG/" - - # Borrado previo de imagen en repositorio - if [ $BORRARIMG -eq 1 ]; then - echo "Borrando previamente imagen del $NOMBREIMGINC repositorio" | tee -a $OGLOGSESSION $OGLOGFILE - fi - - ## Marca de localizacion Repositorio - FILE_IMG=".marcimg" - MARCAORIGEN=$ORIGEN$FILE_IMG - ## Marca de localizacion Repositorio en Imagen - if [ ! -f $MARCAORIGEN ]; then - ##echo "Creando Marca Repositorio en Particion $MARCAORIGEN" | tee -a $OGLOGSESSION $OGLOGFILE - touch $MARCAORIGEN - fi - - # Creación de la lista de archivos entre partición e imagen básica del repositorio - echo "Creacion de la lista de archivos a transferir entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE - crearListaAcl $ORIGEN $DESTINO $SISTEMAFICHERO $DISCO $NPART - crearImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1 1 $TMPFILELIST - RETVAL=$? - if [ $RETVAL -ne 0 ]; then - kill $COPROC_PID - exit $OG_ERR_IMAGE - fi - - # Editar la lista y depurarla - editarLista $TMPFILELIST $FILELIST - - # Creación de la imagen incremental en el repositorio - DESTINO="$REPOSITORIO/$NOMBREIMGINC/" - echo "Sincronizacion para crear imagen incremental entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE - crearImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1 2 $FILELIST - RETVAL=$? - if [ $RETVAL -ne 0 && [$RETVAL -ne 23]; then - kill $COPROC_PID - exit $OG_ERR_IMAGE - fi - ## Marca de localizacion Repositorio - FILE_IMG=".marcimg" - MARCA=$DESTINO$FILE_IMG - ## Marca de localizacion Repositorio en Imagen - if [ ! -f $MARCA ]; then - ##echo "Creando Marca Repositorio en Imagen $MARCA" | tee -a $OGLOGSESSION $OGLOGFILE - touch $MARCA - fi - - echo "!!! Finaliza correctamente !!! la creacion de imagen incremental $NOMBREIMGINC entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE - - # Copia opcional a la caché - if [ $COPIACACHE -eq 1 ]; then - echo "Copiando imagen a cache" | tee -a $OGLOGSESSION $OGLOGFILE - CACHE=$(montaCache) - if [ -z $CACHE ]; then - echo "No se ha podido copiar la imagen a la cache" | tee -a $OGLOGSESSION $OGLOGFILE - kill $COPROC_PID - exit $OG_ERR_NOTCACHE - fi - - # Borrar imagen de la caché - if [ $BORRACACHE -eq 1 ]; then - echo "Borrando imagen $NOMBREIMGINC de la cache" | tee -a $OGLOGSESSION $OGLOGFILE - rm -R $CACHE$OGIMG/$NOMBREIMGINC - fi - - DESTINO="$CACHE$OGIMG/$NOMBREIMGINC/" - echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE - crearImagen $ORIGEN $DESTINO $SISTEMAFICHERO 2 2 $FILELIST - RETVAL=$? - if [ $RETVAL -ne 0 ]; then - kill $COPROC_PID - exit $OG_ERR_IMAGE - fi - echo "!!! Finaliza correctamente !!! la copia de imagen incremental $NOMBREIMGINC a la cache" | tee -a $OGLOGSESSION $OGLOGFILE - fi - - ## Marca de localizacion Repositorio - FILE_IMG=".marcimg" - MARCA=$DESTINO$FILE_IMG - ## Marca de localizacion Repositorio en CACHE - if [ ! -f $MARCA ]; then - ##echo "Creando Marca Repositorio en CACHE $MARCA" | tee -a $OGLOGSESSION $OGLOGFILE - touch $MARCA - fi - - ## Eliminando Marca Origen Repositorio - rm $MARCAORIGEN - eliminaListaAcl $ORIGEN $SISTEMAFICHERO -#___________________________________________________________________ -# -# Retorno -#___________________________________________________________________ - - kill $COPROC_PID - exit 0 - diff --git a/client/shared/scripts/ogRestaurarImagenBasica b/client/shared/scripts/ogRestaurarImagenBasica deleted file mode 100755 index d045f83..0000000 --- a/client/shared/scripts/ogRestaurarImagenBasica +++ /dev/null @@ -1,206 +0,0 @@ -#!/bin/bash -#___________________________________________________________________ -# -# RESTAURAR IMAGEN BÁSICA -#___________________________________________________________________ -# -# Parámetros recibidos desde el cliente: -# -# $1 Número de disco -# $2 Número de particion -# $3 Nombre canónico de la imagen básica (sin extensión) -# $4 Dirección del repositorio -# $5 Tipo de transmisión 0=Unicast 1=Multicast -# $6 Es una cadena "nnn" tipo flags que codifica varios parametros. -# Tiene el formato "nnn" donde "n" vale 0 ó 1. -# 1XX: Gestionar fichero completo en lugar de diferencas -# X1X: Eliminar archivos de la partición que no estén en la imagen -# XX1: Comprimir archivos para enviarlos por la red -# El valor X indica que no importa el valor que tenga el dato -# $7 Es una cadena "nnnn" tipo flags que codifica varios parametros. -# Tiene el formato "nnnn" donde "n" vale 0 ó 1. -# 1XXX: Borrar la particion de destino antes de restaurar la imagen basica -# X1XX: Copiar Imagen básica también a la cache -# XX1X: Borrar previamente la imagen basica de la cache antes de copiarla -# XXX1: No borrar archivos en destino -# El valor X indica que no importa el valor que tenga el dato -# $8 Método de clonación 0=Desde caché 1=Desde repositorio -# $9 Metodo de sincronizacion 1=Sincronización1 2=Sincronizacion2 -# $10 Ruta de origen de la Imagen (Carpeta) -#___________________________________________________________________ -# -# Control parámetros -#___________________________________________________________________ - - PROG="$(basename $0)" - if [ $# -lt 8 ]; then - usage=" ndisco nparticion nombre_imagen_basica ip_repositorio copiar_a_caché " - usage="$usage Borrar_cache_previamente metodo_clonación Ruta_origen" - ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG $usage" - exit $? - fi - - DISCO=$1 - NPART=$2 - NOMBREIMG=$3 - IPREPOSITORIO=$4 - - flag=$6 - echo "flah:$flag">/tmp/log - WHLFILE=${flag:0:1} - RMVFILE=${flag:1:1} - CMPFILE=${flag:2:1} - - flag=$7 - echo "flah:$flag">/tmp/log - BORRARIMG=${flag:0:1} - COPIACACHE=${flag:1:1} - BORRACACHE=${flag:2:1} - NOBORRACHIVOS=${flag:3:1} - - METCLONA=$8 - RUTAORIGEN=${10} -#___________________________________________________________________ -# -# Variables y configuración logs -#___________________________________________________________________ - - source /opt/opengnsys/scripts/ImagenesSincronizadas.lib -#___________________________________________________________________ -# -# Activa navegador para ver progreso -#___________________________________________________________________ - - coproc /opt/opengnsys/bin/browser -qws http://localhost/cgi-bin/httpd-log.sh - -#___________________________________________________________________ -# -# Proceso -#___________________________________________________________________ - - # Llamada a la función de sincronización. - echo "Restauracion de imagen basica..." | tee -a $OGLOGSESSION $OGLOGFILE - - # Borrado previo de la partición - if [ $BORRARIMG -eq 1 ]; then - if [ -n $RUTAORIGEN ]; then - echo "Borrando carpeta $PARTICION$RUTAORIGEN" | tee -a $OGLOGSESSION $OGLOGFILE - rm -R $PARTICION$RUTAORIGEN - else - echo "Formateando la particion" | tee -a $OGLOGSESSION $OGLOGFILE - ogFormat $DISCO $PARTICION $TIPOPARTICION - RETVAL=$? - if [ $RETVAL -ne 0 ]; then - kill $COPROC_PID - exit $OG_ERR_PARTITION - fi - fi - fi - - # Sincronización desde repositorio - if [ $METCLONA = 1 ]; then - if [ $COPIACACHE = 0 ]; then - echo "Restaurando imagen basica desde repositorio $IPREPOSITORIO" | tee -a $OGLOGSESSION $OGLOGFILE - ORIGEN="$REPOSITORIO/$NOMBREIMG/" - DESTINO=$PARTICION$RUTAORIGEN/ - # Restauración de la imagen básica - echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE - restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1 - - RETVAL=$? - if [ $RETVAL -ne 0 ]; then - echo "***Error:$RETVAL. restaurando imagen basica desde repositorio $IPREPOSITORIO" | tee -a $OGLOGSESSION $OGLOGFILE - kill $COPROC_PID - exit $OG_ERR_IMAGE - fi - restauraListaAcl $ORIGEN $DESTINO $SISTEMAFICHERO $DISCO $NPART - - RETVAL=$? - if [ $RETVAL -ne 0 ]; then - echo "***Error:$RETVAL. restaurando listas ACL desde repositorio $IPREPOSITORIO" | tee -a $OGLOGSESSION $OGLOGFILE - kill $COPROC_PID - exit $OG_ERR_IMAGE - fi - echo "!!! Finaliza correctamente !!! la restauracion de imagen basica $NOMBREIMG desde repositorio $IPREPOSITORIO" | tee -a $OGLOGSESSION $OGLOGFILE - kill $COPROC_PID - exit 0 - fi - fi - - if [ $METCLONA = 0 ]; then - # Restauración desde la caché - echo "Restaurando desde la cache" | tee -a $OGLOGSESSION $OGLOGFILE - fi - # Comprobar si existe caché - CACHE=$(montaCache) - if [ -z $CACHE ]; then - echo "No se puede restaurar la imagen desde la cache ya que no existe" | tee -a $OGLOGSESSION $OGLOGFILE - kill $COPROC_PID - ogRaiseError $OG_ERR_NOTCACHE "CACHE" - exit $OG_ERR_NOTCACHE - fi - - # Borrar imagen de la caché - if [ $BORRACACHE -eq 1 ]; then - echo "Borrando imagen $NOMBREIMG de la cache" | tee -a $OGLOGSESSION $OGLOGFILE - rm -R $CACHE$OGIMG/$NOMBREIMG - fi - - # Actualización de la caché - echo "Actualizando cache local desde repositorio $IPREPOSITORIO" | tee -a $OGLOGSESSION $OGLOGFILE - ORIGEN="$REPOSITORIO/$NOMBREIMG/" - DESTINO="$CACHE$OGIMG/$NOMBREIMG/" - echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE - restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1 - - RETVAL=$? - if [ $RETVAL -ne 0 ]; then - echo "***Error:$RETVAL. Actualizando cache local desde repositorio $IPREPOSITORIO" | tee -a $OGLOGSESSION $OGLOGFILE - kill $COPROC_PID - exit $OG_ERR_IMAGE - fi - - echo "!!! Finaliza correctamente !!! copia de imagen basica a cache local" | tee -a $OGLOGSESSION $OGLOGFILE - - # Restauración desde caché a la partición - echo "Copiando imagen a la particion desde cache local" | tee -a $OGLOGSESSION $OGLOGFILE - - ORIGEN="$CACHE$OGIMG/$NOMBREIMG/" - DESTINO="$PARTICION$RUTAORIGEN/" - echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE - restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 2 - - RETVAL=$? - if [ $RETVAL -ne 0 ]; then - echo "***Error:$RETVAL. restaurando imagen basica desde cache local" | tee -a $OGLOGSESSION $OGLOGFILE - kill $COPROC_PID - exit $OG_ERR_IMAGE - fi - - restauraListaAcl $ORIGEN $DESTINO $SISTEMAFICHERO $DISCO $NPART - RETVAL=$? - if [ $RETVAL -ne 0 ]; then - echo "***Error:$RETVAL. restaurando listas ACL desde cache local" | tee -a $OGLOGSESSION $OGLOGFILE - kill $COPROC_PID - exit $OG_ERR_IMAGE - fi - - echo "Ejecutando configure OS" | tee -a $OGLOGSESSION $OGLOGFILE - if which configureOsCustom &>/dev/null; then - ogEcho log session "[90] configureOsCustom" - configureOsCustom "$DISCO" "$NPART" "$IPREPOSITORIO" "$NOMBREIMG" - else - ogEcho log session "[90] $MSG_SCRIPTS_OS_CONFIGURE " - configureOs "$DISCO" "$NPART" - fi - - - echo "!!! Finaliza correctamente !!! restauracion imagen basica $NOMBREIMG desde cache local" | tee -a $OGLOGSESSION $OGLOGFILE -#___________________________________________________________________ -# -# Retorno -#___________________________________________________________________ - - kill $COPROC_PID - - exit 0 diff --git a/client/shared/scripts/ogRestaurarSoftIncremental b/client/shared/scripts/ogRestaurarSoftIncremental deleted file mode 100755 index a4f73aa..0000000 --- a/client/shared/scripts/ogRestaurarSoftIncremental +++ /dev/null @@ -1,209 +0,0 @@ -#!/bin/bash -#___________________________________________________________________ -# -# RESTAURAR IMAGEN INCREMENTAL -#___________________________________________________________________ -# -# Parámetros recibidos desde el cliente: -# -# $1 Número de disco -# $2 Número de particion -# $3 Nombre canónico de la imagen básica (sin extensión) -# $4 Dirección del repositorio -# $5 Nombre canónico del software incremental (sin extensión) -# $6 Tipo de transmisión 0=Unicast 1=Multicast -# $7 Es una cadena "nnn" tipo flags que codifica varios parametros. -# Tiene el formato "nnn" donde "n" vale 0 ó 1. -# 1XX: Gestionar fichero completo en lugar de diferencas -# X1X: Eliminar archivos de la partición que no estén en la imagen -# XX1: Comprimir archivos para enviarlos por la red -# El valor X indica que no importa el valor que tenga el dato -# $8 Es una cadena "nnnn" tipo flags que codifica varios parametros. -# Tiene el formato "nnnn" donde "n" vale 0 ó 1. -# 1XXX: Borrar la particion de destino antes de restaurar la imagen basica -# X1XX: Copiar Imagen básica también a la cache -# XX1X: Borrar previamente la imagen basica de la cache antes de copiarla -# XXX1: No borrar archivos en destino -# El valor X indica que no importa el valor que tenga el dato -# $9 Método de clonación 0=Desde caché 1=Desde repositorio -# $10 Metodo de sincronizacion 1=Sincronización1 2=Sincronizacion2 -# $11 Ruta de origen de la Imagen (Carpeta) -#___________________________________________________________________ -# -# Control parámetros -#___________________________________________________________________ - - PROG="$(basename $0)" - if [ $# -lt 6 ]; then - usage=" ndisco nparticion nombre_imagen_basica ip_repositorio copiar_a_caché " - usage="$usage Borrar_cache_previamente metodo_clonación Ruta_origen" - ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG $usage" - exit $? - fi - - DISCO=$1 - NPART=$2 - NOMBREIMG=$3 - IPREPOSITORIO=$4 - NOMBREIMGINC=$5 - - flag=$7 - echo "flah:$flag">/tmp/log - WHLFILE=${flag:0:1} - RMVFILE=${flag:1:1} - CMPFILE=${flag:2:1} - - flag=$8 - echo "flah:$flag">/tmp/log - BORRARIMG=${flag:0:1} - COPIACACHE=${flag:1:1} - BORRACACHE=${flag:2:1} - NOBORRACHIVOS=${flag:3:1} - - METCLONA=$9 - RUTAORIGEN=${11} -#___________________________________________________________________ -# -# Variables y configuración logs -#___________________________________________________________________ - - source /opt/opengnsys/scripts/ImagenesSincronizadas.lib - -#___________________________________________________________________ -# -# Activa navegador para ver progreso -#___________________________________________________________________ - - coproc /opt/opengnsys/bin/browser -qws http://localhost/cgi-bin/httpd-log.sh -#___________________________________________________________________ -# -# Proceso -#___________________________________________________________________ - - echo "Restauracion de imagen incremental..." | tee -a $OGLOGSESSION $OGLOGFILE - - # Borrado previo de la partición - if [ $BORRARIMG -eq 1 ]; then - if [ -n $RUTAORIGEN ]; then - echo "Borrando carpeta $PARTICION$RUTAORIGEN" | tee -a $OGLOGSESSION $OGLOGFILE - rm -R $PARTICION$RUTAORIGEN - else - echo "Formateando la particion" | tee -a $OGLOGSESSION $OGLOGFILE - ogFormat $DISCO $PARTICION $TIPOPARTICION - RETVAL=$? - if [ $RETVAL -ne 0 ]; then - kill $COPROC_PID - exit $OG_ERR_PARTITION - fi - fi - fi - - # Sincronización desde repositorio - if [ $METCLONA = 1 ]; then - if [ $COPIACACHE = 0 ]; then - echo "Restaurando imagen basica desde repositorio $IPREPOSITORIO" | tee -a $OGLOGSESSION $OGLOGFILE - ORIGEN="$REPOSITORIO/$NOMBREIMG/" - DESTINO=$PARTICION$RUTAORIGEN/ - # Restauración de la imagen básica - echo "Sincronizando imagen basica entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE - restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1 - RETVAL=$? - if [ $RETVAL -ne 0 ]; then - kill $COPROC_PID - exit $OG_ERR_IMAGE - fi - - # Restauración de la imagen incremental - echo "Restaurando imagen incremental desde repositorio $IPREPOSITORIO" | tee -a $OGLOGSESSION $OGLOGFILE - ORIGEN="$REPOSITORIO/$NOMBREIMGINC/" - DESTINO=$PARTICION$RUTAORIGEN/ - OP_DELETE="" - # Restauración de la imagen incremental - echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE - restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1 - restauraListaAcl $ORIGEN $DESTINO $SISTEMAFICHERO $DISCO $NPART - RETVAL=$? - kill $COPROC_PID - echo "!!! Finaliza correctamente !!! la restauracion de imagen incremental $NOMBREIMGINC desde repositorio $IPREPOSITORIO" | tee -a $OGLOGSESSION $OGLOGFILE - exit $RETVAL - fi - fi - - # Restauración desde la caché - echo "Restaurando desde la cache" | tee -a $OGLOGSESSION $OGLOGFILE - - # Comprobar si existe caché - CACHE=$(montaCache) - if [ -z $CACHE ]; then - echo "No se ha podido restaurar la imagen desde la cache" | tee -a $OGLOGSESSION $OGLOGFILE - ogRaiseError $OG_ERR_NOTCACHE "CACHE" - kill $COPROC_PID - exit $? - fi - - # Borrar imagen de la caché - if [ $BORRACACHE -eq 1 ]; then - echo "Borrando imagen basica $NOMBREIMG de la cache" | tee -a $OGLOGSESSION $OGLOGFILE - rm -R $CACHE$OGIMG/$NOMBREIMG - echo "Borrando imagen incremental $NOMBREIMGINC de la cache" | tee -a $OGLOGSESSION $OGLOGFILE - rm -R $CACHE$OGIMG/$NOMBREIMGINC - fi - - # Actualización de la caché - echo "Actualizando cache local desde repositorio $IPREPOSITORIO" | tee -a $OGLOGSESSION $OGLOGFILE - - ORIGEN="$REPOSITORIO/$NOMBREIMG/" - DESTINO="$CACHE$OGIMG/$NOMBREIMG/" - echo "Sincronizando imagen basica entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE - restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1 - RETVAL=$? - if [ $RETVAL -ne 0 ]; then - kill $COPROC_PID - exit $OG_ERR_IMAGE - fi - ORIGEN="$REPOSITORIO/$NOMBREIMGINC/" - DESTINO="$CACHE$OGIMG/$NOMBREIMGINC/" - echo "Sincronizando imagen incremental entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE - restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1 - RETVAL=$? - if [ $RETVAL -ne 0 ]; then - kill $COPROC_PID - exit $OG_ERR_IMAGE - fi - - echo "!!! Finaliza correctamente !!! copia de imagen basica e incremental a cache local" | tee -a $OGLOGSESSION $OGLOGFILE - - # Restauración desde caché a la partición - - echo "Copiando imagen basica a la partición desde cache local" | tee -a $OGLOGSESSION $OGLOGFILE - ORIGEN="$CACHE$OGIMG/$NOMBREIMG/" - DESTINO=$PARTICION$RUTAORIGEN/ - echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE - restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 2 - RETVAL=$? - if [ $RETVAL -ne 0 ]; then - kill $COPROC_PID - exit $OG_ERR_IMAGE - fi - - echo "Copiando imagen incremental a la partición desde cache local" | tee -a $OGLOGSESSION $OGLOGFILE - ORIGEN="$CACHE$OGIMG/$NOMBREIMGINC/" - DESTINO=$PARTICION$RUTAORIGEN/ - OP_DELETE="" - echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE - restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 2 - restauraListaAcl $ORIGEN $DESTINO $SISTEMAFICHERO $DISCO $NPART - RETVAL=$? - if [ $RETVAL -ne 0 ]; then - kill $COPROC_PID - exit $OG_ERR_IMAGE - fi - echo "!!! Finaliza correctamente !!! restauracion imagen incremental $NOMBREIMGINC desde cache local" | tee -a $OGLOGSESSION $OGLOGFILE -#___________________________________________________________________ -# -# Retorno -#___________________________________________________________________ - - kill $COPROC_PID - - exit 0 diff --git a/client/shared/scripts/restoreBaseImage b/client/shared/scripts/restoreBaseImage deleted file mode 100755 index 046c465..0000000 --- a/client/shared/scripts/restoreBaseImage +++ /dev/null @@ -1,175 +0,0 @@ -#!/bin/bash -#/** -# restoreBaseImage -#@brief Script de ejemplo para restaurar una imagen -#@brief Se usa como base para el programa de restauración de imágenes de OpenGnsys Admin). -#@param 1 REPO|CACHE|IPREPO -#@param 2 imagen -#@param 3 disco -#@param 4 particion -#@param 5 protocolo -#@param 6 opciones protocolo -#@return -#@exception OG_ERR_FORMAT # 1 formato incorrecto. -#@exception updateCache # 15 No hay cache -#@exception updateCache # 16 no hay espacio sufiente -#@exception OG_ERR_LOCKED # 4 Partición o fichero bloqueado. -#@exception OG_ERR_NOTFOUND # 2 Fichero o dispositivo no encontrado. -#@exception OG_ERR_FILESYS # 20 Sistema de archivos desconocido o no se puede montar -#@exception OG_ERR_DONTSYNC_IMAGE # 71 Imagen no sincronizable (es monolitica) -#@exception OG_ERR_DONTMOUNT_IMAGE # 70 Error al montar una imagen sincronizada. -#@note se toma como punto de partida el script restoreImage -#@version 1.0 - restauración de imagen con sincronizacion. -#@author -#@date 2012-12-04 -#@version 1.1.1 - Varios repositorios para un mismo cliente (ticket #679). -#@author Irina Gomez - ETSII Universidad de Sevilla -#@date 2018/11/06 -#*/ ## - -trap "onexit $REPO \"$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 "$REPO" "$2" "$IMGEXT" &>/dev/null - [ $exit_status -ne 4 ] && ogUnlock $3 $4 &>/dev/null - exit $exit_status -} - -# Limpiamos los archivo de log -echo -n "" >$OGLOGCOMMAND; -[ "$(ogGetCaller)" == "RestaurarImagenBasica" -o "$(ogGetCaller)" == "restoreDiffImage" ] || echo -n "" > $OGLOGSESSION - -# Mensaje de inicio de script salvo si es llamado desde restoreDiffImage. -[ "$(ogGetCaller)" == "restoreDiffImage" ] || ogEcho log session "[1] $MSG_SCRIPTS_START $0 $*" - -TIME1=$SECONDS -PROG="$(basename $0)" -# Si se solicita, mostrar ayuda. -if [ "$*" == "help" ]; then - ogHelp "$PROG: $MSG_HELP_restoreBaseImage" \ - "$PROG REPO|CACHE imagen ndisco nparticion [ UNICAST|MULTICAST|TORRENT ] [opciones protocolo]" \ - "$PROG REPO Windows7 1 1 " \ - "$PROG CACHE Ubuntu12 1 6 MULTICAST 9000:full-duplex:239.194.14.00:150M:50:60" - exit 0 -fi - -[ $# -lt 4 ] && exit $(ogRaiseError session $OG_ERR_FORMAT "$MSG_FORMAT: $PROG REPO|CACHE imagen ndisco nparticion [ UNICAST|MULTICAST|TORRENT ] [opciones protocolo]"; echo $?) - -# Procesar parámetros de entrada -REPO="${1^^}" -# No permite directorios diferentes para OU -OGUNIT="" - -# Si es una ip y es igual a la del equipo restaura desde cache -[ "$REPO" == "$(ogGetIpAddress)" ] && REPO="CACHE" -# Si es una ip y es distinta a la del recurso samba cambiamos de REPO. -ogCheckIpAddress $REPO -if [ $? == 0 -o $REPO == "REPO" ] ; then - # Si falla el cambio -> salimos con error repositorio no valido - ogChangeRepo $REPO ${OGUNIT%/} || exit $(ogRaiseError $OG_ERR_NOTFOUND '$REPO $OGUNIT'; echo $?) - REPO="REPO" -fi - -# Carga del configurador del engine -[ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg - -# Procesar parámetros de entrada -REPOFILE="$(ogGetPath "REPO" "$2.$IMGEXT")" -[ -n "$REPOFILE" ] || exit $(ogRaiseError session $OG_ERR_NOTFOUND "REPO, $2.$IMGEXT"; echo $?) - -# Comprobar que es sincronizable (con REPO) -ogIsSyncImage REPO "$2" $IMGEXT || exit $(ogRaiseError session $OG_ERR_DONTSYNC_IMAGE "$REPO $2"; echo $?) - -IMGEXT="img" -# Comprobamos si la imagen o la particion estan bloqueada: -ogIsImageLocked "REPO" "$2.$IMGEXT" && exit $(ogRaiseError session $OG_ERR_LOCKED "$REPO $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 "REPO" "$2") -ogWaitSyncImage "REPO" "$2" "$IMGEXT" "mounted" || exit $(ogRaiseError session $OG_ERR_DONTMOUNT_IMAGE "$REPO $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 - 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 $?) -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" - - -PROTO=${5:-"UNICAST"} -if [ "$REPO" == "CACHE" -o "$REPO" == "cache" ]; then - # Las imagenes sincronizables aunque sean iguales no tienen el mismo sum. - # Sincronizamos si existe el fichero y si no usamos updateCache. - ogEcho log session "[10] $MSG_SCRIPTS_TASK_START updateCache REPO $2.$IMGEXT $PROTO $6" - ogEcho log session " updateCache REPO" "/$2.$IMGEXT" "$PROTO" "$6" - updateCache REPO "/$2.$IMGEXT" "$PROTO" "$6" - RETVAL=$? - if [ "$RETVAL" != "0" ] - then - ogEcho log session "[39] $MSG_SCRIPTS_TASK_END updateCache REPO $2.$IMGEXT $5 $6 con error $RETVAL" - # RC=15 No hay cache - # RC=16 no hay espacio sufiente - exit $RETVAL - fi - 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 "$REPO" "$2" >/dev/null - ogWaitSyncImage "$REPO" "$2" "$IMGEXT" "mounted" || exit $(ogRaiseError session $OG_ERR_DONTMOUNT_IMAGE "$REPO $2 $IMGEXT: time_out."; echo $?) -fi - -TIME2=$SECONDS - -# Restaurar la imagen. -ogEcho log session "[40] $MSG_HELP_ogRestoreImage: $REPO $2 $3 $4" - -ogLock $3 $4 - -# Sincronizamos la partición con la imagen. -ogEcho log session "[60] $MSG_HELP_ogSyncRestore: $REPO $2 $IMGEXT $3 $4" -ogSyncRestore "$REPO" "$2" "$IMGEXT" $3 $4 -RETVAL=$? -[ $RETVAL == 0 ] || ogEcho session warning "$MSG_ERR_SYNCHRONIZING" - -TIMEAUX2=$[SECONDS-TIME2] -ogEcho log session " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL : $[TIMEAUX2/60]m $[TIMEAUX2%60]s" - -# Desmontamos imagen basica. -ogUnmountImage "$REPO" "$2" "$IMGEXT" - -# Restableciendo acl -ogUnlock $3 $4 -ogEcho log session "[70] $MSG_HELP_ogRestoreInfoImage" -ogExecAndLog command ogRestoreInfoImage $3 $4 - -# Llamar al script de post-configuración del sistema operativo. -# Si a este script lo ha llamado el script restoreDiffImage no post-configuramos -if [ "$(ogGetCaller)" != "restoreDiffImage" ];then - ogExecAndLog command ogRestoreAclImage $3 $4 - if which configureOsCustom &>/dev/null; then - ogEcho log session "[90] configureOsCustom" - configureOsCustom "$3" "$4" "$REPO" "$2" - else - ogEcho log session "[90] $MSG_HELP_configureOs" - configureOs $3 $4 - fi -fi -TIMEAUX3=$[SECONDS-TIMEAUX2] -ogEcho log session " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL : $[TIMEAUX3/60]m $[TIMEAUX3%60]s" - -TIME=$[SECONDS-TIME1] -ogEcho log session "[100] $MSG_SCRIPTS_END $MSG_SCRIPTS_TIME_TOTAL: $[TIME/60]m $[TIME%60]s" - -# Si ha habido problema al sincronizar nos salimos con error -[ $RETVAL == 0 ] || exit $OG_ERR_SYNCHRONIZING diff --git a/client/shared/scripts/restoreDiffImage b/client/shared/scripts/restoreDiffImage deleted file mode 100755 index 4de5f31..0000000 --- a/client/shared/scripts/restoreDiffImage +++ /dev/null @@ -1,159 +0,0 @@ -#!/bin/bash -#/** -# restoreDiffImage -#@brief Script de ejemplo para restaurar una imagen diferencial. -#@brief Se usa como base para el programa de restauración de imágenes de OpenGnsys Admin). -#@param 1 REPO|CACHE -#@param 2 imagen basica -#@param 3 imagen diferencial -#@param 4 disco -#@param 5 particion -#@param 6 protocolo -#@param 7 opciones protocolo -#@return -#@exception OG_ERR_FORMAT # 1 formato incorrecto. -#@exception OG_ERR_NOTFOUND # 2 Fichero o dispositivo no encontrado -#@exception OG_ERR_PARTITION# 3 Error en partición de disco. -#@exception OG_ERR_LOCKED # 4 Partición o fichero bloqueado. -#@exception updateCache # 15 No hay cache -#@exception updateCache # 16 no hay espacio sufiente -#@exception OG_ERR_DONTSYNC_IMAGE # 71 Imagen no sincronizable (es monolitica) -#@exception OG_ERR_DONTMOUNT_IMAGE # 70 Error al montar una imagen sincronizada. -#@todo: Se puede dar la opcion de que mantenga los ficheros nuevos. -#@todo: Se puede dar la opcion que la trasferencia se manden los datos comprimidos. -#@version 1.0 - restauración de imagen con sincronizacion. -#@author -#@date 2012-12-04 -#@version 1.1.1 - Varios repositorios para un mismo cliente (ticket #679). -#@author Irina Gomez - ETSII Universidad de Sevilla -#@date 2018/11/06 -#*/ ## - -trap "onexit $REPO \"$2\" \"$3\" $4 $5" 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 "$REPO" "$3" "$DIFFTYPE" &>/dev/null - [ $exit_status -ne 4 ] && ogUnlock $4 $5 &>/dev/null - exit $exit_status -} - - -# Limpiamos los archivo de log -echo -n ""> $OGLOGSESSION -echo "" >$OGLOGCOMMAND - -TIME1=$SECONDS -PROG="$(basename $0)" -# Si se solicita, mostrar ayuda. -if [ "$*" == "help" ]; then - ogHelp "$PROG: $MSG_HELP_restoreDiffImage" \ - "$PROG REPO|CACHE base_image diff_image ndisco nparticion [ UNICAST|MULTICAST|TORRENT ] [opciones protocolo]" \ - "$PROG REPO Windows7 Windows7_pc123 1 1 " \ - "$PROG CACHE Ubuntu12 Ubuntu12_aula21 1 6 MULTICAST 9000:full-duplex:239.194.14.00:150M:50:60" - exit 0 -fi - -[ $# -lt 5 ] && exit $(ogRaiseError session $OG_ERR_FORMAT "$MSG_FORMAT: $PROG REPO|CACHE base_image diff_imagen ndisco nparticion [ UNICAST|MULTICAST|TORRENT ] [opciones protocolo]"; echo $?) - -ogEcho log session "[1] $MSG_SCRIPTS_START $0 $*" - -# Procesar parámetros de entrada -DIFFTYPE="diff" -DIFFEXT="img.diff" -REPO="${1^^}" -# No permite directorios diferentes para OU -OGUNIT="" - -# Si es una ip y es igual a la del equipo restaura desde cache -[ "$REPO" == "$(ogGetIpAddress)" ] && REPO="CACHE" -# Si es una ip y es distinta a la del recurso samba cambiamos de REPO. -ogCheckIpAddress $REPO -if [ $? == 0 -o $REPO == "REPO" ] ; then - # Si falla el cambio -> salimos con error repositorio no valido - ogChangeRepo $REPO ${OGUNIT%/} || exit $(ogRaiseError $OG_ERR_NOTFOUND '$REPO $OGUNIT'; echo $?) - REPO="REPO" -fi - -REPODIFFFILE="$(ogGetPath "REPO" "$3.$DIFFEXT")" -[ -n "$REPODIFFFILE" ] || exit $(ogRaiseError session $OG_ERR_NOTFOUND "REPO $3.$DIFFEXT";echo $?) - -# Comprobamos si la imagen o la particion estan bloqueada: -ogIsImageLocked "$REPO" "$3.$DIFFEXT" && exit $(ogRaiseError session $OG_ERR_LOCKED "$REPO $3.$DIFFEXT";echo $?) -ogIsLocked "$4" "$5" && exit $(ogRaiseError session $OG_ERR_LOCKED "$4 $5";echo $?) - -PART=$(ogDiskToDev "$4" "$5" 2>/dev/null ) || exit $(ogRaiseError session $OG_ERR_PARTITION "$REPO $3";echo $?) - -# Carga del configurador del engine -[ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg - -# Comprobar que es sincronizable -ogIsSyncImage REPO "$3" diff || exit $(ogRaiseError session $OG_ERR_DONTSYNC_IMAGE "$REPO $3";echo $?) - -# Restauramos la imagen Basica. -restoreBaseImage $REPO "$2" "$4" "$5" "$6" "$7" - -PROTO=${6:-"UNICAST"} - -if [ "$REPO" == "CACHE" -o "$REPO" == "cache" ]; then - ogEcho log session "[10] $MSG_HELP_updateCache." - ogEcho log session " updateCache REPO" "/$3.$DIFFEXT" "$PROTO" "$7" - updateCache REPO "/$3.$DIFFEXT" "$PROTO" "$7" - RETVAL=$? - if [ "$RETVAL" != "0" ] - then - ogEcho log session "[39] $MSG_SCRIPTS_TASK_END updateCache REPO $3.$DIFFEXT $6 $7 con error $RETVAL" - # RC=15 No hay cache - # RC=16 no hay espacio sufiente - exit $RETVAL - fi - - TIMEAUX1=$[SECONDS-TIME] - ogEcho log session " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL : $[TIMEAUX1/60]m $[TIMEAUX1%60]s" -fi -TIME2=$SECONDS - -# Restaurar la imagen. -ogEcho log session "[40] $MSG_RESTORE $PART" - -# Montamos la diferencial -ogMountImage "$REPO" "$3" "$DIFFTYPE" &>/dev/null -# Comprobar que la imagen diferencial se ha montado -ogWaitSyncImage "$REPO" "$3" "$DIFFTYPE" "mounted" || exit $(ogRaiseError session $OG_ERR_DONTMOUNT_IMAGE "$REPO $3 $DIFFTYPE: time_out $TIMEAUX seg.";echo $?) - -ogMount $4 $5 >/dev/null -ogLock $4 $5 -# Sincronizamos la partición con la imagen. -ogEcho log session "[60] $MSG_HELP_ogSyncRestore: $REPO $3 $DIFFTYPE $4 $5" -ogSyncRestore "$REPO" "$3" "$DIFFTYPE" $4 $5 -RETVAL=$? -[ $RETVAL == 0 ] || ogEcho session warning "$MSG_ERR_SYNCHRONIZING" - -# Desmontamos la imagen -ogUnmountImage "$REPO" "$3" "$DIFFTYPE" -ogUnlock $4 $5 - -TIMEAUX2=$[SECONDS-TIME2] -ogEcho log session " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL : $[TIMEAUX2/60]m $[TIMEAUX2%60]s" - -# creando enlaces y restableciendo ACL (en windows) -ogEcho log session "[70] $MSG_HELP_ogRestoreInfoImage" -ogExecAndLog command ogRestoreInfoImage "$4" "$5" -ogExecAndLog command ogRestoreAclImage "$4" "$5" -TIMEAUX3=$[SECONDS-TIMEAUX2] -ogEcho log session " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL : $[TIMEAUX3/60]m $[TIMEAUX3%60]s" - -# Llamar al script de post-configuración del sistema operativo. -if which configureOsCustom &>/dev/null; then - ogEcho log session "[90] configureOsCustom" - configureOsCustom "$4" "$5" "$REPO" "$2" -else - ogEcho log session "[90] $MSG_HELP_configureOs." - configureOs $4 $5 -fi -TIME=$[SECONDS-TIME1] -ogEcho log session "[100] $MSG_SCRIPTS_END $MSG_SCRIPTS_TIME_TOTAL: $[TIME/60]m $[TIME%60]s" - -# Si ha habido problema al sincronizar nos salimos con error -[ $RETVAL == 0 ] || exit $OG_ERR_SYNCHRONIZING diff --git a/sources/interface/CrearImagenBasica b/sources/interface/CrearImagenBasica deleted file mode 100755 index 8aaf5aa..0000000 --- a/sources/interface/CrearImagenBasica +++ /dev/null @@ -1,98 +0,0 @@ -#!/bin/bash -#___________________________________________________________________ -# -# CREAR IMAGEN BÁSICA -#___________________________________________________________________ -# -# Parámetros recibidos desde el cliente: -# -# $1 Número de disco -# $2 Número de particion -# $3 Nombre canónico de la imagen básica (sin extensión) -# $4 Dirección del repositorio -# $5 Es una cadena "nnn" tipo flags que codifica varios parametros. -# Tiene el formato "nnn" donde "n" vale 0 ó 1. -# 1XX: Gestionar fichero completo en lugar de diferencas -# X1X: Eliminar archivos de la imagen que no estén en la partición -# XX1: Comprimir archivos para enviarlos por la red -# El valor X indica que no importa el valor que tenga el dato -# $6 Es una cadena "nnnn" tipo flags que codifica varios parametros. -# Tiene el formato "nnnn" donde "n" vale 0 ó 1. -# 1XXX: Borrar la imagen del repositorio antes de crearla -# X1XX: Copiar Imagen básica también a la cache -# XX1X: Borrar previamente la imagen de la cache antes de copiarla -# XXX1: No borrar archivos en destino -# El valor X indica que no importa el valor que tenga el dato -# $7 Método de syncronización 1=Sincronización1 2=Sincronizacion2 -# $8 Ruta de origen de la Imagen (Carpeta) - -#___________________________________________________________________ -# -# Control parámetros -#___________________________________________________________________ - - - PROG="$(basename $0)" - if [ $# -lt 7 ]; then - usage=" ndisco nparticion nombre_imagen_basica ip_repositorio" - usage="$usage copiar_a_caché Borrar_cache_previamente Ruta_origen" - ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG $usage" - exit $? - fi - - #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 seguimiento para httpdlog - echo -n "" > $OGLOGSESSION; echo -n "" > $OGLOGCOMMAND - - # 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 - flag=$5 - WHOLE=${flag:0:1} - DELFILE=${flag:1:1} - COMPRESS=${flag:2:1} - - # Nota los valores se pasan como variables de entorno, - # la idea es que mas adelante vayan en el fichero PXE. - [ $WHOLE -eq 1 ] && export ogrsyncw=true || export ogrsyncw=false - [ $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" - - 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" - - - - exit $RETVAL - diff --git a/sources/interface/CrearSoftIncremental b/sources/interface/CrearSoftIncremental deleted file mode 100755 index fc29451..0000000 --- a/sources/interface/CrearSoftIncremental +++ /dev/null @@ -1,98 +0,0 @@ -#!/bin/bash -#___________________________________________________________________ -# -# CREAR IMAGEN INCREMENTAL -#___________________________________________________________________ -# -# Parámetros recibidos desde el cliente: -# -# $1 Número de disco -# $2 Número de particion -# $3 Nombre canónico de la imagen básica (sin extensión) -# $4 Dirección del repositorio -# $5 Nombre canónico de la imagen incremental (sin extensión) -# $6 Es una cadena "nnn" tipo flags que codifica varios parametros. -# Tiene el formato "nnn" donde "n" vale 0 ó 1. -# 1XX: Gestionar fichero completo en lugar de diferencas -# X1X: Eliminar archivos de la imagen que no estén en la partición -# XX1: Comprimir archivos para enviarlos por la red -# El valor X indica que no importa el valor que tenga el dato -# $7 Es una cadena "nnnn" tipo flags que codifica varios parametros. -# Tiene el formato "nnnn" donde "n" vale 0 ó 1. -# 1XXX: Borrar la imagen incremental del repositorio antes de crearla -# X1XX: Copiar imagen incremental también a la cache -# XX1X: Borrar previamente la imagen incremental de la cache antes de copiarla -# XXX1: No borrar archivos en destino -# El valor X indica que no importa el valor que tenga el dato -# $8 Método de syncronización 1=Sincronización1 2=Sincronizacion2 -# $9 Ruta de origen de la Imagen (Carpeta) - -#___________________________________________________________________ -# -# Control parámetros -#___________________________________________________________________ - PROG="$(basename $0)" - if [ $# -lt 8 ]; then - usage=" ndisco nparticion nombre_imagen_basica ip_repositorio nombre_imagen_incremental" - usage="$usage copiar_a_caché Borrar_cache_previamente Ruta_origen" - ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG $usage" - exit $? - fi - - #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 seguimiento para httpdlog - echo -n "" > $OGLOGSESSION; echo -n "" > $OGLOGCOMMAND - - # 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 "$@" - RETVAL=$? - fi - - - if [ $8 -eq 2 ]; then - #sincronizacion 2 - flag=$6 - WHOLE=${flag:0:1} - DELFILE=${flag:1:1} - COMPRESS=${flag:2:1} - - # Nota los valores se pasan como variables de entorno, - # la idea es que mas adelante vayan en el fichero PXE. - [ $WHOLE -eq 1 ] && export ogrsyncw=true || export ogrsyncw=false - [ $DELFILE -eq 1 ] && export ogrsyncdel=true || export ogrsyncdel=false - [ $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 - 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" - - exit $RETVAL diff --git a/sources/interface/RestaurarImagenBasica b/sources/interface/RestaurarImagenBasica deleted file mode 100755 index c87b318..0000000 --- a/sources/interface/RestaurarImagenBasica +++ /dev/null @@ -1,89 +0,0 @@ -#!/bin/bash -#___________________________________________________________________ -# -# RESTAURAR IMAGEN BÁSICA -#___________________________________________________________________ -# -# Parámetros recibidos desde el cliente: -# -# $1 Número de disco -# $2 Número de particion -# $3 Nombre canónico de la imagen básica (sin extensión) -# $4 Dirección del repositorio -# $5 Tipo de transmisión 0=Unicast 1=Multicast -# $6 Es una cadena "nnn" tipo flags que codifica varios parametros. -# Tiene el formato "nnn" donde "n" vale 0 ó 1. -# 1XX: Gestionar fichero completo en lugar de diferencas -# X1X: Eliminar archivos de la partición que no estén en la imagen -# XX1: Comprimir archivos para enviarlos por la red -# El valor X indica que no importa el valor que tenga el dato -# $7 Es una cadena "nnnn" tipo flags que codifica varios parametros. -# Tiene el formato "nnnn" donde "n" vale 0 ó 1. -# 1XXX: Borrar la particion de destino antes de restaurar la imagen basica -# X1XX: Copiar Imagen básica también a la cache -# XX1X: Borrar previamente la imagen basica de la cache antes de copiarla -# XXX1: No borrar archivos en destino -# El valor X indica que no importa el valor que tenga el dato -# $8 Método de clonación 0=Desde caché 1=Desde repositorio -# $9 Metodo de sincronizacion 1=Sincronización1 2=Sincronizacion2 -# $10 Ruta de origen de la Imagen (Carpeta) - -#___________________________________________________________________ -# -# Control parámetros -#___________________________________________________________________ - - PROG="$(basename $0)" - if [ $# -lt 9 ]; then - usage=" ndisco nparticion nombre_imagen_basica ip_repositorio copiar_a_caché " - usage="$usage Borrar_cache_previamente metodo_clonación Ruta_origen" - ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG $usage" - exit $? - fi - - #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 seguimiento para httpdlog - echo -n "" > $OGLOGSESSION; echo " " > $OGLOGCOMMAND - - # Registro de inicio de ejecución - ogEcho log session "$MSG_INTERFACE_START $0 $*" - - if [ $9 -eq 1 ]; then - #sincronizacion1 - ogRestaurarImagenBasica "$@" - RETVAL=$? - fi - - if [ $9 -eq 2 ]; then - #sincronizacion2 - # Opciones de clonacion - flag=$6 - WHOLE=${flag:0:1} - DELFILE=${flag:1:1} - COMPRESS=${flag:2:1} - - # Nota los valores se pasan como variables de entorno, - # la idea es que mas adelante vayan en el fichero PXE. - [ $WHOLE -eq 1 ] && export ogrsyncw=true || export ogrsyncw=false - [ $DELFILE -eq 1 ] && export ogrsyncdel=true || export ogrsyncdel=false - [ $COMPRESS -eq 1 ] && export ogrsyncz=true || export ogrsyncz=false - - # Origen de la imagen. - [ $8 -eq 0 ] && DEST="CACHE" || DEST="REPO" - - # Protocolo de clonacion y opciones - PROTO=${5%_*} - OPT=${5#*_} - - restoreBaseImage $DEST "$3" $1 $2 $PROTO $OPT - RETVAL=$? - fi - - # Registro de fin de ejecución - ogEcho log session "$MSG_INTERFACE_END $RETVAL" - - exit $RETVAL diff --git a/sources/interface/RestaurarSoftIncremental b/sources/interface/RestaurarSoftIncremental deleted file mode 100755 index ee895d9..0000000 --- a/sources/interface/RestaurarSoftIncremental +++ /dev/null @@ -1,82 +0,0 @@ -#!/bin/bash -#___________________________________________________________________ -# -# RESTAURAR IMAGEN INCREMENTAL -#___________________________________________________________________ -# -# Parámetros recibidos desde el cliente: -# -# $1 Número de disco -# $2 Número de particion -# $3 Nombre canónico de la imagen básica (sin extensión) -# $4 Dirección del repositorio -# $5 Nombre canónico del software incremental (sin extensión) -# $6 Tipo de transmisión 0=Unicast 1=Multicast -# $7 Es una cadena "nnn" tipo flags que codifica varios parametros. -# Tiene el formato "nnn" donde "n" vale 0 ó 1. -# 1XX: Gestionar fichero completo en lugar de diferencas -# X1X: Eliminar archivos de la partición que no estén en la imagen -# XX1: Comprimir archivos para enviarlos por la red -# El valor X indica que no importa el valor que tenga el dato -# $8 Es una cadena "nnnn" tipo flags que codifica varios parametros. -# Tiene el formato "nnnn" donde "n" vale 0 ó 1. -# 1XXX: Borrar la particion de destino antes de restaurar la imagen basica -# X1XX: Copiar Imagen básica también a la cache -# XX1X: Borrar previamente la imagen basica de la cache antes de copiarla -# XXX1: No borrar archivos en destino -# El valor X indica que no importa el valor que tenga el dato -# $9 Método de clonación 0=Desde caché 1=Desde repositorio -# $10 Metodo de sincronizacion 1=Sincronización1 2=Sincronizacion2 -# $11 Ruta de origen de la Imagen (Carpeta) - -#___________________________________________________________________ -# -# Control parámetros -#___________________________________________________________________ - #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 seguimiento para httpdlog - echo " " > $OGLOGSESSION; echo " " > $OGLOGCOMMAND - - # Registro de inicio de ejecución - ogEcho log session "$MSG_INTERFACE_START $0 $*" - - - if [ ${10} -eq 1 ]; then - #sincronizacion1 - ogRestaurarSoftIncremental "$@" - RETVAL=$? - fi - - if [ ${10} -eq 2 ]; then - #sincronizacion2 - # Opciones de clonacion - flag=$7 - WHOLE=${flag:0:1} - DELFILE=${flag:1:1} - COMPRESS=${flag:2:1} - - # Nota los valores se pasan como variables de entorno, - # la idea es que mas adelante vayan en el fichero PXE. - [ $WHOLE -eq 1 ] && export ogrsyncw=true || export ogrsyncw=false - [ $DELFILE -eq 1 ] && export ogrsyncdel=true || export ogrsyncdel=false - [ $COMPRESS -eq 1 ] && export ogrsyncz=true || export ogrsyncz=false - - # Origen de la imagen. - [ $9 -eq 0 ] && DEST="CACHE" || DEST="REPO" - - # Protocolo de clonacion y opciones - PROTO=${6%_*} - OPT=${6#*_} - - restoreDiffImage $DEST "$3" "$5" $1 $2 $PROTO $OPT - RETVAL=$? - fi - - # Registro de fin de ejecución - ogEcho log session "$MSG_INTERFACE_END $RETVAL" - - exit $RETVAL