12.0 Copias de seguridad

El hardware es indeterminsticamente confiable.
El software es determinsticamente no confiable.
Las personas son indeterminsticamente no confiable.
La naturaleza es determinsticamente confiable.

En este captulo se explica cuando, como y  porque hacer copias de 
seguridad (backups), y de como recuperar informacin de las 
copias realizadas.


12.1 Importancia de las copias de seguridad

Sus datos son valiosos. Tomara tiempo y esfuerzo -si fuese necesario-
re-crearlos, y esto cuesta dinero o al menos esfuerzo extra del personal.
Algunas 
veces los datos no pueden ser re-creados, por ejemplo, si son el 
resultado de algunos experimentos. Debido a que los datos elaborados son una 
inversin, debe protegerlos y tomar medidas para evitar prdidas.

Existen bsicamente cuatro razones por la que puede perder datos: fallas de 
hardware, errores en el software, mala o equivocada accin humana o desastres 
naturales. [1] Aunque, si bien el hardware moderno tiende a ser confiable, puede 
llegar a daarse aparentemente de manera espontnea. La pieza ms crtica para 
almacenar datos es el disco rgido, ya que se encuentra compuesto de 
pequesimos campos magnticos que deben mantenerse intactos en un mundo lleno 
de interferencias electromagnticas. El software moderno no tiende a ser 
confiable; un programa slido como una roca es una excepcin, no una regla. 
Las personas son completamente no confiables, suelen confundirse o 
equivocarse, o pueden ser maliciosos y destruir los datos de forma adrede. La 
naturaleza no puede ser malvada, pero podra llegar a realizar estragos. 
Resumiendo: en computacin, es un pequeo milagro que algo trabaje del todo bien.

Las copias de seguridad son una manera de proteger la inversin realizada en 
los datos. Las prdidas de informacin no es tan importante si existen varias
copias resguardadas (existe solo el costo que conlleve recuperar los datos 
perdidos desde las copias).

Es importante realizar copias de seguridad correctamente. Como todo lo 
relacionado con el mundo fsico, se daarn tarde o temprano. Parte del
trabajo
al realizar copias de seguridad es estar seguro de que estas funcionan; 
ya que no desea 
enterarse tiempo despus que las copias no son tiles. Adems, piense
en estos dos casos: sus datos podran daarse justo en el momento en que
esta realizando copias de respaldo; o, si solamente tiene un medio para
copias de seguridad, se podra llegar a romper tambin, 
dejndolo solo con las cenizas de todo lo fumado mientras realizaba el 
trabajo duro.
O se entera, cuando intenta recuperar, 
que olvid'o respaldar algo importante, como la 
base de datos de los usuarios en un sitio con 15000. Finalmente, el mejor 
de todos los casos:
las copias de seguridad trabajan perfectamente, pero la 
ltima unidad sobre la faz de la Tierra que lee el tipo de cinta que 
usted utilizaba, est llena de agua y se ha daado irreparablemente.

Cuando de copias de seguridad se trata, la paranoia est en la descripcin de 
la tarea.
Notas
[1] La quinta razn es "algo sino".
[2] No rerse. Esto le sucede a muchas personas.
[3] Existe, hacer que...

12.2 Seleccionando el medio de backup

La decisin mas importante al pensar en hacer copias de seguridad es la 
seleccin del medio a utilizar. Necesita considerar el costo, confiabilidad, velocidad, 
disponibilidad y usabilidad.

El costo es importante, porque preferentemente desea contar con mayor capacidad
de almacenamiento para los backups de lo que necesita para los datos existentes.
Un medio barato es usualmente casi una obligacin.

La confiabilidad es un tem de extrema importancia, ya que una copia de respaldo 
daada puede hacer llorar a un gigante. Un medio para copias de seguridad 
debe ser capaz de mantener los datos en perfecto estado durante aos. 
Adems, la forma en que se utiliza el medio afecta a su confiabilidad.
Un disco rgido es tpicamente muy confiable, pero no como 
medio para copias de seguridad en caso de que se encuentre en la misma computadora 
en donde estn los disco al que se les realiza la copia.

La velocidad usualmente no muy importante, 
en caso de que la copia pueda ser
realizada sin interaccin. No importa que el backup demore unas 
dos horas, o lo que fuese necesario si no necesita atencin. En cambio, si 
la copia no puede ser realizada cuando la computadora se encuentre ociosa, 
considere a la velocidad del medio al momento de la eleccin.

