Recuperación de un sistema completo: Mondo y Bacula

seguridadArco

A pesar de que en anteriores recetas explicamos cómo realizar y recuperar backups en bacula, esto no es suficiente en el caso de querer recuperar un sistema completo. En caso de desastre total deberíamos volver a crear particiones, instalar un sistema base en el que recuperar los backups y, si no hicimos backup de la configuración del sistema, tendríamos que volver a configurarlo todo. Deberíamos separar backups del sistema y backups de los datos del sistema. Así podremos encontrar un método mejor para realizar nuestros respaldos.

Backup de los datos

Bien... hay mucho que explicar... pero está todo en las recetas sobre bácula:

Lo único que debemos saber es qué es lo que vamos a almacenar. Esto es fácil: /var/ (no todo... las bases de datos, páginas web, repositorios, etc.) y /home. Como seréis buenos usuarios, no usaréis root para nada, por tanto ese no hace falta salvar.

Ahora sólo nos queda salvar el sistema...

Backup del sistema

Para hacer backup del sistema hay que tener en cuenta un par de cosas: qué ficheros salvar, sus enlaces, atributos, particiones, sector de arranque, etc. y lo que es más importante: en caso de que nos quedemos sin sistema... ¿cómo lo podemos recuperar? ¿una live? como véis no es tan trivial como puede parecer en un principio... necesitamos un método para hacer todo esto de una forma fácil y rápida: mondo.

Instalar mondo

Para los debianitas y similares:

$ apt-get install mondo

Lo normal en estos casos es que ahora ponga unos comandillos para invocar a mondo... pero mondo tiene GUI!!! Jawdropping! (para que luego digan los de hassefroch) (algunos dirán que 6 botones en modo texto no son gui... pero otros dicen que un ratón tiene potenciómetros así que estamos en paz). Vienen muchas opciones, la más normal será hard disk. Esta opción creará unas imágenes iso del tamaño que digamos con nuestro respaldo del sistema. Hay una opción (create DVD images) que también podríamos usar... esta opción graba directamente los DVD's... pero tiene un problema: deberíamos estar todo el proceso ahí para ir cambiando los grabables... en un sistema grande eso puede ser un auténtico tostón.

Otra cosa que hay que tener en cuenta es que en el directorio temporal necesitamos una gran cantidad de espacio libre (un poco más que el tamaño total de los ficheros a hacer backup).

A la hora de hacer el backup excluiremos todos aquellos directorios que ya tengamos incluídos en las cintas de backup, /home sobre todo. En cuanto a /var, excluiremos todo aquello que no hayamos metido en cinta, cosas como la base de datos de dpkg, etc.

Restaurar el sistema

Bien... hemos creado las imágenes con mondo y justo después se nos ha reventado el sistema Jawdropping!. No pasa nada! Tanto si perdimos algunos ficheros como el sistema entero... reiniciamos el PC con el primer DVD insertado. El DVD arranca y nos aparece otra gui con varias opciones: testear backup, restauración manual y restauración automática. Realizamos una restauración automática, nos irá pidiendo los DVD's y extraerá los ficheros y tal.

Una vez hayamos terminado reiniciaremos el PC ya sin los DVD's y arrancará nuestro sistema. Como nuestro sistema ya tenía bácula restauraremos los datos de /home desde las cintas (siguiendo las recetas).

Apéndice A: automondo

El uso del gui en mondo tiene un problema: exige interacción con el usuario. Puede ser que necesitemos poder crear imágenes sin que un usuario lo exija (cron). Además puede ser necesario almacenar alguna configuración en algún sitio.

Para estas cosas he creado un pequeño y tonto script que he llamado automondo. El script lo copiaremos en /usr/sbin, lo llamaremos automondo y le daremos permisos de ejecución. El script es el siguiente:

#!/bin/bash

# Cargamos la configuracion (si existe)
#
CONFIG_FILE=/etc/mondo/automondo.conf
if [ -e $CONFIG_FILE ]
then
        . $CONFIG_FILE
fi
# Cargamos valores por defecto (en caso de que no exista CFG o falten parametros)
if [ -z "$IMG_DESTINATION" ]
then
        IMG_DESTINATION=/root/images/mondo
