source: client/shared/scripts/restoreBaseImage @ cad1e1b

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 cad1e1b was 1a632ba, checked in by ramon <ramongomez@…>, 12 years ago

Versión 1.0.5, #565: Integrar scripts para crear y restaurar imágenes diferenciales.

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

  • Property mode set to 100755
File size: 3.5 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 "ogUnlockImage $1  /$2.$IMGEXT ; ogUnlock $3 $4; umount $DIRMOUNT"  1 2 3 6 9 14 15
26
27TIME1=$SECONDS
28PROG="$(basename $0)"
29if [ $# -lt 4 ]; then
30    ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG REPO|CACHE imagen ndisco nparticion [ UNICAST|MULTICAST|TORRENT ] [opciones protocolo]"
31    exit $?
32fi
33echo "[1] $0 $*" | tee -a $OGLOGSESSION $OGLOGFILE
34
35
36# Procesar parámetros de entrada
37IMGTYPE="img"
38IMGFILE=$(ogGetPath "$1" "$2.$IMGTYPE")  || exit $(ogRaiseError $OG_ERR_NOTFOUND "$1 $2.$IMGTYPE"; echo $?)
39
40PROTO=${5:-"UNICAST"}
41if [ "$1" == "CACHE" -o "$1" == "cache" ]; then
42   echo "[10] Realizando un updateCache REPO $2.img $PROTO $6" | tee -a $OGLOGSESSION $OGLOGFILE
43   echo "   updateCache REPO" "/$2.img" "$PROTO" "$6"
44# PARA LAS PRUEBAS lo comentamos
45#   updateCache REPO "/$2.img" "$PROTO" "$6"     &>> $OGLOGCOMMAND
46   RETVAL=$?
47   if [ "$RETVAL" != "0" ]
48        then
49        echo "[49] Fin del updateCache REPO $2.img $5 $6 con error $RETVAL" | tee -a $OGLOGSESSION $OGLOGFILE
50        # RC=15 No hay cache
51        # RC=16 no hay espacio sufiente
52        exit $RETVAL
53   fi
54fi
55
56TIME2=$SECONDS
57
58PART=$(ogDiskToDev "$3" "$4") || exit $?
59
60# Restaurar la imagen.
61echo "[40] Restaurar imagen en $PART"
62DEST=$(ogMount "$3" "$4")
63DIRMOUNT="/tmp/mount$$"
64IMGINFO="$DEST/ogimg.info"
65IMGACL="ogimg.acl"
66
67# Montamos la imagen basica.
68ogLock $3 $4
69ogLockImage "$1"  "/$2.$IMGEXT"
70
71mkdir $DIRMOUNT
72echo "   mount -t squashfs -o loop  $IMGFILE $DIRMOUNT"
73mount -t squashfs -o loop  $IMGFILE $DIRMOUNT 1>/dev/null
74# Comprobamos que la imagen se ha montado -> si no se borra la particion
75[ -r "$DIRMOUNT/ogimg.info" ] || echo "Error al montar la imagen" || exit 2
76
77# Restauramos la imagen
78echo "   rsync -aHAX --delete --quiet $DIRMOUNT/ $DEST"
79rsync -aHAX --delete --quiet $DIRMOUNT/ $DEST |tee -a $OGLOGSESSION $OGLOGFILE
80umount $DIRMOUNT
81ogUnlockImage "$1"  "/$2.$IMGEXT"
82TIMEAUX2=$[SECONDS-TIME2]
83echo "   Fin Restauracion: tiempo parcial : $[TIMEAUX2/60]m $[TIMEAUX2%60]s" | tee -a $OGLOGSESSION $OGLOGFILE
84
85# Restableciendo acl
86
87if [ $(ogGetFsType $3 $4) == "NTFS" ] ; then
88        echo "[70] Restablecioendo lista de control de acceso."
89        cp $DEST/$IMGACL /tmp
90        ogUnmount "$3" "$4"
91        echo "   ntfs-3g.secaudit -se $PART"
92        ntfs-3g.secaudit -se $PART /tmp/$IMGACL
93        TIMEAUX3=$[SECONDS-TIMEAUX2]
94        echo "   Fin restablecer lista de control de acceso, tiempo parcial  : $[TIMEAUX3/60]m $[TIMEAUX3%60]s" | tee -a $OGLOGSESSION $OGLOGFILE
95fi
96ogUnlock $3 $4
97
98# Llamar al script de post-configuración del sistema operativo.
99echo "[90] Post-configuracion de arranque del sistema."
100configureOs $3 $4
101
102TIME=$[SECONDS-TIME1]
103echo "[100] Duracion de la operacion $[TIME/60]m $[TIME%60]s"
104
Note: See TracBrowser for help on using the repository browser.