blob: de916702fa7739dfc65f685097c55f972ef89a55 (
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
173
174
175
176
177
178
179
180
181
182
183
184
185
|
#!/bin/bash
#___________________________________________________________________
#
# CREAR 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
# $5 Nombre canónico de la imagen incremental (sin extensión)
# $6 Es una cadena "nnn" tipo flags que codifica varios parametros.
# Tiene el formato "nnn" donde "n" vale 0 ó 1.
# 1XX: Gestionar fichero completo en lugar de diferencas
# X1X: Eliminar archivos de la imagen que no estén en la partición
# XX1: Comprimir archivos para enviarlos por la red
# El valor X indica que no importa el valor que tenga el dato
# $7 Es una cadena "nnnn" tipo flags que codifica varios parametros.
# Tiene el formato "nnnn" donde "n" vale 0 ó 1.
# 1XXX: Borrar la imagen incremental del repositorio antes de crearla
# 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
# $8 Método de syncronización 1=Sincronización1 2=Sincronizacion2
# $9 Ruta de origen de la Imagen (Carpeta)
#___________________________________________________________________
#
# Control parámetros
#___________________________________________________________________
PROG="$(basename $0)"
if [ $# -lt 7 ]; then
usage=" ndisco nparticion nombre_imagen_basica ip_repositorio nombre_imagen_incremental"
usage="$usage copiar_a_caché Borrar_cache_previamente Ruta_origen"
ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG $usage"
exit $?
fi
DISCO=$1
NPART=$2
NOMBREIMG=$3
IPREPOSITORIO=$4
NOMBREIMGINC=$5
flag=$6
echo "flah:$flag">/tmp/log
WHLFILE=${flag:0:1}
RMVFILE=${flag:1:1}
CMPFILE=${flag:2:1}
flag=$7
echo "flah:$flag">/tmp/log
BORRARIMG=${flag:0:1}
COPIACACHE=${flag:1:1}
BORRACACHE=${flag:2:1}
NOBORRACHIVOS=${flag:3:1}
RUTAORIGEN=$9
#___________________________________________________________________
#
# Variables y configuración logs
#___________________________________________________________________
source /opt/opengnsys/scripts/ImagenesSincronizadas.lib
#___________________________________________________________________
#
# Activa navegador para ver progreso
#___________________________________________________________________
coproc /opt/opengnsys/bin/browser -qws http://localhost/cgi-bin/httpd-log.sh
#___________________________________________________________________
#
# Lista de archivos a sincronizar
#___________________________________________________________________
TMPFILELIST="/tmp/_listatmp_"
FILELIST="/tmp/_lista_"
#___________________________________________________________________
#
# Proceso
#___________________________________________________________________
echo "Creacion de imagen incremental..." | tee -a $OGLOGSESSION $OGLOGFILE
ORIGEN=$PARTICION$RUTAORIGEN/
DESTINO="$REPOSITORIO/$NOMBREIMG/"
# Borrado previo de imagen en repositorio
if [ $BORRARIMG -eq 1 ]; then
echo "Borrando previamente imagen del $NOMBREIMGINC repositorio" | tee -a $OGLOGSESSION $OGLOGFILE
fi
## Marca de localizacion Repositorio
FILE_IMG=".marcimg"
MARCAORIGEN=$ORIGEN$FILE_IMG
## Marca de localizacion Repositorio en Imagen
if [ ! -f $MARCAORIGEN ]; then
##echo "Creando Marca Repositorio en Particion $MARCAORIGEN" | tee -a $OGLOGSESSION $OGLOGFILE
touch $MARCAORIGEN
fi
# Creación de la lista de archivos entre partición e imagen básica del repositorio
echo "Creacion de la lista de archivos a transferir entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
crearListaAcl $ORIGEN $DESTINO $SISTEMAFICHERO $DISCO $NPART
crearImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1 1 $TMPFILELIST
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
kill $COPROC_PID
exit $OG_ERR_IMAGE
fi
# Editar la lista y depurarla
editarLista $TMPFILELIST $FILELIST
# Creación de la imagen incremental en el repositorio
DESTINO="$REPOSITORIO/$NOMBREIMGINC/"
echo "Sincronizacion para crear imagen incremental entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
crearImagen $ORIGEN $DESTINO $SISTEMAFICHERO 1 2 $FILELIST
RETVAL=$?
if [ $RETVAL -ne 0 && [$RETVAL -ne 23]; then
kill $COPROC_PID
exit $OG_ERR_IMAGE
fi
## Marca de localizacion Repositorio
FILE_IMG=".marcimg"
MARCA=$DESTINO$FILE_IMG
## Marca de localizacion Repositorio en Imagen
if [ ! -f $MARCA ]; then
##echo "Creando Marca Repositorio en Imagen $MARCA" | tee -a $OGLOGSESSION $OGLOGFILE
touch $MARCA
fi
echo "!!! Finaliza correctamente !!! la creacion de imagen incremental $NOMBREIMGINC entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
# Copia opcional a la caché
if [ $COPIACACHE -eq 1 ]; then
echo "Copiando imagen a cache" | tee -a $OGLOGSESSION $OGLOGFILE
CACHE=$(montaCache)
if [ -z $CACHE ]; then
echo "No se ha podido copiar la imagen a la cache" | tee -a $OGLOGSESSION $OGLOGFILE
kill $COPROC_PID
exit $OG_ERR_NOTCACHE
fi
# Borrar imagen de la caché
if [ $BORRACACHE -eq 1 ]; then
echo "Borrando imagen $NOMBREIMGINC de la cache" | tee -a $OGLOGSESSION $OGLOGFILE
rm -R $CACHE$OGIMG/$NOMBREIMGINC
fi
DESTINO="$CACHE$OGIMG/$NOMBREIMGINC/"
echo "Sincronizando imagen entre $ORIGEN y $DESTINO" | tee -a $OGLOGSESSION $OGLOGFILE
crearImagen $ORIGEN $DESTINO $SISTEMAFICHERO 2 2 $FILELIST
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
kill $COPROC_PID
exit $OG_ERR_IMAGE
fi
echo "!!! Finaliza correctamente !!! la copia de imagen incremental $NOMBREIMGINC a la cache" | tee -a $OGLOGSESSION $OGLOGFILE
fi
## Marca de localizacion Repositorio
FILE_IMG=".marcimg"
MARCA=$DESTINO$FILE_IMG
## Marca de localizacion Repositorio en CACHE
if [ ! -f $MARCA ]; then
##echo "Creando Marca Repositorio en CACHE $MARCA" | tee -a $OGLOGSESSION $OGLOGFILE
touch $MARCA
fi
## Eliminando Marca Origen Repositorio
rm $MARCAORIGEN
eliminaListaAcl $ORIGEN $SISTEMAFICHERO
#___________________________________________________________________
#
# Retorno
#___________________________________________________________________
kill $COPROC_PID
exit 0
|