 
 
 
 
 
 
 
  
 Siguiente: Autenticación de usuarios
 Subir: Copias de seguridad
 Anterior: Backups sobre CD-ROM
     Índice General 
La forma más elemental de realizar una copia de seguridad consiste simplemente
en volcar los archivos a salvaguardar a un dispositivo de backup, con
el procedimiento que sea; por ejemplo, si deseamos guardar todo el contenido
del directorio /export/home/, podemos empaquetarlo en un archivo, 
comprimirlo y a continuación almacenarlo en una cinta:
anita:~# tar cf backup.tar /export/home/ 
anita:~# compress backup.tar
anita:~# dd if=backup.tar.Z of=/dev/rmt/0
Si en lugar de una cinta quisiéramos utilizar otro disco duro, por ejemplo
montado en /mnt/, podemos simplemente copiar los ficheros deseados:
anita:~# cp -rp /export/home/  /mnt/
Esta forma de realizar backups volcando en el dispositivo de copia los
archivos o directorios deseados se denomina copia de seguridad completa o
de nivel 0. Unix utiliza el concepto de nivel de copia de seguridad para
distinguir diferentes tipos de backups: una copia de cierto nivel 
almacena los archivos modificados desde el último backup de nivel 
inferior. Así, las copias completas son, por definición, las de nivel 0;
las copias de nivel 1 guardan los archivos modificados desde la última copia
de nivel 0 (es decir, desde el último backup completo), mientras que
las de nivel 2 guardan los archivos modificados desde la última copia de
nivel 1, y así sucesivamente (en realidad, el nivel máximo utilizado en
la práctica es el 2).
Como hemos dicho, las copias completas constituyen la política más 
básica para realizar backups, y como todas las políticas tiene ventajas e inconvenientes;
la principal ventaja de las copias completas es su facilidad de realización
y, dependiendo del mecanismo utilizado, la facilidad que ofrecen para restaurar
ficheros en algunas situaciones: si nos hemos limitado a copiar una serie de 
directorios a otro disco
y necesitamos restaurar cierto archivo, no tenemos más que montar el disco
de backup y copiar el fichero solicitado a su ubicación original.
Sin embargo, las copias completas presentan graves inconvenientes; uno de 
ellos es la dificultad para restaurar ficheros si utilizamos múltiples 
dispositivos de copia de seguridad (por ejemplo, varias cintas). Otro 
inconveniente, más importante, de las copias de nivel 0 es la cantidad de 
recursos que consumen, tanto en tiempo como en hardware; para solucionar
el problema de la cantidad de recursos utilizados aparece el concepto de
copia de seguridad incremental. Un backup incremental o progresivo consiste en
copiar sólamente los archivos que han cambiado desde la realización de 
otra copia (incremental o total). Por ejemplo, si hace una semana realizamos un
backup de nivel 0 en nuestro sistema y deseamos una copia incremental
con respecto a él, hemos de guardar los ficheros modificados en los últimos
siete días (copia de nivel 1); podemos localizar estos ficheros con 
la orden find:
anita:~# find /export/home/ -mtime 7 -print
Si hace un día ya realizamos una 
copia incremental y ahora queremos hacer otra copia progresiva con respecto a 
ella, hemos de almacenar únicamente los archivos modificados en las últimas 
24 horas (copia de nivel 2); como antes, podemos utilizar find para 
localizar los archivos modificados en este intervalo de tiempo:
anita:~# find /export/home/ -mtime 1 -print
Esta política de realizar copias de seguridad sobre la última progresiva 
se denomina de copia de seguridad diferencial.
La principal ventaja de las copias progresivas es que requieren menos tiempo
para ser realizadas y menos capacidad de almacenamiento que las completas; sin
embargo, como desventajas tenemos que la restauración de ficheros puede ser
más compleja que con las copias de nivel 0, y también que un solo fallo en 
uno de los dispositivos de almacenamiento puede provocar la pérdida de gran 
cantidad de archivos; para restaurar completamente un sistema, debemos restaurar
la copia más reciente de cada nivel, en orden, comenzando por la de
nivel 0. De esta forma, parece lógico que la estrategia seguida 
sea un término medio entre las vistas aquí, una política de copias 
de seguridad que mezcle el enfoque completo y el progresivo: una estrategia
muy habitual, tanto por su simpleza como porque no requiere mucho hardware consiste en realizar periódicamente copias de seguridad de nivel
0, y entre ellas realizar ciertas copias progresivas de nivel 1. Por ejemplo,
imaginemos un departamento que decide realizar cada domingo una copia de 
seguridad completa de sus directorios de usuario y de /etc/, y una 
progresiva sobre ella, pero sólo de los directorios de usuario, cada día 
lectivo de la semana. Un shellscript que realize esta tarea puede ser el 
siguiente:
#!/bin/sh
DIA=`date +%a`    # Dia de la semana
DIREC="/tmp/backup/"  # Un directorio para hacer el backup
hazback () {
    cd $DIREC
    tar cf backup.tar $FILES
    compress backup.tar
    dd if=backup.tar.Z of=/dev/rmt/0
    rm -f backup.tar.Z
}
if [ ! -d $DIREC ]; 
    then
        # No existe $DIREC
        mkdir -p $DIREC
        chmod 700 $DIREC  # Por seguridad
    else 
        rm -rf $DIREC
        mkdir -p $DIREC
        chmod 700 $DIREC
    fi;
