source: client/shared/scripts/restoreBaseImage @ 44912ec5

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 44912ec5 was 1ee5d4d3, checked in by irina <irinagomez@…>, 12 years ago

#565 Internacionalizacion script imagenes sincronizadas

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

  • Property mode set to 100755
File size: 4.4 KB
Line 
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#*/ ##
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
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
36echo "[1] $MSG_SCRIPTS_START  $0 $*" | tee -a $OGLOGFILE
37
38IMGEXT="img"
39
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
46
47# Procesar parámetros de entrada
48REPOFILE=$(ogGetPath "REPO" "$2.$IMGEXT") || exit $(ogRaiseError $OG_ERR_NOTFOUND "REPO, $2.$IMGEXT"; echo $?)
49# Comprobamos si el sistema de ficheros se puede montar
50ogMount "$3" "$4" &>/dev/null
51if [  $? -ne 0 ] ; then
52        # TODO ogGetImageInfo
53        DIRMOUNT="/tmp/mount$$"
54        mkdir $DIRMOUNT
55        mount -o compress=lzo $REPOFILE $DIRMOUNT
56        FSTYPE=$(head -1 $DIRMOUNT/ogimg.info |cut -d: -f3)     
57        umount $DIRMOUNT
58        echo "      $MSG_FORMAT: $3 $4 $FSTYPE" | tee -a $OGLOGFILE
59        ogFormat "$3" "$4" "$FSTYPE" || exit $(ogRaiseError $OG_ERR_FILESYS "$3 $4"; echo $?)
60        ogMount "$3" "$4"  || exit $(ogRaiseError $OG_ERR_FILESYS "$3 $4"; echo $?)
61fi
62
63
64
65# Comprobar que es sincronizable (con REPO)
66# TODO: crear mensaje de error
67file $REPOFILE | grep " BTRFS Filesystem" 2>&1 > /dev/null
68[ $? == 0 ]  ||  exit  $(ogRaiseError  "$1 $2"; echo $?)
69
70PROTO=${5:-"UNICAST"}
71if [ "$1" == "CACHE" -o "$1" == "cache" ]; then
72   # Las imagenes sincronizables aunque sean iguales no tienen el mismo sum.
73   # Sincronizamos si existe el fichero y si no usamos updateCache.
74   echo "[10] $MSG_SCRIPTS_TASK_START updateCache REPO $2.img $PROTO $6" | tee -a $OGLOGFILE
75   echo "      updateCache REPO" "/$2.img" "$PROTO" "$6"   | tee -a $OGLOGFILE
76   updateCache REPO "/$2.img" "$PROTO" "$6"     &>> $OGLOGCOMMAND
77   RETVAL=$?
78   if [ "$RETVAL" != "0" ]
79        then
80        echo "[39] $MSG_SCRIPTS_TASK_END updateCache REPO $2.img $5 $6 con error $RETVAL" | tee -a $OGLOGFILE
81        # RC=15 No hay cache
82        # RC=16 no hay espacio sufiente
83        exit $RETVAL
84   fi
85   TIMEAUX1=$[SECONDS-TIME]
86   echo "      $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL : $[TIMEAUX1/60]m $[TIMEAUX1%60]s" | tee -a $OGLOGFILE
87
88fi
89
90
91
92TIME2=$SECONDS
93
94
95# Restaurar la imagen.
96echo "[40] $MSG_HELP_ogRestoreImage: $1 $2 $3 $4"  | tee -a $OGLOGFILE
97
98ogLock $3 $4
99
100# Montamos la imagen basica.
101ogMountImage "$1" "$2" "img"  >/dev/null
102#  Comprobar que la imagen completa se ha montado.
103ogWaitMountImage "$1" "$2" "img"
104# Sincronizamos la partición con la imagen.
105echo  "[60] $MSG_HELP_ogSyncRestore: $1 $2 img $3 $4"  |tee -a $OGLOGFILE
106ogSyncRestore "$1" "$2" "img" $3 $4
107
108TIMEAUX2=$[SECONDS-TIME2]
109echo "      $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL : $[TIMEAUX2/60]m $[TIMEAUX2%60]s" | tee -a $OGLOGFILE
110
111# Desmontamos imagen basica.
112ogUnmountImage "$1" "$2" "img"
113
114# Restableciendo acl
115ogUnlock $3 $4
116echo "[70] $MSG_HELP_ogRestoreInfoImage" |tee -a $OGLOGFILE
117ogRestoreInfoImage $3 $4  &>>$OGLOGCOMMAND
118
119
120# Llamar al script de post-configuración del sistema operativo.
121echo "[90] $MSG_HELP_configureOs" |tee -a $OGLOGFILE
122configureOs $3 $4  &>>$OGLOGCOMMAND
123
124TIME=$[SECONDS-TIME1]
125echo "[100] $MSG_SCRIPTS_END $MSG_SCRIPTS_TIME_TOTAL: $[TIME/60]m $[TIME%60]s" |tee -a $OGLOGFILE
126
Note: See TracBrowser for help on using the repository browser.