martes, 23 de noviembre de 2010

Restaurar el Sistema tras un desastre, a un punto anterior.

RESTAURAR EL SISTEMA (CON LA MISMA VERSIÓN DE LA DISTRO), TRAS UN DESASTRE , A UN PUNTO ANTERIOR EN EL TIEMPO.

Supongamos que se produce un desastre en nuestro sistema que no podemos arreglar, y queremos volver a tener el sistema lo mas parecido posible a como lo teníamos en un punto anterior en el tiempo: para poder recuperar el sistema (con la misma versión de la distro) a un punto en el que funcionaba correctamente, aplicando lo que se va a explicar,  se necesita tener la partición /home por separado de la partición / y no haber borrado los archivos de la caché de apt: /var/cache/apt/archives

Con lo que se indica a continuación podremos volver a tener nuestro sistema en un estado en el que volverá a funcionar correctamente, como tras una instalación del sistema desde cero, y con los mismos programas que tuviéramos instalados cuando el sistema funcionaba, sin tenerlos que buscar e instalar de uno en uno, e incluso pudiéndolos instalar sin tener conexión a internet.

( Se puede complementar con un programa de copia de seguridad Back in Time con el que se pueden crear "instantáneas" ( snapshots ) de los directorios del sistema que quieras: es buena idea hacer con este programa una copia de los directorios /home, /boot y /etc : copia-de-seguridad-de-nuestra-configuración.)

Los pasos que se indican a continuación se deben hacer en un momento en el que el sistema funciona correctamente para que se pueda recuperar posteriormente si es necesario.

I- Crear archivos de Recuperación:

Paso 1- crear un apt.tgz ( archivo comprimido ) con los repositorios que tienes en Synaptic y las claves de orígenes de Software: para ello se ejecuta en la terminal el comando:


sudo tar zcvf apt_`date +%d%b%y`.tgz /etc/apt/ /var/lib/apt/ /var/cache/apt/

Esto creará en la carpeta de usuario un archivo apt_fecha.tgz  ( por ejemplo apt_16Nov10.tgz )

Paso 2- Crear un archivo con una lista de los paquetes instalados: para ello se ejecuta en la terminal el comando:


sudo apt-get install dselect && dpkg --get-selections | grep -v deinstall | cut -f1> paquetes-totales_`date +%d%b%y`

Esto crea un archivo de nombre paquetes-totales_fecha (por ejemplo paquetes-totales_16nov10 ) en la carpeta de usuario.

Otra forma de guardar una lista de los programas instalados ( crear el archivo paquetes-totales_fecha)  es desde Synaptic -> seleccionas "Instalados" -> Archivo -> Save markings as -> en la ventana que se abre seleccionas "guardar el estado completo, no solo los cambios" y le pones un nombre a la lista - paquetes-totales_fecha - y le das a guardar en /home/usuario.





Con todo esto tenemos una copia de los paquetes instalados en el sistema, de los repositorios, y de las claves de orígenes de software que tienes en un momento dado en el que todo el sistema funciona correctamente.

Estos dos pasos se pueden hacer creando un script de Recuperación (en /home/usuario/Scripts/Recuperación ) , que puede ser ejecutado manualmente cuando queramos, o de forma automatizada como se indica mas abajo. El contenido de dicho script es:

#!/bin/bash
cd /home/usuario
echo Script para crear archivos de recuperación
echo crear el archivo apt_fecha.tgz
sudo tar zcvf apt_`date +%d%b%y`.tgz /etc/apt/ /var/lib/apt/ /var/cache/apt/
echo crear el archivo paquetes-totales_fecha
sudo apt-get install dselect && dpkg --get-selections | grep -v deinstall | cut -f1>paquetes-totales_`date +%d%b%y`
exit

paso 3- Guardas los archivos apt_fecha.tgz y paquetes-totales_fecha en lugar seguro...se supone que /home lo es ya que al recuperar el sistema no se va a formatear dicha partición, pero por si acaso se puede guardar otra copia en  por ejemplo en un pendrive o disco duro externo