La disponibilidad es obviamente necesaria, debido a que no se puede utilizar 
un medio para copias de seguridad si no existe. Menos obvio es la 
disponibilidad futura, y en otras
computadoras diferentes a las que se utilizaron para generar las copias.
Si este caso sucede, puede no ser posible realizar una recuperacin de la 
informacin luego de un desastre.

La practicidad es un gran factor que se relaciona con la frecuencia en que
las copias son realizadas. 
Cuanto mas fcil de usar sea el medio para realizar las copias, mejor.
Un medio 
para copias de seguridad no debe ser difcil, o aburrido de 
utilizar.

Las alternativas tpicas son los discos flexibles y las cintas. Los discos 
flexibles son muy baratos, relativamente confiables, no muy rpidos, muy 
disponibles, pero no muy tiles para grandes cantidades de informacin. Las 
cintas varan en cuanto a su valor, generalmente son baratas aunque algunos tipos
no lo son tanto,
relativamente confiables y veloces, muy disponibles, y generalmente (aunque depende de 
su capacidad) son tiles para almacenar mucha informacin.

Existen otras alternativas. Usualmente no son muy comunes,
pero si la disponibilidad no es un problema, pueden ser una mejor opcin en muchos 
casos. Por ejemplo, los discos magneto-pticos, ya que pueden tener las ventajas 
de los discos flexibles (acceso aleatorio, rpida recuperacin de un nico archivo)
y las ventajas de las cintas (gran capacidad de almacenamiento).


12.3 Seleccionando la herramienta de backup

Existen muchas herramientas que pueden ser utilizadas para realizar las copias 
de seguridad. Las herramientas tradicionales en entornos UNIX 
son tar, cpio, y dump. Adems, existe un gran nmero de paquetes de terceros 
(comerciales y libres) que pueden ser utilizados. La seleccin del medio para 
copias de seguridad puede afectar a la seleccin de la herramienta a utilizar.

tar y cpio son similares, y casi completamente equivalentes desde el punto de 
vista de los backups. Ambas son capaces de almacenar y recuperar 
archivos en cintas. Tambin son capaces de utilizar 
prcticamente cualquier medio, debido a que los controladores de dispositivos del kernel son 
los que se encargan del acceso al hardware a bajo nivel; por lo que todos los dispositivos
tienden a verse de la misma manera para los programas en espacio de usuario.
Algunas versiones UNIX de tar y 
cpio pueden tener dificultades con archivos inusuales 
(enlaces simblicos, archivos de dispositivos, archivos con nombres
muy largos, etc.), pero las versiones GNU/Linux de estas herramientas deberan 
manejar toda clase de archivos correctamente.

dump es diferente a las dos herramientas anteriores, debido a que lee el 
sistema de archivos directamente, y no a travs del sistema de archivos. 
Adems, fue desarrollado especficamente para generar copias de seguridad;
tar y cpio son empaquetadores de archivos (a pesar de que tambin trabajan como 
herramientas para backups).

Leer el sistema de archivos directamente tiene algunas ventajas. Es posible 
realizar copias sin afectar las marcas de tiempo de los archivos; 
en cambio, para tar y cpio, es necesario primero montar el 
sistema de archivos con permisos de solo-lectura. Si es necesario copiar 
todo el sistema de archivos, entonces la lectura directa tambin es mas efectiva,
debido a que se realizan 
muchos menos movimientos de la cabeza lecto-escritora del disco. La mayor desventaja
es que dump es un programa de copia especfico para solamente un tipo de sistemas
de archivos;
el programa dump de GNU/Linux puede leer nicamente el sistema
de archivos ext2.

dump tambin soporta distintos niveles de copias (tema que se encuentra
explicado en pginas posteriores)
; con tar y cpio los niveles de copia de respaldo debe 
ser implementado utilizando otras herramientas.

Una comparacin con herramientas de terceros para copias de seguridad se 
encuentra fuera del alcance de este libro. El Mapa de Software para GNU/Linux 
lista muchos de ellos que son gratuitos.


12.4.0 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 despus 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 informacin desde las copias
incrementales necesita muchas veces mas empeo que hacerlo desde una copia 
total. La recuperacin 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 tambin), pero nunca ser
necesario recuperar mas que dos copias (una total y una incremental).

En caso de que desee realizar copias todos los das 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. Despus 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 daan en un incendio, tiene al menos una copia completa en un lugar seguro (esta
copia tiene una semana de antigedad, pero es mejor que nada).
Cuando 
necesite realizar la prxima 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 versin de
algn otro.