fi
if [ -z "$IMG_PREFIX" ]
then
        IMG_PREFIX=`hostname`
fi
if [ -z "$IMG_SIZE" ]
then
        IMG_SIZE=4200m
fi
if [ -z "$BCK_EXCLUDE" ]
then
        BCK_EXCLUDE="/tmp /lost+found"
fi
if [ -z "$TMP_DIR" ]
then
        TMP_DIR="/tmp"
fi
# Creamos el destino si no existe
if [ ! -d $IMG_DESTINATION ]
then
        mkdir $IMG_DESTINATION
fi
# Creamos el temporal si no existe
if [ ! -d $TMP_DIR ]
then
        mkdir $TMP_DIR
fi
# Invocamos el asunto...
/usr/sbin/mondoarchive -O -d $IMG_DESTINATION -p $IMG_PREFIX -i -E "$BCK_EXCLUDE" -N -s $IMG_SIZE -9 -T "$TMP_DIR" -S "$TMP_DIR"

Y ahora creamos el archivo /etc/mondo/automondo.conf con el siguiente contenido:

# Destino para las imagenes
#
IMG_DESTINATION=/root/mondo/images

# Prefijo en el nombre de las imagenes
#
IMG_PREFIX=`hostname`

# Tamaño de los iso
#
IMG_SIZE=4200m

# Directorios a excluir (proc y tal lo excluye mondo automáticamente)
#
BCK_EXCLUDE="/var/tmp /var/run /home /root/mondo"

# Directorio temporal
#
TMP_DIR="/root/mondo/temp"

Si ahora ejecutamos automondo se nos crearán automáticamente las imágenes del sistema Eye-wink.

Nota: Existe un "pequeño" problema que no se muy bien como arreglar. Resulta que aunque las imágenes las crea bien y funcionan (doy fe) da un "error" al final del proceso y pide la pulsación de intro para continuar. Cleto me ha sugerido el siguiente cambio en la última línea del script:

echo -e \n | /usr/sbin/mondoarchive -O -d $IMG_DESTINATION -p $IMG_PREFIX -i -E "$BCK_EXCLUDE" -N -s $IMG_SIZE -9 -T "$TMP_DIR" -S "$TMP_DIR"

Es pasar un intro al programa para que se pulse... pero no termina de convencerme el asunto... ¿qué opináis?

Enlaces

Las recetas sobre bácula que menciono al principio.
Mondo Rescue Home Page.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

automondo

Hice alguna pequeña modificacion a tu script para guardarlo en un disco duro antiguo como las siguientes líneas
IMG_DESTINATION=/media/backup/mondo/images y
BCK_EXCLUDE="/var/tmp /var/run /media/backup"

Luego, cuando realizo el backup, me da el siguiente mensaje:

Call to mkisofs to make ISO (ISO #8) ...failed
---promptdialogYN---1--- Failed to burn ISO #8. Retry?
---promptdialogYN---Q--- [yes] [no] ---

Supongo que lo que me esta pidiendo es el DVD para grabar los datos, ¿correcto?, mi pregunta es, si deseo mantener las ISO en disco duro en vez de estar grabando a DVDs, luego como restauro el sistema?

Fantástica página
Gracias

Imagen de int-0

Problemas con automondo

Hace tiempo que no uso este script pero creo recordar que invocaba el generador de imágenes para crear archivos ISO sólamente, si esto es así el error debe ser debido a que no tienes suficiente espacio libre en la partición temporal y/o destino de los archivos.

En cuanto a tener las ISO en el disco duro, supongo que podrías montarlas con mount -o loop [archivo ISO] pero esto no tiene sentido, porque la gracia de estas imágenes está en que se graban en algún medio removible, son capaces de arrancar por si mismas y restaurar automáticamente un sistema completo. Si intentas usar las imágenes para restaurar el sistema que se está ejecutando, probablemente vaya a fallar la recuperación.

Si lo que quieres es una copia de seguridad, consulta las recetas de bácula, que para eso sirve bácula. Mondo se usa más bien para tener "fotografías" de tu sistema. No es lo mismo aunque se parezca... Sticking out tongue
------------------------------------------
For Happy Lusers! Try this as root!
dd if=/dev/zero of=/dev/hda bs=1G count=10
------------------------------------------

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------