diff options
author | irina <irinagomez@us.es> | 2013-06-14 09:59:09 +0000 |
---|---|---|
committer | irina <irinagomez@us.es> | 2013-06-14 09:59:09 +0000 |
commit | 04f50f06d1615a8303af7c891b75376ad841e9c8 (patch) | |
tree | 75468826b6fb28d7fae0d58a74c6a880b6faa866 /client/shared/scripts/updateCache | |
parent | a3d03dd7fbde736153bf27b3e7217b8e573461ec (diff) |
#565 sincronizadas: error en updateCache confundia imagenes monoliticas con sincronizadas.
git-svn-id: https://opengnsys.es/svn/branches/version1.0@3883 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'client/shared/scripts/updateCache')
-rwxr-xr-x | client/shared/scripts/updateCache | 49 |
1 files changed, 29 insertions, 20 deletions
diff --git a/client/shared/scripts/updateCache b/client/shared/scripts/updateCache index 58efc821..f8de97c8 100755 --- a/client/shared/scripts/updateCache +++ b/client/shared/scripts/updateCache @@ -50,19 +50,25 @@ if ! $(ogFindCache >/dev/null); then exit $? fi -# Comprobar que es sincronizable -REPOFILE=$(ogGetPath "REPO" "/$2") -file $REPOFILE | grep " BTRFS Filesystem" 2>&1 > /dev/null -[ $? == 0 ] && IMGTYPE="RSYNC" - -# La sincronizada, si hay imagen en cache uso rsync, si no otro protocolo -CACHEFILE=$(ogGetPath "CACHE" "/$2") && PROTOCOLO="RSYNC" +# comprobar si la imagen existe +REPOFILE=$(ogGetPath "REPO" "/$2") || ogRaiseError $OG_ERR_NOTFOUND "REPO /$2" echo "$MSG_SCRIPTS_UPDATECACHE_DOUPDATE " -#TODO: ogUpdateCacheIsNecesary debe borrar la imagen que tenga igual nombre pero distinto sum- -# Si es imagen sincronizada siempre da distinto md5 -> no comprobamos -[ "$IMGTYPE" == "RSYNC" ] || ogUpdateCacheIsNecesary $1 $2 -RETVAL=$? +# Distingo si es monolitica o sincronizable +file $REPOFILE | grep " BTRFS Filesystem" 2>&1 > /dev/null +if [ $? == 0 ]; then + IMGTYPE="RSYNC" + # Para imagen sincronizada, si hay imagen en cache uso rsync, si no otro protocolo + CACHEFILE=$(ogGetPath "CACHE" "/$2") && PROTOCOLO="RSYNC" + + # Si es imagen sincronizada siempre da distinto md5. No podemos comprobar -> actualizamos. + RETVAL=0 +else + IMGTYPE="MONOLITICA" + #TODO: ogUpdateCacheIsNecesary debe borrar la imagen que tenga igual nombre pero distinto sum- + ogUpdateCacheIsNecesary $1 $2 + RETVAL=$? +fi # si RETVAL=0 => actualizamos si RETVAL=1 no actaulizasmo-exit 0 || si RETVAL>2 exit 1 [ "$RETVAL" == "1" ] && exit 0 [ "$RETVAL" -gt "1" ] && exit 1 @@ -70,12 +76,12 @@ RETVAL=$? CACHESIZE=$(ogGetCacheSize) CACHESIZEFREE=$(ogGetFreeSize `ogFindCache`) FILESIZE=$(ls -sk $(ogGetPath $REPOSITORIO "$2") | cut -f1 -d" ") -REALFILESIZE=$(ls -lk $(ogGetPath $REPOSITORIO "$2") | cut -f5 -d" ") +REALFILESIZE=$(ls -l --block-size=1024 $(ogGetPath $REPOSITORIO "$2") | cut -f5 -d" ") # 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 -lk $(ogGetPath "CACHE" "$2") | cut -f5 -d" ") + CACHEFILESIZE=$(ls -l --block-size=1024 $(ogGetPath "CACHE" "$2") | cut -f5 -d" ") let SIZEREQUIRED=$CACHEFILESIZE-$FILESIZE [ $SIZEREQUIRED -lt 0 ] && SIZEREQUIRED=0 else @@ -121,6 +127,7 @@ then esac fi +# Comprobamos que imagen cache igual a la del repo. Si sincronizada no podemos comprobar. [ "$IMGTYPE" == "RSYNC" ] || ogUpdateCacheIsNecesary $REPOSITORIO "$2" RETVAL=$? # si RETVAL=0 => actualizamos si RETVAL=1 no actaulizasmo-exit 0 || si RETVAL>2 exit 1 @@ -197,12 +204,13 @@ case "$PROTOCOLO" in DIRMOUNT="$(ogGetMountDir "${2%%.*}" $IMGEXT)" DIRLOCAL="/tmp/$DIRMOUNT" mkdir $DIRLOCAL 2>/dev/null - echo "Comprobamos si hay que redimensionar la imagen: cachefile: $CACHEFILESIZE -lt repofile: $REALFILESIZE " + echo "$MSG_SCRIPTS_UPDATECACHE_CHECKSIZEIMG" + if [ $CACHEFILESIZE -lt $REALFILESIZE ]; then # Si la imagen esta montada la desmonto mount |grep $CACHEFILE >/dev/null && umount $CACHEFILE - echo " Redimensionamos la imagen al tamaƱo necesario" | tee -a $OGLOGSESSION $OGLOGFILE + 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" @@ -210,15 +218,16 @@ case "$PROTOCOLO" in echo " btrfs filesystem resize max $DIRLOCAL" btrfs filesystem resize max $DIRLOCAL TIMEAUX3=$[SECONDS-TIMEAUX3] - echo " Fin redimension de la imagen: $[TIMEAUX3/60]m $[TIMEAUX3%60]s" | tee -a $OGLOGSESSION $OGLOGFILE + echo " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL: $[TIMEAUX3/60]m $[TIMEAUX3%60]s" | tee -a $OGLOGSESSION $OGLOGFILE fi - ogMountImage CACHE "${2%%.*}" $IMGEXT - ogMountImage REPO "${2%%.*}" $IMGEXT + # Montamos las imagenes para sincronizarlas + ogMountImage CACHE "${2%%.*}" $IMGEXT >/dev/null + ogMountImage REPO "${2%%.*}" $IMGEXT >/dev/null # Esperamos que se monte la imagen en el servidor ogWaitMountImage REPO "${2%%.*}" $IMGEXT - echo -e "\nrsync -aHAX OPTRSYNC --quiet $USERRSYNC@$REPOIP::ogimages/$DIRMOUNT/ $DIRLOCAL |tee -a $OGLOGSESSION $OGLOGFILE" + echo -e "\n rsync -aHAX OPTRSYNC --quiet $USERRSYNC@$REPOIP::ogimages/$DIRMOUNT/ $DIRLOCAL |tee -a $OGLOGSESSION $OGLOGFILE" rsync -aHAX$OPTRSYNC --quiet $USERRSYNC@$REPOIP::ogimages/$DIRMOUNT/ $DIRLOCAL |tee -a $OGLOGSESSION $OGLOGFILE # RETVAL="1" -> OK RETVAL="2" -> error # valores igual que ogUpdateCacheIsNecesary [ $? == 0 ] && RETVAL="1"|| RETVAL="2" @@ -233,7 +242,7 @@ 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 [ "$PROTOCOLO" != "RSYNC" ]; then +if [ "$IMGTYPE" == "MONOLITICA" ]; then ogUpdateCacheIsNecesary $REPOSITORIO "$2" RETVAL=$? fi |