summaryrefslogtreecommitdiffstats
path: root/admin/Interface/RestaurarSoftIncremental
blob: f1afc5be94a7683dfc51b49b90bec875a10951cf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
#!/bin/bash
#___________________________________________________________________
#
#  RESTAURAR IMAGEN INCREMENTAL
#___________________________________________________________________
#
# Parámetros recibidos desde el cliente:
#
# $1 Número de disco
# $2 Número de particion
# $3 Nombre canónico de la imagen básica (sin extensión)
# $4 Dirección del repositorio (Si es 0.0.0.0 es caché)
# $5 Nombre canónico del software incremental (sin extensión)
# $5 Es una cadena "nnnn" tipo flags que codifica varios parametros.
#		Tiene el formato "nnnn" donde "n" vale 0 ó 1.	
#		1XXX: Borrar la particion de destino antes de restaurar la imagen incremental
#		X1XX: Copiar Imagen incremental también a la cache 
#		XX1X: Borrar previamente la imagen incremental de la cache antes de copiarla
#		XXX1: No borrar archivos en destino
#		El valor X indica que no importa el valor que tenga el dato
# $7 Método de clonación 0=Desde caché 1=Desde repositorio
# $8 Ruta de origen de la Imagen (Carpeta)
#___________________________________________________________________
#
# Control parámetros
#___________________________________________________________________

	PROG="$(basename $0)"
	if [ $# -lt 6 ]; then
		usage=" ndisco nparticion nombre_imagen_basica ip_repositorio copiar_a_caché "
		usage="$usage Borrar_cache_previamente metodo_clonación Ruta_origen"
		ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG $usage"
		exit $?
	fi
	
	DISCO=$1
	PARTICION=$2
	NOMBREIMG=$3
	IPREPOSITORIO=$4
	NOMBREIMGINC=$5
	
	flag=$6
	echo "flah:$flag">/tmp/log
	BORRARIMG=${flag:0:1}
	COPIACACHE=${flag:1:1}
	BORRACACHE=${flag:2:1}
	NOBORRACHIVOS=${flag:3:1}
	
	METCLONA=$7
	RUTAORIGEN=$8
#___________________________________________________________________
#
# Variables y configuración logs
#___________________________________________________________________
	
	source /opt/opengnsys/interfaceAdm/ImagenesSincronizadas.lib
#___________________________________________________________________
#
# Proceso
#___________________________________________________________________

	echo "Restauracion de imagen incremental..." | tee -a $OGLOGSESSION $OGLOGFILE
	
	# Borrado previo de la partición
	if [ $BORRARIMG -eq 1 ]; then
		if [ -n $RUTAORIGEN ]; then
			echo "Borrando carpeta $PARTICION$RUTAORIGEN" | tee -a $OGLOGSESSION $OGLOGFILE
		    rm -R $PARTICION$RUTAORIGEN		
		else
			echo "Formateando la particion" | tee -a $OGLOGSESSION $OGLOGFILE
			ogFormat $DISCO $PARTICION $TIPOPARTICION
			RETVAL=$?	
			if [ $RETVAL -ne 0 ]; then
			   exit $OG_ERR_PARTITION
			fi 
		fi	   
	fi

	# Sincronización desde repositorio
	if [ $METCLONA = 1 ]; then
		if [ $COPIACACHE = 0 ]; then	
			echo "Restaurando imagen basica desde repositorio $IPREPOSITORIO" | tee -a $OGLOGSESSION $OGLOGFILE
			ORIGEN="$REPOSITORIO/$NOMBREIMG/"	
			DESTINO=$PARTICION$RUTAORIGEN/	
			# Restauración de la imagen básica
			echo "Sincronizando imagen basica entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
			restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1
			RETVAL=$?
			if [ $RETVAL -ne 0 ]; then
			   exit $OG_ERR_IMAGE
			fi 

			# Restauración de la imagen incremental
			echo "Restaurando imagen incremental desde repositorio $IPREPOSITORIO" | tee -a $OGLOGSESSION $OGLOGFILE
			ORIGEN="$REPOSITORIO/$NOMBREIMGINC/"	
			DESTINO=$PARTICION$RUTAORIGEN/	
			OP_DELETE=""
			# Restauración de la imagen incremental
			echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
			restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1
			RETVAL=$?
			exit $RETVAL
		fi		
	fi	
	
	# Restauración desde la caché
	echo "Restaurando desde la cache" | tee -a $OGLOGSESSION $OGLOGFILE
	
	# Comprobar si existe caché
	CACHE=$(montaCache)
	if [ -z $CACHE ]; then
		echo "No se ha podido restaurar la imagen desde la cache" | tee -a $OGLOGSESSION $OGLOGFILE
        ogRaiseError $OG_ERR_NOTCACHE "CACHE"
        exit $?
	fi			

	# Borrar imagen de la caché
	if [ $BORRACACHE -eq 1 ]; then
		echo "Borrando imagen basica $NOMBREIMG de la cache" | tee -a $OGLOGSESSION $OGLOGFILE
	    rm -R $CACHE$OGIMG/$NOMBREIMG
		echo "Borrando imagen incremental $NOMBREIMGINC de la cache" | tee -a $OGLOGSESSION $OGLOGFILE
	    rm -R $CACHE$OGIMG/$NOMBREIMGINC
	fi
	
	# Actualización de la caché
	echo "Actualizando cache local desde repositorio $IPREPOSITORIO" | tee -a $OGLOGSESSION $OGLOGFILE
	
	ORIGEN="$REPOSITORIO/$NOMBREIMG/"
	DESTINO="$CACHE$OGIMG/$NOMBREIMG/"
	echo "Sincronizando imagen basica entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
	restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1	
	RETVAL=$?	
	if [ $RETVAL -ne 0 ]; then
	   exit $OG_ERR_IMAGE
	fi			
	ORIGEN="$REPOSITORIO/$NOMBREIMGINC/"
	DESTINO="$CACHE$OGIMG/$NOMBREIMGINC/"
	echo "Sincronizando imagen incremental entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
	restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1	
	RETVAL=$?	
	if [ $RETVAL -ne 0 ]; then
	   exit $OG_ERR_IMAGE
	fi	

	# Restauración desde caché a la partición
	
	echo "Copiando imagen basica a la partición desde cache local" | tee -a $OGLOGSESSION $OGLOGFILE
	ORIGEN="$CACHE$OGIMG/$NOMBREIMG/"
	DESTINO=$PARTICION$RUTAORIGEN/	
	echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
	restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 2	
	RETVAL=$?	
	if [ $RETVAL -ne 0 ]; then
	   exit $OG_ERR_IMAGE
	fi
	
	echo "Copiando imagen incremental a la partición desde cache local" | tee -a $OGLOGSESSION $OGLOGFILE
	ORIGEN="$CACHE$OGIMG/$NOMBREIMGINC/"
	DESTINO=$PARTICION$RUTAORIGEN/	
	OP_DELETE=""
	echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
	restaurarImagen $ORIGEN $DESTINO $SISTEMAFICHERO 2	
	RETVAL=$?	
	if [ $RETVAL -ne 0 ]; then
	   exit $OG_ERR_IMAGE
	fi
#___________________________________________________________________
#
# Retorno
#___________________________________________________________________

	exit 0