source: client/shared/scripts/restoreDiffImage @ 831830f

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 831830f 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: 3.6 KB
Line 
1#!/bin/bash
2#/**
3#         restoreiDiffSquash
4#@brief Script de ejemplo para restaurar una imagen diferencial.
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: Se puede dar la opcion de que mantenga los ficheros nuevos.
18#@todo: Se puede dar la opcion que la trasferencia se manden los datos comprimidos.
19#@version 1.0 - restauración de imagen con sincronizacion.
20#@author 
21#@date   2012-12-04
22#*/ ##
23trap "ogUnlockImage $1  /$2.$IMGEXT ; ogUnlock $3 $4; umount $DIRMOUNT; exit 1" 1 2 3 6 9 14 15
24
25# Limpiamos los archivo de log
26echo "" >$OGLOGCOMMAND
27
28TIME1=$SECONDS
29PROG="$(basename $0)"
30if [ $# -lt 4 ]; then
31    ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG REPO|CACHE imagen[.sujijo] ndisco nparticion [ UNICAST|MULTICAST|TORRENT ] [opciones protocolo]"
32    exit $?
33fi
34
35echo "[1] $MSG_SCRIPTS_START $0 $*" | tee -a  $OGLOGFILE
36
37# Procesar parámetros de entrada
38DIFFEXT="diff"
39REPODIFFFILE=$(ogGetPath "REPO" "$2.$DIFFEXT") || exit $(ogRaiseError $OG_ERR_NOTFOUND "$2.$DIFFEXT"; echo $?)
40
41# Comprobamos si la imagen o la particion estan bloqueada:
42ogIsImageLocked "$1" "$2.$DIFFEXT" && exit $(ogRaiseError $OG_ERR_LOCKED "$1 $2.$DIFFEXT"; echo $?)
43ogIsLocked "$3" "$4" && exit $(ogRaiseError $OG_ERR_LOCKED  "$3 $4"; echo $?)
44
45# Carga del configurador del engine
46[ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg
47
48# Comprobar que es sincronizable
49# TODO: crear mensaje de error.
50file $REPODIFFFILE | grep " BTRFS Filesystem" >/dev/null
51[ $? == 0 ]  ||  exit  $(ogRaiseError $OG_ERR_IMAGE "$3 $4"; echo $?)
52
53PROTO=${5:-"UNICAST"}
54
55if [ "$1" == "CACHE" -o "$1" == "cache" ]; then
56   echo "[10] Realizando la actualizacion de la cache." | tee -a  $OGLOGFILE
57   echo "     updateCache REPO" "/$2.$DIFFEXT" "$PROTO" "$6"  | tee -a  $OGLOGFILE   
58   updateCache REPO "/$2.$DIFFEXT" "$PROTO" "$6"  &>> $OGLOGCOMMAND
59   RETVAL=$?
60   if [ "$RETVAL" != "0" ]
61        then
62        echo "[49] Fin del updateCache REPO $2.$DIFFEXT $5 $6 con error $RETVAL" | tee -a  $OGLOGFILE
63        # RC=15 No hay cache
64        # RC=16 no hay espacio sufiente
65        exit $RETVAL
66   fi
67
68   TIMEAUX1=$[SECONDS-TIME]
69   echo "     Fin actualizacion cache $1 $2 $3 $4 tiempo parcial : $[TIMEAUX2/60]m $[TIMEAUX2%60]s" | tee -a  $OGLOGFILE
70fi
71TIME2=$SECONDS
72
73PART=$(ogDiskToDev "$3" "$4" 2>/dev/null )  || exit $(ogRaiseError $OG_ERR_PARTITION "$1 $2"; echo $?)
74
75# Restaurar la imagen.
76echo "[40] Restaurar imagen en $PART"
77
78
79# Montamos la diferencial
80ogMountImage "$1" "$2" "diff"
81#  Comprobar que la imagen diferencial se ha montado
82ogWaitMountImage "$1" "$2" "diff"
83
84ogMount $3 $4 >/dev/null
85ogLock $3 $4
86# Sincronizamos la partición con la imagen.
87ogSyncRestore "$1" "$2" "diff" $3 $4
88
89# Desmontamos la imagen
90ogUnmountImage "$1" "$2" "diff"
91
92ogUnlock $3 $4
93# creando enlaces y restableciendo ACL (en windows)
94echo "     Diferencial: creando enlaces y borrando"  | tee -a  $OGLOGFILE
95ogRestoreInfoImage  "$3" "$4" &>$OGLOGCOMMAND
96
97TIMEAUX2=$[SECONDS-TIME2]
98echo "     Fin Restauracion $1 $2 $3 $4 tiempo parcial : $[TIMEAUX2/60]m $[TIMEAUX2%60]s" | tee -a  $OGLOGFILE
99
100
101# Llamar al script de post-configuración del sistema operativo.
102echo "[90] Post-configuracion de arranque del sistema."
103configureOs $3 $4
104
105
106TIME=$[SECONDS-TIME1]
107echo "[100] Duracion de la operacion $[TIME/60]m $[TIME%60]s"
108
Note: See TracBrowser for help on using the repository browser.