-----------------------------------------

II- Recuperar el sistema a como estaba cuando se hizo lo anterior:

¿ Para que sirve esto ? pues para recuperar el sistema si tienes un desastre...

1-Instalas el sistema desde cero (desde el livecd, instalas la misma versión) , formateando la partición / , pero sin formatear la partición /home.

2-Reponemos los repositorios, las llaves y el caché de apt: para ello elegimos el archivo apt_fecha que queramos restaurar, y se ejecuta en la terminal el comando:


sudo tar zxvf  apt_fecha.tgz -C /   ( en el comando se sustituye apt_fecha.tgz por el nombre del archivo correspondiente, por ejemplo por apt_16Nov10.tgz )

3-Reinstalamos todos los paquetes que había antes del desastre: para ello elegimos el archivo paquetes-totales_fecha que queramos restaurar, y luego se ejecuta en la terminal el comando:


sudo apt-get update && sudo apt-get install dselect && sudo apt-get dist-upgrade && sudo dpkg --set-selections < paquetes-totales_fecha  && sudo dselect install ( en el comando se sustituye paquetes-totales_fecha  por el nombre del archivo correspondiente, por ejemplo por  paquetes-totales_16Nov10 )

Y dejará todos los paquetes que había instalados... Quedaría retocar el escritorio solamente, pero si se hizo sobre un sistema con una partición /home separada ni eso. Quizás haya que restaurar el Menú de Aplicaciones, para eso ver: copia de seguridad & recuperar Menú de Aplicaciones

En principio este método si no has borrado la caché, y no has bloqueado ningún archivo... No tiene porqué dañarte nada. Es más, es que si no has borrado la caché lo puedes hasta hacer sin estar conectado a internet... ya que te instalarían los paquetes que están en la caché que previamente has salvado.

----------------------

III Programar/Automatizar la creación de los paquetes de recuperación (apt_fecha.tgz y paquetes-totales_fecha ) :

Lo ideal seria ir guardando versiones sucesivas del archivo apt_fecha.tgz y de paquetes-totales_fecha, y que además se hiciera como una tarea programada automáticamente cada por ejemplo 1 mes ó 1 semana, etc.     ¿ como se puede hacer ?:  Creando el  script  de Recuperación con los comandos arriba indicados - en el apartado I -  y :

1- Automatizando la tarea con el comando crontab , como se explica en http://hatteras-blog.blogspot.com.es/2010/12/crontab-programarautomatizar-tareas.html

2- Ejecutandolo con: el programa gnome-schedule: Ejecutar el programa con permisos de root: sudo gnome-schedule ya que el script que queremos ejecutar con este programa contiene unos comandos que se ejecutan con permisos de root. . Hay que editar la tarea como se indica en la imagen: - comando: la dirección donde se ha guardado el script de Recuperación ( /home/usuario/Scripts/Recuperación)  - modo: comportamiento predeterminado.  - fecha de ejecución: en este ejemplo: todos los miércoles, y sábados ( dias 1,3, 6: lunes, miércoles y sábado), de todos los meses, a las 10:25h



Aquí se explica como usar el programa Gnome-Schedule:  Programar/Automatizar tareas repetitivas con Gnome-Schedule/

----------------------------------------------------------------------

2 comentarios:

  1. El problema, creo, es que si tienes varios usuarios tienes que cambiarles el nombre, ya que sino te da problemas con las carpetas creadas anteriormente, al instalar el usuario principal no tienes problemas pero con el resto si (por lo menos eso me pasaba antes, hace tiempo que no cambio de versión y no se si se ha podido solucionar este pequeño inconveniente)

    ResponderEliminar
  2. Me esta aburriendo lubuntu cada paso es un desastre..

    ResponderEliminar

A la vez que haces un comentario, por favor da una puntuación al tema: malo, normal, bueno o muy bueno.
Gracias.