diff options
author | irina <irinagomez@us.es> | 2013-10-29 09:21:00 +0000 |
---|---|---|
committer | irina <irinagomez@us.es> | 2013-10-29 09:21:00 +0000 |
commit | 6c2dee2180e6d2871c2eb53fde09168dfe28b7fc (patch) | |
tree | 87a7ef8e5ec03b64710c6c4254532bdbd52b3113 | |
parent | 904be966bf499c72421cda2c29f7fddd66bb874c (diff) |
#565 mejora: al crear las imagenes diferenciales, backup de acl solo de los ficheros modificados
git-svn-id: https://opengnsys.es/svn/branches/version1.0@4068 a21b9725-9963-47de-94b9-378ad31fedc9
-rwxr-xr-x | client/engine/Rsync.lib | 35 | ||||
-rw-r--r-- | client/shared/etc/lang.ca_ES.conf | 1 | ||||
-rw-r--r-- | client/shared/etc/lang.en_GB.conf | 1 | ||||
-rw-r--r-- | client/shared/etc/lang.es_ES.conf | 1 | ||||
-rwxr-xr-x | client/shared/scripts/createDiffImage | 22 |
5 files changed, 51 insertions, 9 deletions
diff --git a/client/engine/Rsync.lib b/client/engine/Rsync.lib index 25a96d36..939361d7 100755 --- a/client/engine/Rsync.lib +++ b/client/engine/Rsync.lib @@ -213,6 +213,41 @@ fi } + +#/** +# ogAclFilter +#@brief Del fichero de acl de la partición extraemos las acl de los ficheros de la diferencial +#@param No. +#@return (nada) +#*/ +function ogAclFilter () { +local IMGACL IMGINFO FILES ACLTMP + +IMGACL="/tmp/ogimg.acl" +IMGINFO="/tmp/ogimg.info" +FILES="/tmp/files$$" +ACLTMP="/tmp/acl$$.tmp" + +# comprobamos que existan los archivos de origen. Si no salimos sin error. +[ -f $IMGACL -a -f $IMGINFO ] || ogRaiseError $OG_ERR_NOTFOUND "$IMGACL, $IMGINFO" || return 0 + +echo "" > $ACLTMP + +# Al fichero le quitamos las líneas sobrantes: comentarios y lineas vacias. +sed -e s/"^#.*$"//g $IMGINFO > $FILES +sed -i '/^$/d' $FILES + +# Recorremos el listado y extraemos la acl correspondiente al fichero o directorio. +while read LINE; do + read END INI <<< "$(grep -n -e "File" -e "Directory" $IMGACL| grep -A 1 "$LINE"| awk -F : '!(NR%2){print $1" "p}{p=$1}' )" + let NUM=$END-$INI-1 + sed -n -e $INI,+"$NUM"p $IMGACL &>> $ACLTMP +done < $FILES + +cp $ACLTMP $IMGACL + +} + #/** # ogRestoreInfoImage #@brief Crear o modificar enlaces y restaurar las ACL. La informacion esta ya copiada a la particion. diff --git a/client/shared/etc/lang.ca_ES.conf b/client/shared/etc/lang.ca_ES.conf index 25785768..1bcca2f2 100644 --- a/client/shared/etc/lang.ca_ES.conf +++ b/client/shared/etc/lang.ca_ES.conf @@ -78,6 +78,7 @@ MSG_POWEROFF="Apagar el equipo" MSG_SPEED="Velocidad" # Mensajes de descripción breve de las funciones de la API. +MSG_HELP_ogAclFilter="Extrae las acl de los ficheros de la diferencial" MSG_HELP_ogAddCmd="Añade comandos al fichero creado por la función ogInstalMiniSetup." MSG_HELP_ogAddRegistryKey="Añade una nueva clave al registro de Windows." MSG_HELP_ogAddRegistryValue="Añade un nuevo valor al registro de Windows." diff --git a/client/shared/etc/lang.en_GB.conf b/client/shared/etc/lang.en_GB.conf index fd22c018..bec0e453 100644 --- a/client/shared/etc/lang.en_GB.conf +++ b/client/shared/etc/lang.en_GB.conf @@ -78,6 +78,7 @@ MSG_POWEROFF="Shutdown computer" MSG_SPEED="Speed" # API functions menssages. +MSG_HELP_ogAclFilter="Extrae las acl de los ficheros de la diferencial" MSG_HELP_ogAddCmd="Add commands to file created by ogInstalMiniSetup function." MSG_HELP_ogAddRegistryKey="Add a new Windows registry key." MSG_HELP_ogAddRegistryValue="Add a new Windows registry value." diff --git a/client/shared/etc/lang.es_ES.conf b/client/shared/etc/lang.es_ES.conf index fe100b22..78cde2c8 100644 --- a/client/shared/etc/lang.es_ES.conf +++ b/client/shared/etc/lang.es_ES.conf @@ -78,6 +78,7 @@ MSG_POWEROFF="Apagar el equipo" MSG_SPEED="Velocidad" # Mensajes de descripción breve de las funciones de la API. +MSG_HELP_ogAclFilter="Extrae las acl de los ficheros de la diferencial" MSG_HELP_ogAddCmd="Añade comandos al fichero creado por la función ogInstalMiniSetup." MSG_HELP_ogAddRegistryKey="Añade una nueva clave al registro de Windows." MSG_HELP_ogAddRegistryValue="Añade un nuevo valor al registro de Windows." diff --git a/client/shared/scripts/createDiffImage b/client/shared/scripts/createDiffImage index 0e5aff07..c2905ab3 100755 --- a/client/shared/scripts/createDiffImage +++ b/client/shared/scripts/createDiffImage @@ -153,6 +153,14 @@ echo "[50] $MSG_HELP_ogCreateInfoImage " | tee -a $OGLOGSESSION $OGLOGFILE ogCreateInfoImage $1 $2 $3 "$4" "${DIFFTYPE}" TIMEAUX3=$[SECONDS-TIME2] echo " $MSG_SCRIPTS_TASK_END $MSG_SCRIPTS_TIME_PARTIAL: $[TIMEAUX3/60]m $[TIMEAUX3%60]s" | tee -a $OGLOGSESSION $OGLOGFILE + +# Del fichero de acl de la partición extraemos las acl de los ficheros de la diferencial +echo "[60] $MSG_HELP_ogAclFilter " | tee -a $OGLOGSESSION $OGLOGFILE +ogAclFilter +TIMEAUX5=$[SECONDS-TIMEAUX3] +echo " $MSG_SCRIPTS_TASK_END $MSG_SCRIPTS_TIME_PARTIAL: $[TIMEAUX5/60]m $[TIMEAUX5%60]s" | tee -a $OGLOGSESSION $OGLOGFILE + + #Calculamos el tamaño de la imagen: ogMount $1 $2 >/dev/null ogLock $1 $2 @@ -163,21 +171,18 @@ SIZEDATA=$(cat /tmp/ogimg.info | tr '\n' '\0'| du -c --files0-from=- 2>/dev/null let SIZEREQUIRED=$SIZEDATA*$COMPRESS # Tamaño minimo fichero imagen 300000 [ $SIZEREQUIRED -lt 300000 ] && SIZEREQUIRED=300000 -TIMEAUX4=$[SECONDS-TIMEAUX3] # Comprueba que quepa en el repositorio [ "$3" == "CACHE" -o "$3" == "cache" ] && SIZEFREE=$(ogGetFreeSize `ogFindCache`) && ogMountCache >/dev/null [ "$3" == "REPO" -o "$3" == "repo" ] && SIZEFREE=$(df -k | grep $OGIMG | awk '{print $4}') echo " $SIZEREQUIRED $SIZEFREE" | tee -a $OGLOGSESSION $OGLOGFILE - [ $SIZEREQUIRED -gt $SIZEFREE ] && ogRaiseError $OG_ERR_CACHESIZE "$3" -echo " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL: $[TIMEAUX4/60]m $[TIMEAUX4%60]s" | tee -a $OGLOGSESSION $OGLOGFILE # Configuro la informacion del tamaño de los datos en /tmp/ogimg.info sed -i s/SIZEDATA/"$SIZEDATA"/g /tmp/ogimg.info # Creamos o redimensionamos la imagen -echo "[60] $MSG_HELP_ogCreateFileImage." | tee -a $OGLOGSESSION $OGLOGFILE +echo "[70] $MSG_HELP_ogCreateFileImage." | tee -a $OGLOGSESSION $OGLOGFILE ogCreateFileImage $3 "$5" $DIFFTYPE $SIZEREQUIRED # Esperamos que se monte la imagen despues de crarla en el servidor @@ -189,10 +194,9 @@ echo "[80] $MSG_HELP_ogSyncCreate" | tee -a $OGLOGSESSION $OGLOGFILE # Copio los datos a la imagen diferecial : ogSyncCreate $1 $2 $3 "$5" $DIFFTYPE -# DA ERROR -> ERROR: unable to resize 'imagen' - File too large -# Reducimos la imagen diferencial -#echo "[90] $MSG_HELP_ogReduceImage: $3 /$4.$IMGEXT" | tee -a $OGLOGSESSION $OGLOGFILE -#ogReduceImage $3 "$5" $DIFFTYPE +# Reducimos la imagen diferencial -> solo para kernel <= 3.7, imagenes con FS ext4 +echo "[90] $MSG_HELP_ogReduceImage: $3 /$4.$IMGEXT" | tee -a $OGLOGSESSION $OGLOGFILE +ogReduceImage $3 "$5" $DIFFTYPE # Desmontamos las imagenes ogUnmountImage $3 "$5" $DIFFTYPE @@ -217,4 +221,4 @@ ogIsSyncImage $3 "$5" diff || ogRaiseError $OG_ERR_IMAGE "$3 $5" IMGSIZE=$(ls -l --block-size=1024 ${DIFFFILE}| cut -f5 -d" ") TIME=$[SECONDS-TIME1] echo "[100] $MSG_SCRIPTS_TIME_TOTAL $[TIME/60]m $[TIME%60]s" | tee -a $OGLOGSESSION $OGLOGFILE -echo " FileSystem $PART with $SIZEDATA KB data created onto file-image as $4 and used $IMGSIZE KB acros DFS rsync " | tee -a $OGLOGSESSION $OGLOGFILE +echo " FileSystem $PART with $SIZEDATA KB data created onto file-image as $5 and used $IMGSIZE KB acros DFS rsync " | tee -a $OGLOGSESSION $OGLOGFILE |