summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xadmin/Sources/Services/ogAdmRepoAux67
-rwxr-xr-xclient/engine/Rsync.lib13
2 files changed, 43 insertions, 37 deletions
diff --git a/admin/Sources/Services/ogAdmRepoAux b/admin/Sources/Services/ogAdmRepoAux
index 4d245daf..637fb38a 100755
--- a/admin/Sources/Services/ogAdmRepoAux
+++ b/admin/Sources/Services/ogAdmRepoAux
@@ -239,45 +239,48 @@ case "$PARM1" in
LOCKFILE="$IMGFILE.lock"
[ ! -f $IMGFILE ] && echolog "Imagen $IMGFILE no existe" && exit 1
- # Solo funciona si la imagen es ext4, si no nos salimos sin error
- file $IMGFILE |grep -i -e " ext4 filesystem " 2>&1 > /dev/null || exit 0
+ # Para imagenes EXT4 reduzco, para BTRFS solo desmonto.
+ if file $IMGFILE |grep -i -e " ext4 filesystem " 2>&1 > /dev/null ; then
- [ -d $DIRMOUNT ] || mkdir $DIRMOUNT
- mountImage "$IMGFILE" "$DIRMOUNT" || (echolog "Error al montar la imagen $IMGFILE"; exit 1)
+ [ -d $DIRMOUNT ] || mkdir $DIRMOUNT
+ mountImage "$IMGFILE" "$DIRMOUNT" || (echolog "Error al montar la imagen $IMGFILE"; exit 1)
- # Si el espacio libre menor que 500Mb desmontamos la imagen y nos salimos
- AVAILABLE=$(df -k|grep $DIRMOUNT|awk '{print $4}')
- if [ $AVAILABLE -lt 200000 ]; then
+ # Si el espacio libre menor que 200Mb desmontamos la imagen y nos salimos
+ AVAILABLE=$(df -k|grep $DIRMOUNT|awk '{print $4}')
+ if [ $AVAILABLE -lt 200000 ]; then
echolog "reducir imagen REPO $PARM2 $IMGEXT. tamaño minimo, nada que hacer"
umount $DIRMOUNT
rmdir $DIRMOUNT
exit 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
-
- echolog "reducir imagen REPO $PARM2 $IMGEXT, tamaño final: $ENDSIZE"
- umount $DIRMOUNT
- LOOPDEVICE=$(losetup -f)
- losetup $LOOPDEVICE "$IMGFILE"
+ fi
- # Redimensiono sistema de ficheros
- echolog "resize2fs -fpM $LOOPDEVICE "
- resize2fs -fpM $LOOPDEVICE # 2>&1 > $REPOLOG
- mountImage "$IMGFILE" "$DIRMOUNT"
- # Calculamos el tamaño final del archivo
- INTSIZE=$(df -k|grep "$DIRMOUNT"|awk '{print $2}')
- let EXTSIZE=$INTSIZE+$EDGESIZE
- umount $DIRMOUNT || (echolog "Error al desmontar la imagen $IMGFILE"; exit 1)
- # Si existe dispositivo loop lo borramos.
- [ $LOOPDEVICE ] && losetup -a| grep $LOOPDEVICE &> /dev/null && losetup -d $LOOPDEVICE
- # Corto el archivo al tamaño del sistema de ficheros
- echo "truncate --size=\"$EXTSIZE\"k $IMGFILE"
- echolog "truncate --size=\"$EXTSIZE\"k $IMGFILE"
- truncate --size="$EXTSIZE"k $IMGFILE
+ # 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
+
+ echolog "reducir imagen REPO $PARM2 $IMGEXT, tamaño final: $ENDSIZE"
+ umount $DIRMOUNT
+ LOOPDEVICE=$(losetup -f)
+ losetup $LOOPDEVICE "$IMGFILE"
+
+ # Redimensiono sistema de ficheros
+ echolog "resize2fs -fpM $LOOPDEVICE "
+ resize2fs -fpM $LOOPDEVICE # 2>&1 > $REPOLOG
+ mountImage "$IMGFILE" "$DIRMOUNT"
+ # Calculamos el tamaño final del archivo
+ INTSIZE=$(df -k|grep "$DIRMOUNT"|awk '{print $2}')
+ let EXTSIZE=$INTSIZE+$EDGESIZE
+ umount $DIRMOUNT || (echolog "Error al desmontar la imagen $IMGFILE"; exit 1)
+ # Si existe dispositivo loop lo borramos.
+ [ $LOOPDEVICE ] && losetup -a| grep $LOOPDEVICE &> /dev/null && losetup -d $LOOPDEVICE
+ # Corto el archivo al tamaño del sistema de ficheros
+ echo "truncate --size=\"$EXTSIZE\"k $IMGFILE"
+ echolog "truncate --size=\"$EXTSIZE\"k $IMGFILE"
+ truncate --size="$EXTSIZE"k $IMGFILE
+ else
+ umount $DIRMOUNT || (echolog "Error al desmontar la imagen $IMGFILE"; exit 1)
+ fi
rmdir $DIRMOUNT
echo "reduced" >$LOCKFILE
diff --git a/client/engine/Rsync.lib b/client/engine/Rsync.lib
index 5b735c5e..bcf1a810 100755
--- a/client/engine/Rsync.lib
+++ b/client/engine/Rsync.lib
@@ -710,10 +710,10 @@ fi
IMGDIR="$(ogGetParentPath "$1" "/$2")"
IMGFILE="${IMGDIR}/$(basename "/$2").$IMGEXT"
-# Solo es posible para imagenes EXT4. Si no es EXT4 salimos sin error
-file "$IMGFILE" | grep -i " ext4 filesystem " 2>&1 > /dev/null || return 0
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}')
@@ -748,10 +748,13 @@ if [ "$1" == "CACHE" -o "$1" == "cache" ]; then
# 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
- echo "reduced" > "$IMGFILE.lock"
- rmdir "$DIRMOUNT"
+ umount "$DIRMOUNT"
+ fi
+
+ echo "reduced" > "$IMGFILE.lock"
+ rmdir "$DIRMOUNT"
else
[ -z $REPOIP ] && REPOIP=$(ogGetRepoIp)