#674: Script {{{deleteimage}}} detecta automáticamente el tipo de imagen que debe borrar.

git-svn-id: https://opengnsys.es/svn/branches/version1.0@4416 a21b9725-9963-47de-94b9-378ad31fedc9
remotes/github/debian-pkg
ramon 2014-10-30 11:35:08 +00:00
parent 98cd714cd5
commit 99e251e68d
1 changed files with 36 additions and 54 deletions

View File

@ -1,17 +1,19 @@
#!/bin/bash #!/bin/bash
# deleteimage [ -b | -r | -i ] str_image # deleteimage [ -b | -r ] str_image
#@file deleteimage #@file deleteimage
#@brief Borra del repositorio los ficheros de una imagen. #@brief Borra del repositorio los ficheros de una imagen.
#@param -b Elimina también la copia de seguridad de la imagen (opcional). #@param -b Elimina también la copia de seguridad de la imagen (opcional).
#@param -r Recupera la copia de seguridad de la imagen (opcional). #@param -r Recupera la copia de seguridad de la imagen (opcional).
#@param -i Elimina imagen Incremental o Basica
#@param str_image Nombre canónico de la imagen, sin extensión. #@param str_image Nombre canónico de la imagen, sin extensión.
#@version 1.0 - Versión inicial. #@version 1.0 - Versión inicial.
#@date 2012-10-14 #@date 2012-10-14
#@author Ramón Gómez, ETSII Univ. Sevilla #@author Ramón Gómez, ETSII Univ. Sevilla
#@version 1.2 - Eliminar imagen incremental. #@version 1.0.5 - Eliminar imagen incremental.
#@date 2013-07-17 #@date 2013-07-17
#@author Alberto García, Univ. Málaga #@author Alberto García, Univ. Málaga
#@version 1.0.6 - Simplificar ejecución.
#@date 2014-10-29
#@author Ramón Gómez, ETSII Univ. Sevilla
PROG=$(basename $0) PROG=$(basename $0)
@ -25,80 +27,60 @@ DIFFEXT="diff"
if [ "$*" == "help" ]; then if [ "$*" == "help" ]; then
cat << EOT cat << EOT
$PROG: Borra los ficheros de una imagen del repositorio. $PROG: Borra los ficheros de una imagen del repositorio.
Formato: $PROG [ -b | -r | -i | -d ] str_image Formato: $PROG [ -b | -r ] str_image
-b Elimina también la copia de seguridad de la imagen. -b Elimina también la copia de seguridad de la imagen.
-r Recupera la copia de seguridad de la imagen. -r Recupera la copia de seguridad de la imagen.
-i Elimina imagen Incremental o Basica
-d Elimina Directorios
Ejemplo: $PROG imagen1 Ejemplo: $PROG imagen1
EOT EOT
exit 0 exit 0
fi fi
# Procesar parámetros # Procesar parámetros
while getopts brid OPTION; do while getopts br OPTION; do
case $OPTION in case $OPTION in
b) DELETEBACKUP=1 ;; b) DELETEBACKUP=1 ;;
r) RECOVERBACKUP=1 ;; r) RECOVERBACKUP=1 ;;
i) DELETEINCREMEN=1 ;;
d) DELETEDIRECTORIO=1 ;;
*) ERR=1 ;; *) ERR=1 ;;
esac esac
shift $((OPTIND-1)) shift $((OPTIND-1))
done done
[ -n "$DELETEBACKUP" ] && [ -n "$RECOVERBACKUP" ] && ERR=1
[ -n "$DELETEBACKUP" ] && [ -n "$RECOVERBACKUP" ] && [ -n "$DELETEINCREMEN" ] && [ -n "$DELETEDIRECTORIO" ] && ERR=1
if [ $# != 1 -o -n "$ERR" ]; then if [ $# != 1 -o -n "$ERR" ]; then
echo "$PROG Error: Formato: $PROG [ -b | -r | -i | -d ] str_image" echo "$PROG Error: Formato: $PROG [ -b | -r ] str_image"
exit 1 exit 1
fi fi
# Eliminar ficheros de imagen monolítica o sincronizada básica.
IMGPATH="$OGIMG/$1.$IMGEXT"
if [ -f $IMGPATH ]; then
echo "Borrando fichero $PATHDIR"
rm -f $IMGPATH && rm -f $IMGPATH.{sum,torrent}
else
# Eliminar ficheros de imagen sincronizada diferencial.
IMGPATH="$OGIMG/$1.$IMGEXT.$DIFFEXT"
if [ -f $IMGPATH ]; then
echo "Borrando fichero $PATHDIR"
rm -f $IMGPATH && rm -f $IMGPATH.{sum,torrent}
else
# Eliminar directorio de imagen sincronizada.
IMGPATH="$OGIMG/$1"
if [ -d $IMGPATH ]; then
echo "Borrando directorio $PATHDIR"
rm -fr $IMGPATH
fi
fi
fi
# Recuperar copia de seguridad de la imagen. # Recuperar copia de seguridad de la imagen.
if [ -n "$RECOVERBACKUP" ]; then if [ -n "$RECOVERBACKUP" ]; then
mv -f $IMGFILE.$BAKEXT $IMGFILE && \ [ -e $IMGPATH.$BAKEXT ] && echo "Recuperando copia $IMGPATH.$BAKEXT"
(mv -f $IMGFILE.sum.$BAKEXT $IMGFILE.sum 2>/dev/null mv -f $IMGPATH.$BAKEXT $IMGPATH && \
mv -f $IMGFILE.torrent.$BAKEXT $IMGFILE.torrent 2>/dev/null) (mv -f $IMGPATH.sum.$BAKEXT $IMGPATH.sum 2>/dev/null
mv -f $IMGPATH.torrent.$BAKEXT $IMGPATH.torrent 2>/dev/null)
fi fi
# Borrar copia de seguridad de la imagen. # Borrar copia de seguridad de la imagen.
if [ -n "$DELETEBACKUP" ]; then if [ -n "$DELETEBACKUP" ]; then
rm -f $IMGFILE.$BAKEXT && rm -f $IMGFILE.{sum,torrent}.$BAKEXT [ -e $IMGPATH ] && echo "Eliminando copia $IMGPATH.$BAKEXT"
rm -f $IMGPATH.$BAKEXT && rm -f $IMGPATH.{sum,torrent}.$BAKEXT
fi fi
# Borrar directorio de imagen
IMGFILECA="$OGIMG/$1"
if [ -n "$DELETEINCREMEN" ];then
rm -R $IMGFILECA && exit
fi
# Si el Nombre canonico es un directorio eliminamos
# o si la opcion es i tambien eliminamos
IMGFILECA="$OGIMG/$1"
if [ -n "$DELETEDIRECTORIO" ]; then
rm -R $IMGFILECA && exit
# Si el Nomobre canonico NO es un directorio
else
# Comprobamos si es un archivo backup .ant
NOMBREANT=$(echo $1 | awk -F. '{print $1}')
if [ $1 == "$NOMBREANT.$BAKEXT" ]; then
IMGFILE="$OGIMG/$NOMBREANT.$IMGEXT.$BAKEXT"
# Eliminar fichero de seguridad .img.ant
rm -f $IMGFILE
else
# Comprobamos si es un archivo diferencial .diff
NOMBREDIF="$OGIMG/$1.$IMGEXT.$DIFFEXT"
if [ -f $NOMBREDIF ]; then
IMGFILE="$OGIMG/$1.$IMGEXT.$DIFFEXT"
# Eliminar fichero diferencial .diff .torrent .sum
rm -f $IMGFILE && rm -f $IMGFILE.{sum,torrent}
else
# Fichero principal de la imagen.
IMGFILE="$OGIMG/$1.$IMGEXT"
# Eliminar ficheros de la imagen.
rm -f $IMGFILE && rm -f $IMGFILE.{sum,torrent}
fi
fi
fi