source: admin/Interface/ImagenesSincronizadas.lib @ ac8b8f58

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 ac8b8f58 was 9204a04, checked in by ramon <ramongomez@…>, 12 years ago

Versión 1.0.5, #565: Integrar cambios en comandos para crear y restaurar imágenes incrementales.

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

  • Property mode set to 100755
File size: 9.3 KB
Line 
1#!/bin/bash
2#___________________________________________________________________
3#
4#@file    ImagenesSincronizadas.lib
5#@brief   Librería o clase ImagenesSincronizadas
6#@class   ImagenesSincronizadas
7#@brief   Funciones para la creación y restauración de imagenes por sincronización.
8#@version 1.0.4
9#@warning License: GNU GPLv3+
10#___________________________________________________________________
11
12                #Load engine configurator from engine.cfg file.
13                #Carga el configurador del engine desde el fichero engine.cfg
14                [ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg
15               
16                # Clear temporary file used as log track by httpdlog
17                # Limpia los ficheros temporales usados como log de seguimieincludento para httpdlog
18                echo " " > $OGLOGSESSION; echo " " > $OGLOGCOMMAND; echo " " > ${OGLOGCOMMAND}.tmp
19               
20                # Registro de inicio de ejecución
21                #echo "[START Interface ] Run this command: $0 $*" | tee -a $OGLOGSESSION $OGLOGFILE
22                echo "$MSG_INTERFACE_START $0 $*" | tee -a $OGLOGSESSION $OGLOGFILE
23               
24                # Solo ejecutable por OpenGnSys Client.
25                PATH=$PATH:$(dirname $0)
26                PROG=$(basename $0)
27                CALLER=$(ogGetCaller)
28                if [ "$CALLER" != "ogAdmClient" ]; then
29                        ogRaiseError $OG_ERR_NOTEXEC "$CALLER -> $PROG"
30                        exit $?
31                fi
32               
33                #___________________________________________________________________
34                #       
35                # Variables globales
36                #___________________________________________________________________
37
38                TIPOPARTICION="$(ogGetPartitionId $DISCO $NPART)"; # Tipo de particion 
39                SISTEMAFICHERO="$(ogGetOsType $DISCO $NPART)" # Sistema de ficheros     
40                PARTICION=$(ogMount $DISCO $NPART); # Monta partición   
41                REPOSITORIO="usuog@$IPREPOSITORIO::imagenes" # Ruta de las imagenes en el repositorio
42               
43                # Borrar archivos en destino
44                OP_DELETE="--delete"
45                if [ $NOBORRACHIVOS -eq 1 ]; then
46                        OP_DELETE=""
47                fi     
48               
49                FILE_ACL="ogwinimage.acl"
50
51                #___________________________________________________________________
52                #
53                # Crea un fichero con la clave remota del rsync y actualiza el
54                # parámetro "--password-file" para que no se pida ésta en el proceso.
55                #___________________________________________________________________
56                #
57                f="/tmp/passrsync" # Creación del archivo de claves
58                echo "passusuog">$f # Escribe dentro la clave remota
59                chmod 400 $f # Es obligatorio que el archivo de claves tenga estos permisos
60                FILE_PASSWD="--password-file=$f"
61       
62       
63        #___________________________________________________________________
64        #
65        #       Función: montaCache
66        #
67        #       Descripción:
68        #
69        #               Monta la cache y devuelve la ruta hacía ella
70        #
71        #       Parámetros:
72        #       
73        #               Ninguno
74        #___________________________________________________________________
75        #
76        function montaCache()
77        {       
78                # Error si no existe caché
79                if ! $(ogFindCache >/dev/null); then
80                        echo ""
81                        return
82                fi
83                cache=$(ogMountCache)
84                echo $cache
85        }
86        #___________________________________________________________________
87        #
88        #       Función: editarLista
89        #
90        #       Descripción:
91        #
92        #               Edita lista de archivos a transferir para depurar lineas
93        #
94        #       Parámetros:
95        #       
96        #               $1 Lista de entrada
97        #               $2 Lista de salida
98        #___________________________________________________________________
99        #
100        function editarLista()
101        {       
102                # Edición:
103                #       a) Quitarle lineas que contengan './'
104                #       b) La primera linea (reporter del rsync)
105                #       c) Las dos últimas lineas del final (reporter del rsync)
106               
107                echo "Editando lista de archivos Entrada:$1 Salida:$2" | tee -a $OGLOGSESSION $OGLOGFILE
108                cat $1 | sed '/\.\//d' | sed '1d' | sed -n -e :a -e '1,2!{P;N;D;};N;ba'>$2
109                #sed -i -e s/"^sent.*.bytes\/sec"//g  -e s/^total.*.speedup.*.$//g -e s/"sending.*.list"//g lista_img
110
111        }       
112       
113        #___________________________________________________________________
114        #
115        #       Función: crearImagen
116        #
117        #       Descripción:
118        #
119        #               Sincroniza archivos entre origen y destino. Al final del
120        #               proceso el contenido de destino será igual al de origen.
121        #               La creación de imagen siempre tiene lugar entre una partición
122        #               y un repositorio como origen y destino respectivamente.
123        #
124        #       Parámetros:
125        #       
126        #               $1: Origen
127        #               $2: Destino
128        #               $3: Sistema de ficheros de la partición
129        #               $4: Indica si la sincronización es local o remota
130        #                               1: El origen o el destino es remoto
131        #                               2: Tanto el origen como el destino son locales
132        #               $5: Vale
133        #                               1=Para crear la lista de archivos a transferir
134        #                               2= Cuando se quiere sincronizar usando la lista
135        #               $6: Path a la lista de archivos
136        #___________________________________________________________________
137        #
138        function crearImagen()
139        {
140                case "$3" in
141                        Windows)
142                                OP_ARCHIVO="-aH"
143                                OP_EXCLUDE="--exclude '$1pagefile.sys'"
144                        ;;
145                        Linux)
146                                OP_ARCHIVO="-alH"
147                                OP_EXCLUDE="--exclude '/tmp ..exclude '/proc' --exclude='/sys'"
148                        ;;
149                esac
150
151
152                case "$4" in
153                        1)
154                                OP_PASSWD=$FILE_PASSWD
155                        ;;
156                        2)
157                                OP_PASSWD=""
158                        ;;
159                esac
160               
161                FREG=$OGLOGCOMMAND # Por defecto se redirecciona al archivo de log de comandos 
162                case "$5" in
163                        1)
164                                OP_ARCHIVO=$OP_ARCHIVO"nv" # Simulación para crear lista
165                                FREG=$6
166                        ;;
167                        2)
168                                OP_FILELIST="--files-from=$6"
169                                OP_ARCHIVO="$OP_ARCHIVO $OP_FILELIST"
170                        ;;
171                esac
172
173
174                echo "rsync $OP_ARCHIVO $OP_DELETE $OP_EXCLUDE $OP_PASSWD $1 $2 " | tee -a $OGLOGSESSION $OGLOGFILE
175                rsync $OP_ARCHIVO $OP_DELETE $OP_EXCLUDE $OP_PASSWD $1 $2>$FREG;
176        }
177       
178        #___________________________________________________________________
179        #
180        #       Función: restaurarImagen
181        #
182        #       Descripción:
183        #
184        #               Sincroniza archivos entre origen y destino. Al final del
185        #               proceso el contenido de destino será igual al de origen.
186        #               La restauración de imagen siempre tiene lugar entre la caché
187        #               o un repositorio y una partición o carpeta como origen y destino
188        #               respectivamente.
189        #
190        #       Parámetros:
191        #       
192        #               $1: Origen
193        #               $2: Destino
194        #               $3: Sistema de ficheros de la partición
195        #               $4: Indica si la sincronización es local o remota
196        #                       1: El origen o el destino es remoto
197        #                       2: Tanto el origen como el destino son locales
198        #___________________________________________________________________
199        #
200        function restaurarImagen()
201        {
202                case "$3" in
203                        Windows)
204                                OP_ARCHIVO="-aH"
205                        ;;
206                        Linux)
207                                OP_ARCHIVO="-alH"
208                        ;;
209                esac
210               
211                case "$4" in
212                        1)
213                                OP_PASSWD=$FILE_PASSWD
214                        ;;
215                        2)
216                                OP_PASSWD=""
217                        ;;
218                esac
219                echo "rsync $OP_ARCHIVO $OP_DELETE $OP_PASSWD $1 $2" | tee -a $OGLOGSESSION $OGLOGFILE
220                rsync $OP_ARCHIVO $OP_DELETE $OP_PASSWD $1 $2>$OGLOGCOMMAND;
221        }
222       
223        #___________________________________________________________________
224        #
225        #       Función: crearListaAcl
226        #
227        #       Descripción:
228        #
229        #               Crea la lista de control de archivos para el sistema operativo
230        #               que ocupa la partición que se quiere clonar
231        #
232        #       Parámetros:
233        #       
234        #               $1: Origen
235        #               $2: Destino
236        #               $3: Sistema de ficheros de la partición
237        #               $4: disco
238        #               $5: partición
239        #___________________________________________________________________
240        #
241        function crearListaAcl()
242        {
243                case "$3" in
244                        Windows)
245                                echo "Creando lista de control de acceso a ficheros para el sistema windows de la particion $5" | tee -a $OGLOGSESSION $OGLOGFILE
246                                echo "Desmontando la particion $5" | tee -a $OGLOGSESSION $OGLOGFILE
247                                ogUnmount $4 $5 | tee -a $OGLOGSESSION $OGLOGFILE
248                                echo "Ejecutando comando ntfs-3g.secaudit -b /dev/sda$5 /" | tee -a $OGLOGSESSION $OGLOGFILE
249                                ntfs-3g.secaudit -b /dev/sda$5 / > /tmp/$FILE_ACL
250                                echo "Montando de nuevo la particion $5" | tee -a $OGLOGSESSION $OGLOGFILE                             
251                                ogMount $4 $5
252                                echo "Copiando archivo de listas de control (ACL) desde /tmp/$FILE_ACL a $1." | tee -a $OGLOGSESSION $OGLOGFILE                         
253                                cp /tmp/$FILE_ACL $1.
254                        ;;
255                        Linux)
256
257                        ;;
258                esac
259        }       
260        #___________________________________________________________________
261        #
262        #       Función: restauraListaAcl
263        #
264        #       Descripción:
265        #
266        #               Restaura la lista de control de archivos para el sistema operativo
267        #               que ocupa la partición que se quiere restaurar
268        #
269        #       Parámetros:
270        #       
271        #               $1: Origen
272        #               $2: Destino
273        #               $3: Sistema de ficheros de la partición
274        #               $4: disco
275        #               $5: partición
276        #___________________________________________________________________
277        #
278        function restauraListaAcl()
279        {
280                case "$3" in
281                        Windows)
282
283                                echo "Restaurando lista de control de acceso a ficheros para el sistema windows de la particion $5" | tee -a $OGLOGSESSION $OGLOGFILE   
284                                echo "Copiando archivo de listas de control (ACL) desde $2$FILE_ACL a /tmp/." | tee -a $OGLOGSESSION $OGLOGFILE                         
285                                cp $2$FILE_ACL /tmp/.
286                                echo "Desmontando la particion $5" | tee -a $OGLOGSESSION $OGLOGFILE
287                                ogUnmount $4 $5 | tee -a $OGLOGSESSION $OGLOGFILE
288                                echo "Ejecutando comando ntfs-3g.secaudit -se /dev/sda$5 /" | tee -a $OGLOGSESSION $OGLOGFILE
289                                ntfs-3g.secaudit -se /dev/sda$5 /tmp/$FILE_ACL
290                                echo "Montando de nuevo la particion $5" | tee -a $OGLOGSESSION $OGLOGFILE                             
291                                ogMount $4 $5
292                                echo "Borrando archivo de listas de control (ACL) de $2$FILE_ACL" | tee -a $OGLOGSESSION $OGLOGFILE                             
293                                rm $2$FILE_ACL
294                        ;;
295                        Linux)
296
297                        ;;
298                esac
299        }       
300        #___________________________________________________________________
301        #
302        #       Función: eliminaListaAcl
303        #
304        #       Descripción:
305        #
306        #               Elimina la lista de control de archivos creada temporalmente
307        #               para el proceso de creación e imagen
308        #
309        #       Parámetros:
310        #       
311        #               $1: Origen
312        #               $2: Sistema de ficheros de la partición
313        #___________________________________________________________________
314        #
315        function eliminaListaAcl()
316        {
317                case "$2" in
318                        Windows)
319                                echo "Borrando archivo de listas de control (ACL) de $1$FILE_ACL" | tee -a $OGLOGSESSION $OGLOGFILE                             
320                                rm $1$FILE_ACL
321                        ;;
322                        Linux)
323
324                        ;;
325                esac
326        }       
Note: See TracBrowser for help on using the repository browser.