Backups sobre CD-ROM

Como antes hemos dicho, cada vez es más común que se realicen copias de seguridad sobre discos compactos; en estos casos no se suelen utilizar las aplicaciones vistas hasta ahora (tar o cpio), sino que se necesita un software dedicado: aquí vamos a comentar las nociones más básicas para poder crear backups sobre este medio. Para poder grabar una copia de seguridad en un CD-ROM necesitamos en primer lugar que el núcleo del sistema operativo reconozca nuestra grabadora como tal; si se trata de una IDE, y dependiendo del clon de Unix utilizado, quizás sea necesario modificar el kernel, ya que el acceso que los diferentes programas realizan al dispositivo se efectua a través de un interfaz SCSI del núcleo. Es necesario consultar la documentación y la lista de compatibilidad hardware para cada Unix particular.

Si asumimos que el reconocimiento del dispositivo es correcto, lo que necesitamos a continuación es software capaz de grabar un CD-ROM. Por un lado es necesario un programa para crear imágenes ISO, el `molde' de lo que será el futuro CD-ROM; el más conocido es sin duda mkisofs. Además necesitaremos un programa para realizar lo que es la grabación en sí, como cdrecord. De esta forma lo primero que generaremos es una imagen de los ficheros a grabar, imagen que a continuación pasaremos al CD-ROM; por ejemplo, si queremos hacer un backup de /export/home/, en primer lugar utilizaremos mkisofs para crear una imagen con todos los ficheros y subdirectorios de los usuarios:
anita:~# mkisofs -a -R -l -o /mnt/imagen.iso /export/home/
Con esta orden hemos creado una imagen ISO denominada /mnt/imagen.iso y que contiene toda la estructura de directorios por debajo de /export/home/; con las diferentes opciones hemos indicado que se almacenen todos los ficheros, que se sigan los enlaces simbólicos y que se registre además información sobre los permisos de cada archivo. Una vez que tenemos esta imagen (que en los Unices con soporte para sistemas de ficheros loop podremos montar como si se tratara de una partición, para añadir, borrar, modificar...ficheros antes de la grabación) hemos de pasarla a un CD-ROM, por ejemplo mediante cdrecord:
anita:~# cdrecord dev=0,1,0 fs=16m /mnt/imagen.iso
Con esta orden le hemos indicado al sistema la ubicación de nuestra grabadora, así como un buffer de grabación de 16MB y también la ubicación de la imagen ISO.

Algo muy interesante es la posibilidad de grabar sin necesidad de crear primero imágenes con los ficheros que queremos meter en un CD-ROM; esto nos ahorrará tiempo (y sobre todo, espacio en disco) a la hora de realizar copias de seguridad, además de permitir una mayor automatización del proceso. Para ello, debemos calcular con mkisofs el espacio que ocupan los ficheros a grabar (con la opción `-print-size'), y posteriormente pasarle este valor a cdrecord; podemos hacerlo de forma automática, por ejemplo tal y como muestra el siguiente programa:
anita:~# cat `which graba-cd`
#!/bin/sh
# Vuelca el directorio pasado como parametro, y todos sus descendientes,
# en un CD-ROM
MKISOFS=/usr/local/bin/mkisofs
CDRECORD=/usr/local/bin/cdrecord
if (test $# -lt 1); then
        echo "Usage: $0 /files"
        exit
fi
size=`$MKISOFS -r -J -l -print-size -f $1 2>&1|tail -1|awk '{print $8}'` 
nice --20 $MKISOFS -r -J -l -f $1 | nice --20 $CDRECORD dev=0,1,0 fs=16m\
 tsize=$size*2048 -eject -
anita:~#
Como vemos, se asigna el tamaño de los datos a grabar a la variable `size', y después se pasa este número a cdrecord; de esta forma, para realizar una copia de seguridad de un directorio como /export/home/toni/, no tenemos más que ejecutar el shellscript pasándole el nombre de este directorio como parámetro.
© 2002 Antonio Villalón Huerta