#!/bin/bash # deleteimage [ -b | -r | -i ] str_image #@file deleteimage #@brief Borra del repositorio los ficheros de una imagen. #@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 -i Elimina imagen Incremental o Basica #@param str_image Nombre canónico de la imagen, sin extensión. #@version 1.0 - Versión inicial. #@date 2012-10-14 #@author Ramón Gómez, ETSII Univ. Sevilla #@version 1.2 - Eliminar imagen incremental. #@date 2013-07-17 #@author Alberto García, Univ. Málaga PROG=$(basename $0) OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"} OGIMG=$OPENGNSYS/images IMGEXT="img" BAKEXT="ant" DIFFEXT="diff" # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then cat << EOT $PROG: Borra los ficheros de una imagen del repositorio. Formato: $PROG [ -b | -r | -i | -d ] str_image -b Elimina también 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 EOT exit 0 fi # Procesar parámetros while getopts brid OPTION; do case $OPTION in b) DELETEBACKUP=1 ;; r) RECOVERBACKUP=1 ;; i) DELETEINCREMEN=1 ;; d) DELETEDIRECTORIO=1 ;; *) ERR=1 ;; esac shift $((OPTIND-1)) done [ -n "$DELETEBACKUP" ] && [ -n "$RECOVERBACKUP" ] && [ -n "$DELETEINCREMEN" ] && [ -n "$DELETEDIRECTORIO" ] && ERR=1 if [ $# != 1 -o -n "$ERR" ]; then echo "$PROG Error: Formato: $PROG [ -b | -r | -i | -d ] str_image" exit 1 fi # Recuperar copia de seguridad de la imagen. if [ -n "$RECOVERBACKUP" ]; then mv -f $IMGFILE.$BAKEXT $IMGFILE && \ (mv -f $IMGFILE.sum.$BAKEXT $IMGFILE.sum 2>/dev/null mv -f $IMGFILE.torrent.$BAKEXT $IMGFILE.torrent 2>/dev/null) fi # Borrar copia de seguridad de la imagen. if [ -n "$DELETEBACKUP" ]; then rm -f $IMGFILE.$BAKEXT && rm -f $IMGFILE.{sum,torrent}.$BAKEXT 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