#!/bin/bash #/** # createImage #@brief Scirpt de ejemplo para crear una imagen de un sistema de archivos. #@brief (puede usarse como base para el programa de creación de imágenes usado por OpenGnSys Admin). #@param 1 disco #@param 2 particion #@param 3 REPO|CACHE #@param 4 imagen #@return #@exception OG_ERR_FORMAT formato incorrecto. #@exception OG_ERR_NOTCACHE #si cache no existe. #@exception OG_ERR_REDUCEFS #error al reducir sistema de archivos. #@exception OG_ERR_EXTENDFS #errror al expandir el sistema de archivos. #@note #@todo: #@version 1.0 - control de errores para el ogAdmServer #@author #@date #*/ ## TIME1=$SECONDS PROG="$(basename $0)" if [ $# -ne 4 ]; then ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG ndisco nparticion REPO|CACHE imagen" exit $? fi # Valores por defecto IMGPROG="partclone" IMGCOMP="lzop" IMGEXT="img" # Si el repositorio es CACHE comprobamos que exista if [ "$3" == "CACHE" -o "$3" == "cache" ]; then if ! $(ogFindCache >/dev/null); then ogRaiseError $OG_ERR_NOTCACHE "$MSG_ERR_NOTCACHE" exit $? fi fi # Obtener información de los parámetros de entrada. PART=$(ogDiskToDev "$1" "$2") || exit $? IMGDIR=$(ogGetParentPath "$3" "/$4") # Si no existe, crear subdirectorio de la imagen. if [ $? != 0 ]; then echo "[5] Crear subdirectorio de la imagen \"$3 $(dirname "$4")." ogMakeDir "$3" $(dirname "/$4") IMGDIR=$(ogGetParentPath "$3" "/$4") || exit $? fi IMGFILE=$IMGDIR/$(basename "/$4").$IMGEXT # Renombrar el fichero de imagen si ya existe. if [ -f "$IMGFILE" ]; then echo "[10] Renombrar \"$IMGFILE\" por \"$IMGFILE.ant\"." mv "$IMGFILE" "$IMGFILE.ant" mv "$IMGFILE.torrent" "$IMGFILE.torrent.ant" 2>/dev/null fi # Mostrar información. echo "[15] $PROG: Origen=$PART, Destino=$IMGFILE" # Comprobar consistencia del sistema de archivos. echo "[20] Comprobar sistema de archivos." ogUnmount $1 $2 ogCheckFs $1 $2 echo "[30]: Reducir sistema de archivos." ogReduceFs $1 $2 || $(ogRaiseError $OG_ERR_REDUCEFS "$1 $2"; exit $?) # Crear la imagen. echo "[40] Crear imagen." ogCreateImage $1 "$2" $3 $4 "$IMGPROG" "$IMGCOMP" || exit $? #ogCreateImage $1 "$2" $3 $4 || exit $? echo "[90] Extender sistema de archivos." ogExtendFs $1 $2 || $(ogRaiseError $OG_ERR_EXTENDFS "$1 $2"; exit $?) TIME=$[SECONDS-TIME1] echo "[100] Duracion de la operacion $[TIME/60]m $[TIME%60]s"