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!!! :jawdrop: (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 :jawdrop:. 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 ;).
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.


blog comments powered by Disqus