source: client/shared/scripts/restoreBaseImage @ b169708

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacionwebconsole3
Last change on this file since b169708 was d2b8d24, checked in by irina <irinagomez@…>, 12 years ago

#565 script creacion y restauración de imagenes sincronizadas v2

git-svn-id: https://opengnsys.es/svn/branches/version1.0@3718 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100755
File size: 4.1 KB
RevLine 
[1a632ba]1#!/bin/bash
2#/**
3#         restoreBaseImage
4#@brief Script de ejemplo para restaurar una imagen
5#@brief (puede usarse como base para el programa de restauración de imágenes usado por OpenGNSys Admin).
6#@param 1 REPO|CACHE
7#@param 2 imagen
8#@param 3 disco
9#@param 4 particion
10#@param 5 protocolo
11#@param 6 opciones protocolo
12#@return
13#@exception OG_ERR_FORMAT  # 1 formato incorrecto.
14#@exception updateCache    # 15 No hay cache
15#@exception updateCache    # 16 no hay espacio sufiente
16#@exception "Error al montar la imagen" INTERNACIONALIZAR
17#@todo: Probar rsync desde repo sin samba
18#@todo: Se puede dar la opcion de que mantenga los ficheros nuevos.
19#@todo: Se puede dar la opcion que la trasferencia se manden los datos comprimidos.
20#@note  se toma como punto de partida el script restoreImage
21#@version 1.0 - restauración de imagen con sincronizacion.
22#@author 
23#@date   2012-12-04
24#*/ ##
[d2b8d24]25trap "ogUnlock $3 $4; umount $DIRMOUNT; hose $REPOIP 2009 --out sh -c \"echo -ne UMOUNT_IMAGE $2 $IMGEXT\" "  1 2 3 6 9 14 15
26
27# Limpiamos los archivo de log
28echo "" >$OGLOGCOMMAND
[1a632ba]29
30TIME1=$SECONDS
31PROG="$(basename $0)"
32if [ $# -lt 4 ]; then
33    ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG REPO|CACHE imagen ndisco nparticion [ UNICAST|MULTICAST|TORRENT ] [opciones protocolo]"
34    exit $?
35fi
[d2b8d24]36echo "[1] $MSG_SCRIPTS_START  $0 $*" | tee -a $OGLOGFILE
37
38IMGEXT="img"
[1a632ba]39
[d2b8d24]40# Comprobamos si la imagen o la particion estan bloqueada:
41ogIsImageLocked "$1" "$2.$IMGEXT" && exit $(ogRaiseError $OG_ERR_LOCKED "$1 $2.$IMGEXT"; echo $?)
42ogIsLocked "$3" "$4" && exit $(ogRaiseError $OG_ERR_LOCKED  "$3 $4"; echo $?)
43
44# Carga del configurador del engine
45[ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg
[1a632ba]46
47# Procesar parámetros de entrada
[d2b8d24]48REPOFILE=$(ogGetPath "REPO" "$2.$IMGEXT") || exit $(ogRaiseError $OG_ERR_NOTFOUND "REPO, $2.$IMGEXT"; echo $?)
49
50# Comprobar que es sincronizable (con REPO)
51# TODO: crear mensaje de error
52file $REPOFILE | grep " BTRFS Filesystem" 2>&1 > /dev/null
53[ $? == 0 ]  ||  exit  $(ogRaiseError  "$1 $2"; echo $?)
[1a632ba]54
55PROTO=${5:-"UNICAST"}
56if [ "$1" == "CACHE" -o "$1" == "cache" ]; then
[d2b8d24]57   # Las imagenes sincronizables aunque sean iguales no tienen el mismo sum.
58   # Sincronizamos si existe el fichero y si no usamos updateCache.
59   echo "[10] Realizando un updateCache REPO $2.img $PROTO $6" | tee -a $OGLOGFILE
60   echo "      updateCache REPO" "/$2.img" "$PROTO" "$6"   | tee -a $OGLOGFILE
61   updateCache REPO "/$2.img" "$PROTO" "$6"     &>> $OGLOGCOMMAND
[1a632ba]62   RETVAL=$?
63   if [ "$RETVAL" != "0" ]
64        then
[d2b8d24]65        echo "[49] Fin del updateCache REPO $2.img $5 $6 con error $RETVAL" | tee -a $OGLOGFILE
[1a632ba]66        # RC=15 No hay cache
67        # RC=16 no hay espacio sufiente
68        exit $RETVAL
69   fi
70fi
71
72TIME2=$SECONDS
73
74PART=$(ogDiskToDev "$3" "$4") || exit $?
75
76# Restaurar la imagen.
[d2b8d24]77echo "[40] Restaurar imagen en $PART"  | tee -a $OGLOGFILE
78DEST=$(ogMount "$3" "$4")
79# Formateamos si es necesario
80if [  $? -ne 0 ] ; then
81        # TODO ogGetImageInfo
82        DIRMOUNT="/tmp/mount$$"
83        mkdir $DIRMOUNT
84        mount -o compress=lzo $REPOFILE $DIRMOUNT
85        FSTYPE=$(head -1 $DIRMOUNT/ogimg.info |cut -d: -f3)     
86        umount $DIRMOUNT
87        echo "      Es necesario formatear la partición en $FSTYPE" | tee -a $OGLOGFILE
88        ogFormat "$3" "$4" "$FSTYPE"
89        ogMount "$3" "$4"  || exit $?
90fi
[1a632ba]91
92ogLock $3 $4
[d2b8d24]93
94# Montamos la imagen basica.
95ogMountImage "$1" "$2" "img"
96#  Comprobar que la imagen completa se ha montado.
97ogWaitMountImage "$1" "$2" "img"
98# Sincronizamos la partición con la imagen.
99echo  "[60] Sincronizando la partición con la imagen"  |tee -a $OGLOGFILE
100ogSyncRestore "$1" "$2" "img" $3 $4
101
[1a632ba]102TIMEAUX2=$[SECONDS-TIME2]
[d2b8d24]103echo "      Fin Restauracion: tiempo parcial : $[TIMEAUX2/60]m $[TIMEAUX2%60]s" | tee -a $OGLOGFILE
[1a632ba]104
[d2b8d24]105# Desmontamos imagen basica.
106ogUnmountImage "$1" "$2" "img"
[1a632ba]107
[d2b8d24]108# Restableciendo acl
[1a632ba]109ogUnlock $3 $4
[d2b8d24]110echo "[70] Restableciendo lista de control de acceso." |tee -a $OGLOGFILE
111ogRestoreInfoImage $3 $4  &>>$OGLOGCOMMAND
112
[1a632ba]113
114# Llamar al script de post-configuración del sistema operativo.
[d2b8d24]115echo "[90] Post-configuracion de arranque del sistema." |tee -a $OGLOGFILE
116configureOs $3 $4  &>>$OGLOGCOMMAND
[1a632ba]117
118TIME=$[SECONDS-TIME1]
[d2b8d24]119echo "[100] Duracion de la operacion $[TIME/60]m $[TIME%60]s" |tee -a $OGLOGFILE
[1a632ba]120
Note: See TracBrowser for help on using the repository browser.