case $DIA in
    "Mon") 
        # Lunes, progresiva
        FILES=`find /export/home/ -mtime 1 -print`
        hazback
        ;;	
    "Tue") 
        # Martes, progresiva
        FILES=`find /export/home/ -mtime 2 -print`
        hazback
        ;;	
    "Wed") 
        # Miercoles, progresiva
        FILES=`find /export/home/ -mtime 3 -print`
        hazback
        ;;	
    "Thu") 
        # Jueves, progresiva
        FILES=`find /export/home/ -mtime 4 -print`
        hazback
        ;;	
    "Fri") 
        # Viernes, progresiva
        FILES=`find /export/home/ -mtime 5 -print`
        hazback
        ;;	
    "Sat")
        # Sabado, descansamos...
        ;;
    "Sun")
        # Domingo, copia completa de /export/home y /etc
        FILES="/export/home/ /etc/"
        hazback
        ;;
esac
Este programa determina el día de la semana y en función de él realiza
- o no, si es sábado - una copia de los ficheros correspondientes (nótese
el uso de las comillas inversas en la orden find). Podríamos 
automatizarlo mediante la facilidad cron de nuestro sistema para que
se ejecute, por ejemplo, cada día a las tres del mediodía (una hora
en la que la actividad del sistema no será muy alta); de esta forma, como
administradores, sólo deberíamos preocuparnos por cambiar las cintas
cada día, y dejar una preparada para el fin de semana. Si decidimos
planificarlo para que se ejecute de madrugada, hemos de tener en cuenta que el
backup de un lunes de madrugada, antes de llegar al trabajo, puede 
sobreescribir el completo, realizado el domingo de madrugada, por lo que 
habría que modificar el shellscript; también hemos de estar atentos
a situaciones inesperadas, como que no existan archivos a copiar o que nuestro
sistema no disponga del suficiente disco duro para almacenar temporalmente la
copia.
El medio de almacenamiento también es importante a la hora de diseñar una
política de copias de seguridad correcta. Si se trata de dispositivos 
baratos, como los CD-ROMs, no suele haber muchos problemas: para cada volcado
(sea del tipo que sea) se utiliza una unidad diferente, unidad que además no
se suele volver a utilizar a no ser que se necesite recuperar los datos; el
uso de unidades regrabables en este caso es minoritario y poco recomendable, por
lo que no vamos a entrar en él. No obstante, algo muy diferente son los medios
de almacenamiento más caros, generalmente las cintas magnéticas; al ser
ahora el precio algo a tener más en cuenta, lo habitual es reutilizar 
unidades, sobreescribir las copias de seguridad más antiguas con otras más
actualizadas. Esto puede llegar a convertirse en un grave problema si por
cualquier motivo reutilizamos cintas de las que necesitamos recuperar 
información; aparte del desgaste físico del medio, podemos llegar a 
extremos en los que se pierda toda la información guardada: imaginemos, por
ejemplo, que sólo utilizamos una cinta de 8mm. para crear backups del
sistema: aunque habitualmente todo funcione correctamente (se cumple de forma
estricta la política de copias, se verifican, se almacenan en un lugar
seguro...), puede darse el caso de que durante el proceso de copia se 
produzca un incendio en la sala de operaciones, incendio que destruirá tanto
nuestro sistema como la cinta donde guardamos su backup, con lo que 
habremos perdido toda nuestra información. Aunque este es un ejemplo
quizás algo extremo, podemos pensar en lugares donde se utilicen de forma
incorrecta varios juegos de copias o en situaciones en las que el sistema se
corrompe (no ha de tratarse necesariamente de algo tan poco frecuente como un
incendio, sino que se puede tratar de un simple corte de fluido eléctrico que
dañe los discos); debemos asegurarnos siempre de que podremos recuperar con
una probabilidad alta la última copia de seguridad realizada sobre cada 
archivo importante de nuestro sistema, especialmente sobre las bases de datos.
 
 
 
 
 
 
 
  
 Siguiente: Autenticación de usuarios
 Subir: Copias de seguridad
 Anterior: Backups sobre CD-ROM
     Índice General 
2003-08-08