diff options
author | irina <irinagomez@us.es> | 2013-10-11 12:40:20 +0000 |
---|---|---|
committer | irina <irinagomez@us.es> | 2013-10-11 12:40:20 +0000 |
commit | f456755884247a72cf1af575a6e15c8c3fc92442 (patch) | |
tree | 0033af7e543e38c3022f704510858de03d086cab /client/shared/scripts/updateCache | |
parent | be48687d995f88aeb4bb482e96e2c870bd82f568 (diff) |
#565 adaptacion diferenciales al cliente 1.0.4., extension diferenciles img.diff
git-svn-id: https://opengnsys.es/svn/branches/version1.0@4059 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'client/shared/scripts/updateCache')
-rwxr-xr-x | client/shared/scripts/updateCache | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/client/shared/scripts/updateCache b/client/shared/scripts/updateCache index 3c59d19e..94ab4dda 100755 --- a/client/shared/scripts/updateCache +++ b/client/shared/scripts/updateCache @@ -55,16 +55,18 @@ REPOFILE=$(ogGetPath "REPO" "/$2") || ogRaiseError $OG_ERR_NOTFOUND "REPO /$2" echo "$MSG_SCRIPTS_UPDATECACHE_DOUPDATE " # Distingo si es monolitica o sincronizable -file $REPOFILE | grep " BTRFS Filesystem" 2>&1 > /dev/null +file $REPOFILE | grep -i -e " BTRFS Filesystem " -e " ext4 filesystem " 2>&1 > /dev/null if [ $? == 0 ]; then - IMGTYPE="RSYNC" - # Para imagen sincronizada, si hay imagen en cache uso rsync, si no otro protocolo + IMGSYNC=TRUE + # Para imagen sincronizada, si hay imagen en cache siempre protocolo = rsync. CACHEFILE=$(ogGetPath "CACHE" "/$2") && PROTOCOLO="RSYNC" # Si es imagen sincronizada siempre da distinto md5. No podemos comprobar -> actualizamos. RETVAL=0 else - IMGTYPE="MONOLITICA" + # Si la imagen es monolitica y ha elegido protocolo = RSYNC salimos con error. + [ $PROTOCOLO == "RSYNC" ] && exit $(ogRaiseError $OG_ERR_DONTSYNC_IMAGE "REPO $2"; exit 1) + IMGSYNC=FALSE #TODO: ogUpdateCacheIsNecesary debe borrar la imagen que tenga igual nombre pero distinto sum- ogUpdateCacheIsNecesary $1 $2 RETVAL=$? @@ -81,12 +83,15 @@ REALFILESIZE=$(ls -l --block-size=1024 $(ogGetPath $REPOSITORIO "$2") | cut -f5 # La sincronizada, si existe la imagen en cache el espacio necesario # es la nueva menos lo que ocupa la que ya hay. if [ "$PROTOCOLO" == "RSYNC" ]; then - CACHEFILESIZE=$(ls -l --block-size=1024 $(ogGetPath "CACHE" "$2") | cut -f5 -d" ") - let SIZEREQUIRED=$CACHEFILESIZE-$FILESIZE + if [ "$CACHEFILE" == "" ]; then + CACHEFILESIZE=0 + else + CACHEFILESIZE=$(ls -l --block-size=1024 "$CACHEFILE" | cut -f5 -d" ") + fi + let SIZEREQUIRED=$REALFILESIZE-$CACHEFILESIZE [ $SIZEREQUIRED -lt 0 ] && SIZEREQUIRED=0 else SIZEREQUIRED=$FILESIZE - fi echo "$MSG_SCRIPTS_UPDATECACHE_CHECKSIZECACHE" @@ -128,7 +133,7 @@ then fi # Comprobamos que imagen cache igual a la del repo. Si sincronizada no podemos comprobar. -[ "$IMGTYPE" == "RSYNC" ] || ogUpdateCacheIsNecesary $REPOSITORIO "$2" +[ "$IMGSYNC" == "TRUE" ] || ogUpdateCacheIsNecesary $REPOSITORIO "$2" RETVAL=$? # si RETVAL=0 => actualizamos si RETVAL=1 no actaulizasmo-exit 0 || si RETVAL>2 exit 1 [ "$RETVAL" == "1" ] && exit 0 @@ -204,26 +209,17 @@ case "$PROTOCOLO" in [ "${2##*.}" == "img" ] && IMGTYPE="img" || IMGTYPE="diff" IMGNAME="${2%.img*}" - DIRMOUNT="$(ogGetMountDir "$IMGNAME" $IMGTYPE)" + DIRMOUNT=$(ogGetMountDir "$IMGNAME" $IMGTYPE) DIRLOCAL="/tmp/$DIRMOUNT" mkdir $DIRLOCAL 2>/dev/null echo "$MSG_SCRIPTS_UPDATECACHE_CHECKSIZEIMG" + # Si la imagen no existe la creo # Si la imagen del repositorio es mayor, redimensiono la imagen de cache - if [ $CACHEFILESIZE -lt $REALFILESIZE ]; then - # Si la imagen esta montada la desmonto - mount |grep $CACHEFILE >/dev/null && umount $CACHEFILE - echo " $MSG_SYNC_RESIZE." | tee -a $OGLOGSESSION $OGLOGFILE - echo " truncate --size=>$REALFILESIZE k $CACHEFILE" | tee -a $OGLOGSESSION $OGLOGFILE - truncate --size=">$REALFILESIZE"k $CACHEFILE &> $OGLOGCOMMAND - echo " mount -o compress=lzo $CACHEFILE $DIRLOCAL" - mount -o compress=lzo $CACHEFILE $DIRLOCAL - echo " btrfs filesystem resize max $DIRLOCAL" - btrfs filesystem resize max $DIRLOCAL + if [ "$CACHEFILE" == "" -o $CACHEFILESIZE -lt $REALFILESIZE ]; then + ogCreateFileImage CACHE "$IMGNAME" $IMGTYPE $REALFILESIZE TIMEAUX3=$[SECONDS-TIMEAUX3] echo " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL: $[TIMEAUX3/60]m $[TIMEAUX3%60]s" | tee -a $OGLOGSESSION $OGLOGFILE - - fi # Montamos las imagenes para sincronizarlas ogMountImage CACHE "$IMGNAME" $IMGTYPE >/dev/null @@ -245,7 +241,11 @@ echo " [ ] $RESUMEUPDATECACHE " | tee -a $OGLOGSESSION $OGLOGFILE echo " [ ] $MSG_SCRIPTS_TIME_PARTIAL updateCache $[TIME1/60]m $[TIME1%60]s" | tee -a $OGLOGSESSION $OGLOGFILE echo " [ ] $MSG_SCRIPTS_TASK_START $MSG_HELP_ogCalculateChecksum " | tee -a $OGLOGSESSION $OGLOGFILE TIME2=$SECONDS -if [ "$IMGTYPE" == "MONOLITICA" ]; then +# Si es imagen sincronizada siempre da distinto md5. No podemos comprobar +if [ "$IMGSYNC" == "TRUE" ]; then + # RETVAL="1" -> OK RETVAL="2" -> error # valores igual que ogUpdateCacheIsNecesary + [ $PROTOCOLO == "RSYNC" ] || RETVAL=1 +else ogUpdateCacheIsNecesary $REPOSITORIO "$2" RETVAL=$? fi |