12.4.1 Realizando copias de seguridad con tar

Una copia completa puede realizarse fcilmente con tar:

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

El ejemplo anterior utiliza la versin GNU de tar y sus nombres de opciones 
largos. La versin tradicional de tar solo comprende opciones de un nico caracter.
Adems, la versin 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 opcin
--multi-volume (o -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.

Despus de realizar una copia, debe verificar si todo se encuentra en correctas condiciones
utilizando la opcin --compare (o -d):

# tar --compare --verbose -f /dev/tape
usr/src/
usr/src/linux
usr/src/linux-1.2.10-include/
....
#

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 opcin 
--newer (o -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
(completar el ejemplo)
#

Desafortunadamente, tar no puede conocer cuando la informacin 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.


12.4.2 Recuperando archivos con tar

Debe utilizar la opcin --extract (o -x) para recuperar archivos que fueron 
previamente respaldados con tar:

# tar --extract --same-permissions --verbose --file /dev/fd0H1440
usr/src
usr/src/linux
(completar el ejemplo)
...
#

Tambin puede extraer archivos y directorios especficos (los cuales incluyen 
todos sus archivos y subdirectorios). Basta con mencionarlos en la lnea de comandos:

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

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

Note que tar siempre lee el volumen de la copia de seguridad secuencialmente, 
lo que puede llegar a ser lento para grandes volmenes. 
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 existirn luego de
la recuperacin. Este tipo de casos puede llegar a ser un gran problema si los archivos 
tienen datos sensibles que no deberan existir ms.


12.5 Copias de seguridad de mltiples niveles

Las copias de respaldo simples que estn explicadas en las secciones previas son 
frecuentemente adecuadas para uso personal o de pequeas corporaciones. Para
tareas mas complejas puede ser apropiado el uso de copias de seguridad
de mltiples niveles.

El mtodo simple tiene dos niveles de copias: total e incremental. Es
posible generalizar este mtodo para cualquier nmero de niveles. Una copia completa
sera el nivel 0, y los niveles diferentes de copias incrementales 1, 2, 
3, etc. Por cada nivel de copia incremental se copia todo lo que haya sido 
modificado desde la copia previa del mismo nivel o de uno menor.

El propsito de este procedimiento es mantener un histrico de copias
amplio de manera econmica.
En el ejemplo de la seccin previa, el histrico del backup
se remonta a la copia de respaldo completa previa (una semana).
Si agrega mas cintas este tiempo puede ser extendido, aunque 
el costo (monetario) es bastante alto, y solo puede ampliar 
el histrico en una semana por cada cinta nueva.
An as, un histrico mas amplio es
muy til, ya que los archivos que se daan o son borrados pueden pasar desapercibidos
por un largo perodo de tiempo.
Por lo que recuperar al menos una versin no muy 
actual de un archivo es mejor que nada.


El histrico de copias de seguridad multiniveles puede ser extendido de una 
forma ms econmica.
Por ejemplo, en caso de que contemos con 10 cintas disponibles, podemos 
utilizar las cintas 1 y 2 para las copias mensuales (primer Viernes de cada mes), 
las cintas 3 a 6 para las copias semanales (otros Viernes del mes; note que 
utilizamos 4 cintas debido a que pueden existir cinco Viernes en un mes),
y las cintas 7 a 10 para las copias diarias (Lunes a Jueves). Con solo 
cuatro cintas ms que el caso anterior, estamos en condiciones de extender 
de dos semanas a dos meses el histrico de los backups.
Es cierto que no podemos recuperar todas las 
versiones de cada archivo durante esos dos meses, pero 
que sea posible recuperarlo es normalmente suficiente.

La Figura 12-1 muestra el nivel de backup que es utilizado cada da, 
y desde cuales copias se pueden recuperar archivos.

Los niveles de backups pueden tambin ser utilizados para minimizar el tiempo de
restauracin de los sistemas de archivos.
En caso de que existan muchas copias incrementales con nmeros de niveles
de crecimiento muy grande, es muy probable que necesite recuperar de todas 
ellas para reconstruir el sistema de archivos entero.
Sin embargo, puede utilizar nmeros de niveles que no sean montonos, y mantener
bajo el nmero de copias que debe utilizar en cada restauracin.

Para minimizar el nmero de cintas necesarias en cada recuperacin, puede utilizar un 
un nmero de nivel mas chico por cada cinta incremental.
Sin embargo, el tiempo necesario para realizar las copias crece (en cada backup se debe
copiar todo lo que ha sido modificado desde la ltima copia total).
Existe un mejor esquema sugerido por
la pgina de manual de dump, el cual es presentado en la tabla
(niveles-de-copias-de-respaldo-eficientes). Utilizar la siguiente sucesin de 
niveles de copias de seguridad: 3, 2, 5, 4, 7, 6, 9, 8, 9, etc. Este esquema mantiene
bajo los tiempos de copia y de recuperacin, y note que lo mximo que se copia son 
dos das.
El nmero de cintas a ser restauradas depende del intervalo entre las copias completas,
pero ciertamente ser menor que el de los esquemas mas simples.

Un esquema elegante puede reducir la cantidad de trabajo necesaria, pero esto 
no significa que existan menos cosas a seguir. Usted decide si vale o no la pena.

dump tiene soporte para copias multiniveles, pero para tar y
cpio debe ser implementado con scripts del shell.


12.6 Que copiar

Debe respaldar la mayor cantidad de informacin posible. La mayor excepcin es el
software, ya que puede ser fcilmente reinstalado. [46] 
Tenga en cuenta que los programas muchas veces estn configurados manualmente
para sus sistemas,
por lo que es importante respaldar a los archivos de configuracin, y evitar as
la tarea de reconfigurarlos nuevamente.
Otra gran excepcin es el sistemas de archivos /proc, debido a 
que solamente contiene informacin que el kernel genera automticamente. Por lo
que nunca es buena idea copiarlo, especialmente
el archivo /proc/kcore es innecesario, ya que solamente es una imagen 
de la memoria fsica, y nunca suele ser muy til dentro de un backup (solo ocupa 
bastante espacio).

Hay algunas otras partes de un sistema Linux que deben ser analizadas antes de 
ser incluidas en sus copias de respaldo. Por ej., los archivos de log, las colas de los
archivos de impresin, las news y muchas otras cosas que se encuentran bajo /var. 
Debe decidir que considera importante y que no.

Lo obvio al momento de respaldar son los archivos de los usuarios (/home) y 
los archivos de configuracin del sistema (/etc, y posiblemente otros archivos
y directorios que se encuentren dispersos en el sistema de archivos).


12.7 Copias de seguridad comprimidas

Las copias de seguridad ocupan una gran cantidad de espacio, por lo que
puede ser costoso al momento de invertir en el medio a utilizar.
Para reducir el espacio necesario la copias de seguridad pueden ser comprimidas. Existen varias 
formas de hacerlo, pero una de la mas prctica es utilizar directamente programas con soporte para compresin.
Por ejemplo GNU tar, cuya opcin --gzip (o -z) 
hace que la informacin resguardada sea procesada por el programa de compresin 
gzip antes de ser copiada al medio para backups.

Desafortunadamente las copias de respaldo comprimidas pueden causar 
problemas. Debido a la naturaleza de como la compresin funciona, si un simple 
bit es incorrecto, todo el resto de los datos comprimidos son 
inutilizables. Algunos programas para backups pueden corregir algunos de 
estos errores, pero ningn mtodo de los implementados 
pueden manejar un gran nmero de errores. Esto significa que si la copia de 
seguridad es comprimida en la manera en que GNU tar lo hace (la salida
de la copia comprimida es una nica unidad), el backup completo puede 
ser intil si tan solo existe un simple error.
Las copias deben ser 
confiables, y este mtodo de compresin no es una buena idea.

Una manera alternativa es comprimir cada uno de los archivos separadamente. 
El problema mencionado anteriormente an persiste, pero si un archivo en el backup se 
encuentra daado, al menos los dems no sufren los efectos colaterales.
El archivo perdido podra de cualquier forma tener algn otro tipo de error (en su versin original), por 
lo que esta situacin no parece ser menos favorable para decidir no utilizar ningn tipo de compresin.
El programa afio (una variante del programa cpio) es capaz de trabajar de esta manera.

La compresin lleva tiempo, por lo que el programa para backups puede 
no ser capaz de escribir lo suficientemente rpido a una unidad de cinta.
Puede evitar este problema si la
salida es mantenida en un buffer (implementado internamente si el programa es 
un poco inteligente, o utilizando algn otro programa), pero an puede no llegar a 
trabajar lo suficientemente bien. Bajo este panorama es importante que controle
el estado de la finalizacin de las tareas de respaldo, y note que este ltimo problema
solo puede suceder en computadoras lentas (o en computadoras muy fuertemente utilizadas,
en donde el programa de compresin no tenga muchas chances de utilizar la CPU a tiempo).

