Copias de respaldo simples

Un esquema simple de copias de seguridad es respaldar todo una única vez, y luego, copiar solamente los archivos que fueron modificados después de la copia inicial. La primera copia se denomina copia total (full backup), y las siguientes son copias incrementales (incremental backups). Una copia total frecuentemente necesita de mayor esfuerzo para ser generada, debido a que hay mas datos a escribir, y eventualmente (o frecuentemente []) puede no caber en una única cinta, o cualquiera que sea el medio utilizado. De manera opuesta, recuperar información desde las copias incrementales necesita muchas veces mas empeño que hacerlo desde una copia total. La recuperación puede ser optimizada si cada copia incremental se realiza con respecto a la copia total previa. De esta manera, las copias pueden necesitar un poquito mas de esfuerzo (y demorar mas también), pero nunca será necesario recuperar mas que dos copias (una total y una incremental).

En caso de que desee realizar copias todos los días y tenga seis cintas, puede utilizar la cinta 1 para la primera copia completa (digamos, un Viernes), y utiliza las cintas 2 a 5 para las copias incrementales (Lunes a Jueves). El segundo Viernes, realiza una nueva copia total en la cinta 6, y reinicia nuevamente el ciclo de copias incrementales con las cintas 2 a 5. No es conveniente sobreescribir la cinta 1 hasta que una nueva copia completa haya sido generada. Después del segundo Viernes, debe mantener la cinta 1 en otro lugar distinto al del resto. De esta manera, si el conjunto de cintas 2 a 6 se dañan en un incendio, tiene al menos una copia completa en un lugar seguro (esta copia tiene una semana de antigüedad, pero es mejor que nada). Cuando necesite realizar la próxima copia total, utilice la cinta 1 y coloque la cinta 6 el el lugar seguro.

En caso de que disponga con mas de 6 cintas, puede utilizar las cintas extras para las copias completas. Y cada vez que realice una copia total utilizará la cinta mas antigua. De esta manera puede almacenar copias completas de varias semanas previas, lo cual es útil en caso de que necesite encontrar un archivo que ha sido borrado, o desea recuperar una vieja versión de algún otro.

Realizando copias de seguridad con tar

Una copia completa puede realizarse fácilmente con tar:

# tar --create --file /dev/ftape 
/usr/src
tar: Removing leading / from absolute path names in 
the archive
#

El ejemplo anterior utiliza la versión GNU de tar y sus nombres de opciones largos. La versión tradicional de tar solo comprende opciones de un único caracter. Además, la versión GNU puede manejar copias que no quepan completamente en una cinta (o medio utilizado), y con caminos de directorios muy largos; no todas las versiones de tar pueden hacer eso. (GNU/Linux solo utiliza GNU tar.)

En caso de que la copia no quepa en una única cinta, es necesario activar la opción --multi-volume (-M):

# tar -cMf /dev/fd0H1440 
/usr/src
tar: Removing leading / from absolute path names in 
the archive
Prepare volume #2 for /dev/fd0H1440 and hit return:
#

Observe que debe dar formato a todos los disquetes a utilizar antes de comenzar la copia de respaldo, o utilice otra ventana o terminal virtual y dele formato al disquete cuando tar le solicite uno nuevo.

Después de realizar una copia, debe verificar si todo se encuentra en correctas condiciones utilizando la opción --compare (-d):

# tar --compare --verbose -f 
/dev/ftape
usr/src/
usr/src/linux
usr/src/linux-1.2.10-includes/
....
#

Si no verifica las copias, entonces no percibirá que las copias de respaldo no son útiles hasta que estas sean necesarias.

Una copia de seguridad incremental puede ser realizada utilizando la opción --newer (-N) de tar:

# tar --create --newer '8 Sep 1995' 
--file /dev/ftape /usr/src 
--verbose
tar: Removing leading / from absolute path names in 
the archive
usr/src/
usr/src/linux-1.2.10-includes/
usr/src/linux-1.2.10-includes/include/
usr/src/linux-1.2.10-includes/include/linux/
usr/src/linux-1.2.10-includes/include/linux/modules/
usr/src/linux-1.2.10-includes/include/asm-generic/
usr/src/linux-1.2.10-includes/include/asm-i386/
usr/src/linux-1.2.10-includes/include/asm-mips/
usr/src/linux-1.2.10-includes/include/asm-alpha/
usr/src/linux-1.2.10-includes/include/asm-m68k/
usr/src/linux-1.2.10-includes/include/asm-sparc/
usr/src/patch-1.2.11.gz
#

Desafortunadamente, tar no puede conocer cuando la información en los inodos de los archivos ha cambiado, como por ejemplo, si sus permisos o nombre ha sido modificado. Puede solucionar este inconveniente utilizando find, y comparar el estado del sistema de archivos actual con una lista de archivos que fueron respaldados previamente. Los scripts y programas que realizan esta tarea pueden ser encontrados en los sitios ftp de GNU/Linux.

Recuperando archivos con tar

Debe utilizar la opción --extract (-x) para recuperar archivos que fueron previamente respaldados con tar:

# tar --extract --same-permissions 
--verbose --file 
/dev/fd0H1440
usr/src/
usr/src/linux
usr/src/linux-1.2.10-includes/
usr/src/linux-1.2.10-includes/include/
usr/src/linux-1.2.10-includes/include/linux/
usr/src/linux-1.2.10-includes/include/linux/hdreg.h
usr/src/linux-1.2.10-includes/include/linux/kernel.h
...
#

También puede extraer archivos y directorios específicos (los cuales incluyen todos sus archivos y subdirectorios). Basta con mencionarlos en la línea de comandos:

# tar xpvf /dev/fd0H1440 
usr/src/linux-1.2.10-includes/include/linux/hdreg.h
usr/src/linux-1.2.10-includes/include/linux/hdreg.h
#

Utilice la opción --list (-t) para conocer cuales son los archivos presentes en un volumen de backup:

# tar --list --file 
/dev/fd0H1440
usr/src/
usr/src/linux
usr/src/linux-1.2.10-includes/
usr/src/linux-1.2.10-includes/include/
usr/src/linux-1.2.10-includes/include/linux/
usr/src/linux-1.2.10-includes/include/linux/hdreg.h
usr/src/linux-1.2.10-includes/include/linux/kernel.h
...
#

Note que tar siempre lee el volumen de la copia de seguridad secuencialmente, lo que puede llegar a ser lento para grandes volúmenes. De cualquier manera, si utiliza medios secuenciales como cintas, no es posible el acceso aleatorio.

tar no maneja correctamente archivos eliminados. En caso de que se necesite recuperar un sistema de archivos desde una copia completa y otra incremental, y se han eliminado archivos entre las dos copias, estos archivos existirán luego de la recuperación. Este tipo de casos puede llegar a ser un gran problema si los archivos tienen datos sensibles que no deberían existir más.