Automatización


 

 

 

 

Exponemos dos casos reales y típicos en los ordenadores de hoy día.

 

 

Ejemplo 1.

Con restaurador en el mismo equipo

 

 

Tenemos un ordenador con la siguiente configuración:

Partición 1, sda1, Windows, con NTFS.

Partición 2, sda2, Datos, con NTFS.

Partición 3, sda3, Windows rescate, con NTFS.

 

Con Gparted lo dejaremos, por ejemplo, así:

Partición 1, sda1, Windows, con NTFS.

Partición 2, sda2, Linux, con ext3.

Partición 3, sda3, Intercambio, con swap.

Partición 4, sda4, Linux rescate, con ext3.

 

Tras dejar Windows y Linux como deseamos, con todos los drivers, con todas las instalaciones, configuraciones, optimizaciones, y todas las ...ciones que nos parezcan, vamos a construir una partición de rescate mejor que la que teníamos, pues también soportará nuestra partición Linux.

 

Instalamos cualquier mini-distribución en la partición de rescate, asegurándonos de que disponemos de las herramientas que vamos a utilizar, por ejemplo, SystemRescueCD o GALPon MiniNo.

 

SCRIPT_COPIAWIN

#!/bin/bash
           mkdir -p /opt/backups
           rm /opt/backups/copia_win.00*
           rm /opt/backups/*.tmp
           partimage --finish=3 -b -z1 -c -o -d save /dev/sda1 /opt/backups/copia_win

 

SCRIPT_COPIALIN

#!/bin/bash
           mkdir -p /opt/backups
           rm /opt/backups/copia_lin.00*
           rm /opt/backups/*.tmp
           partimage --finish=3 -b -z1 -c -o -d save /dev/sda2 /opt/backups/copia_lin

 

SCRIPT_RESTAURAWIN

#!/bin/bash

          partimage --finish=3 -b restore /dev/sda1 /opt/backups/copia_win.000

 

SCRIPT_RESTAURALIN

#!/bin/bash

          partimage --finish=3 -b restore /dev/sda2 /opt/backups/copia_lin.000

 

 

Esto es básicamente lo que deben hacer los scripts. Luego podemos añadirles todos los adornos que queramos, mensajes explicando qué se va a hacer, avisos de que se va a sobreescribir una partición, etc...

 

TRUCO 1.

Añadimos un pequeño menú gráfico con Zenity

 

operacion=$(zenity --list --text "¿Qué operación desea realizar?" --radiolist --column "Elija" --column "Operación" TRUE "Copia de la partición Windows" FALSE "Copia de la partición Linux" FALSE "Restaurar Windows" FALSE "Restaurar Linux")

 

case "$operacion" in
         "Copia de la partición Windows")
                 SCRIPT_COPIAWIN ;;
         "Copia de la partición Linux")
                 SCRIPT_COPIALIN ;;
         "Restaurar Windows")
                 SCRIPT_RESTAURAWIN;;
         "Restaurar Linux")
                 SCRIPT_RESTAURALIN;;
esac

 

TRUCO 2.

Realizamos previamente una simulación de volcado

Otro detalle que se puede incluir es que realice una simulación de volcado antes de hacer el auténtico por si la imagen o el disco están corruptos:

 

partimage --finish=3 --simulate -b restore /dev/sda1 /opt/backup/copia_win.000

 

#Comprobamos que terminó correctamente la simulación y en caso afirmativo hacemos el volcado real.
    if [ $? -eq 0 ];then
            clear;echo "Parece que todo fue bien. Procedemos al volcado..."
            sleep 5
            partimage --finish=3 -b restore /dev/sda1 /opt/backup/copia_win.000
    else
            echo "La imagen está corrupta o no se terminó de hacer correctamente."
        sleep 5
        exit
    fi

 

 

TRUCO 3.

Copiar o restaurar desde el inicio todo automatizado.

 

Si ponemos los scripts en el inicio del sistema conseguiremos que sea lo primero que vea el usuario.

Pero además de esto, podemos hacer que el usuario lo único que tenga que hacer sea elegir una entrada del menú de GRUB y sentarse a esperar cómodamente a que su sistema se restaure solo.

 

El truco está en la línea /proc/cmdline donde se guarda la línea elegida en el GRUB con todos sus parámetros.

Lo que haremos será inventarnos un parámetro "carga" y añadirlo a la línea de GRUB, por ejemplo, una línea típica de grub puede ser esta:

 

kernel /vmlinuz root=/dev/sda2 ro vga=768 quiet splash

 

Nosotros añadiremos una como esta:

 

kernel /vmlinuz root=/dev/sda2 ro vga=768 quiet splash carga=restaurawin

 

Luego en nuestro script lanzado en el inicio (podría ser incluso en /etc/rc.local antes de cargar las X), analizaríamos dicha línea para conseguir el parámetro que necesitamos:

 

carga=`cat /proc/cmdline | awk -F 'carga=' '{print $2}' | awk '{print $1}'`

 

cat          lee cmdline

awk        toma "carga=" como separador de campos

print $2   toma el segundo campo, toma todo lo que haya a la derecha de "carga="

print $1   es para tomar el primer elemento de lo que haya a la derecha (es solo por precaución)

 

Y de nuevo usaríamos una estructura "case" para analizar la variable "carga" y actuar en consecuencia...

A modo de ejemplo:

 

case "$carga" in

     'copiawin')

          SCRIPT_COPIAWIN;;

     'copialin')

          SCRIPT_COPIALIN;;

     'restaurawin')

          SCRIPT_RESTAURAWIN;;

     'restauralin')

          SCRIPT_RESTAURALIN;;

     'reproductor_multimedia')

          SCRIPT_LANZA_XBMC

esac

 

 

 

 

Ejemplo 2.

Con restaurador fuera del equipo, dvd o usb externo

 

Imagina: metemos nuestro DVD/USB de rescate, encendemos el ordenador y en varios minutos, se restaura nuestro sistema impecable tal y como estaba el día que hicimos la imagen.

 

En esta ocasión usaremos un pequeño LiveCD llamado SystemRescueCD que ya incluye partimage. Sólo hay que añadir al CD un archivo llamado "autorun", que contendrá un script con los comandos necesarios para hacer la copia o la restauración.

 

 

Caso 1.

La imagen la tenemos en el disco duro y queremos que se restaure automáticamente.

 

1) Creamos un archivo ejecutable llamado autorun, por ejemplo y a modo de idea, con el siguiente contenido:

 

#!/bin/bash

mkdir /mnt/sda5 ; mount /dev/sda5 /mnt/sda5

partimage --finish=2 -b restore /dev/sda1 /mnt/sda5/copia_win.000

 

#--finish=2 para que reinicie si todo fue bien   -b  para que no haga preguntas

 

 

2) Grabamos la ISO de SystemRescueCD dejando el CD abierto sin cerrar la sesión y luego incluiremos el archivo autorun en la siguiente sesión (en K3b pulsa en la pestaña de avanzado para seleccionar “iniciar cd multisesión”).

 

 

 

Caso 2.

Las imágenes las tenemos en el DVD/USB y queremos que se restauren automáticamente.

 

1) Creamos el archivo autorun:

 

#!/bin/bash

# Restauramos la tabla de particiones

sfdisk --force /dev/hda < tabla

sync; partprobe

 

partimage --finish=3 -b restore /dev/sda1 /mnt/cdrom/copia_win.000

partimage --finish=2 -b restore /dev/sda2 /mnt/cdrom/copia_lin.000

 

 

2) Igual que antes, copiamos todo a un DVD/USB con todos los archivos (imágenes+tabla+autorun) en una segunda sesión.

 

Si es un DVD, se pueden hacer dos sesiones de manera sencilla en la consola:

1) growisofs -Z /dev/sr0=systemrescue.iso

2) growisofs -M /dev/sr0 copia_win.000  (o si tienes varias imágenes en un directorio: growisofs -M /dev/sr0 /directorio/de/imagenes)