#!/bin/bash # deleteimage [ -b | -r ] [ dir_ogunit ] 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 str_dir_ogunit Nombre del subdirectorio de la unidad organizativa (opcional). #@param str_image Nombre canónico de la imagen, sin extensión. #@exception 1 Error de formato #@exception 2 Solo ejecutable por root #@exception 3 No existe subdirectorio de la unidad organizativa #@version 1.0 - Versión inicial. #@date 2012-10-14 #@author Ramón Gómez, ETSII Univ. Sevilla #@version 1.0.5 - Eliminar imagen incremental. #@date 2013-07-17 #@author Alberto García, Univ. Málaga #@version 1.0.6 - Detección automática del tipo de imagen. #@date 2014-10-29 #@author Ramón Gómez, ETSII Univ. Sevilla #@version 1.1 - Separación subdirectorios unidades organizativas. #@date 2016-01-03 #@author Irina Gómez, ETSII Univ. Sevilla 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 ] [ str_dir_ogunit ] str_image -b Elimina también la copia de seguridad de la imagen. -r Recupera la copia de seguridad de la imagen. dir_ogunit subdirectorio unidad organizativa Ejemplo: $PROG imagen1 $PROG -r dir_ogunit2 imagen2 EOT exit 0 fi # Procesar parámetros while getopts br OPTION; do case $OPTION in b) DELETEBACKUP=1 ;; r) RECOVERBACKUP=1 ;; *) ERR=1 ;; esac shift $((OPTIND-1)) done [ -n "$DELETEBACKUP" ] && [ -n "$RECOVERBACKUP" ] && ERR=1 if [ $# -lt 1 -o -n "$ERR" ]; then echo "$PROG Error: Formato: $PROG [ -b | -r ] [ str_dir_ogunit ] str_image" exit 1 fi if [ "$USER" != "root" ]; then echo "$PROG: Error: solo ejecutable por root" >&2 exit 2 fi if [ "$2" ]; then if [ -d "$OGIMG/$1" ]; then OGIMG="$OGIMG/$1" else echo "$PROG Error: No existe el subdirectorio de la unidad organizativa $OGIMG/$1" exit 3 fi shift fi # Eliminar ficheros de imagen monolítica o sincronizada básica. IMGPATH="$OGIMG/$1.$IMGEXT" if [ -f $IMGPATH ]; then echo "Borrando fichero $IMGPATH" rm -f $IMGPATH && rm -f $IMGPATH.{sum,full.sum,torrent} else # Eliminar ficheros de imagen sincronizada diferencial. IMGPATH="$OGIMG/$1.$IMGEXT.$DIFFEXT" if [ -f $IMGPATH ]; then echo "Borrando fichero $IMGPATH" rm -f $IMGPATH && rm -f $IMGPATH.{sum,full.sum,torrent} else # Eliminar directorio de imagen sincronizada. IMGPATH="$OGIMG/$1" if [ -d $IMGPATH ]; then echo "Borrando directorio $IMGPATH" rm -fr $IMGPATH fi fi fi # Recuperar copia de seguridad de la imagen. if [ -n "$RECOVERBACKUP" ]; then [ -e $IMGPATH.$BAKEXT ] && echo "Recuperando copia $IMGPATH.$BAKEXT" mv -f $IMGPATH.$BAKEXT $IMGPATH && \ (mv -f $IMGPATH.sum.$BAKEXT $IMGPATH.sum 2>/dev/null mv -f $IMGPATH.full.sum.$BAKEXT $IMGPATH.full.sum 2>/dev/null mv -f $IMGPATH.torrent.$BAKEXT $IMGPATH.torrent 2>/dev/null) fi # Borrar copia de seguridad de la imagen. if [ -n "$DELETEBACKUP" ]; then [ -e $IMGPATH.$BAKEXT ] && echo "Eliminando copia $IMGPATH.$BAKEXT" rm -f $IMGPATH.$BAKEXT && rm -f $IMGPATH.{sum,full.sum,torrent}.$BAKEXT fi