ant

COMPRESIONES Y RESGUARDOS
4.5

sig

4.5 Archivando y Comprimiendo Ficheros

Antes de que podamos hablar acerca de copias de seguridad, necesitamos presentar las herramientas utilizadas para archivar ficheros y programas en los sistemas UNIX.

4.5.1 Utilizando tar

El comando tar es utilizado normalmente para archivar ficheros. El formato del comando tar es
tar <opciones> <fichero1> <fichero2> ...<ficheroN>
donde <opciones> es la lista de comandos y opciones para tar, y <fichero1> hasta <ficheroN> es la lista de ficheros a añadir o extraer del archivo.

Por ejemplo, el comando

# tar cvf backup.tar /etc
empaquetará todos los ficheros de /etc en el fichero tar backup.tar. El primer argumento de tar "cvf" es el "comando" tar. "c" le dice a tar que cree un nuevo fichero de archivo. La opción "v" fuerza a tar en el modo detallado, imprimiendo los nombres de los ficheros según se archivan. La opción "f" le dice a tar que el siguiente argumento, backup.tar, es el nombre del archivo a crear. El resto de los argumentos de tar son los nombres de ficheros y directorios a añadir al archivo.

El comando
# tar xvf backup.tar
extraerá el fichero tar backup.tar en el directorio actual. Esto puede ser peligroso a veces cuando se extraen ficheros de un fichero tar, los ficheros antiguos se sobreescriben.

Por otra parte, antes de extraer ficheros tar es importante conocer donde se deben desempaquetar los ficheros. Por ejemplo, digamos que se archivaron los siguientes ficheros: /etc/hosts, /etc/group, y /etc/passwd. Si se uso el comando
# tar cvf backup.tar /etc/hosts /etc/group /etc/passwd
el nombre de directorio /etc se añadió al principio de cada nombre de fichero. Para poder extraer los ficheros en la localización correcta, se necesitara utilizar los siguientes comandos:
# cd /
# tar xvf backup.tar
Puesto que los ficheros se extraen con el nombre de camino almacenado en el fichero de archivo.

Sin embargo, si se archivaron los ficheros con los comandos
# cd /etc
# tar cvf hosts group passwd
Los nombres de directorio no se salvaron en el fichero de archivo. Por esto se necesitara hacer "cd /etc" antes de extraer los ficheros. Como se puede ver, el como haya sido creado un fichero tar marca una gran diferencia en como se extrae. Se puede usar el comando
# tar tvf backup.tar
para mostrar un "índice" del fichero tar antes de desempaquetarlo. De esta forma se puede ver que directorio se utilizó como origen de los nombres de los ficheros, y se puede extraer el archivo desde la localización correcta.

4.5.2 gzip y compress

A diferencia de los programas de archivo para MS-DOS, tar no comprime automáticamente los ficheros según los archiva. Por ello, si se están archivando dos ficheros de un megabytes, el fichero tar resultante tendrá dos megabytes. El comando gzip puede utilizarse para comprimir un fichero (el fichero a comprimir no necesita ser un fichero tar).

El comando
# gzip -9 backup.tar
comprimirá backup.tar y le dejará con backup.tar.gz, que es la versión comprimida del fichero. La opcion -9 le dice a gzip que utilice el mayor factor de compresión.

El comando gunzip puede ser utilizado para descomprimir un fichero comprimido con gzip. Equivalentemente, se puede utilizar "gzip -d".

gzip es una herramienta relativamente nueva en la comunidad UNIX. Durante muchos años, se utilizó en su lugar el comando compress. Sin embargo, debido a varios factores, compress se esta volviendo desfasado. Los ficheros comprimidos con compress terminan en la extensión .Z. Por ejemplo, backup.tar.Z es la versión comprimida con compress de backup.tar, mientras que backup.tar.gz es la versión comprimida con gzip. El comando uncompress se utiliza para expandir un fichero comprimido con compress; gunzip sabe también como tratar los ficheros comprimidos con compress.

4.5.3 Juntándolo todo

Por lo tanto, para archivar un grupo de ficheros y comprimir el resultado, se pueden utilizar los comandos:
# tar cvf backup.tar /etc
# gzip -9 backup.tar
El resultado será backup.tar.gz. Para desempaquetar este fichero, se usan los comandos contrarios:
# gunzip backup.tar.gz
# tar xvf backup.tar
Por supuesto, asegúrese siempre de que está en el directorio correcto antes de desempaquetar un fichero tar.

Se pueden utilizar algunas mañas UNIX para hacer todo esto en una sola linea de comando, como por ejemplo:
# tar cvf - /etc | gzip -9c > backup.tar.gz
Aquí estamos enviando el fichero tar a "-", que representa la salida estandar de tar. Esto es encolado hacia gzip, que comprime el fichero tar de entrada, y el resultado se salva en backup.tar.gz. La opcion -c de gzip le dice que envie su salida hacia la salida estandar, que es redirigida a backup.tar.gz.

Un comando único para desempaquetar este archivo seria:
# gunzip -c backup.tar.gz | tar xvf -
De nuevo, gunzip descomprime el contenido de backup.tar.gz y envía el fichero tar resultante hacia la salida estandar. Esta es redirigida hacia tar, que lee de "-", refiriéndose esta vez a la entrada estandar de tar.

Felizmente, el comando tar también incluye la opción z para comprimir/descomprimir automáticamente los ficheros al vuelo, utilizando el algoritmo de compresión de gzip.

Por ejemplo, el comando
# tar cvfz backup.tar.gz /etc
es equivalente a
# tar cvf backup.tar /etc
# gzip backup.tar
Igual que el comando
# tar xvfz backup.tar.Z
se puede utilizar en vez de
# uncompress backup.tar.Z # tar xvf backup.tar


4.5.4 Usando Disquetes y Haciendo Copias de Seguridad

Los disquetes son utilizados normalmente como medio para copias de seguridad. Si no se tiene una unidad de cinta conectada al sistema, se pueden utilizar disquetes (a pesar de que sean mas lentos y ligeramente menos seguros).

También puede utilizar disquetes para contener sistemas de ficheros individuales, de esta forma, se puede montar mount el disquete para acceder a los datos contenidos en él.

4.5.4.1 Utilizando disquetes para copias de seguridad

La forma más simple de hacer una copia de seguridad es con tar. El comando
# tar cvfzM /dev/fd0 /
hará una copia de seguridad completa de su sistema utilizando el disquete /dev/fd0. La opcion "M" de tar permite que la copia de seguridad sea una copia multi-volumen; esto es, cuando un disquete esta lleno, tar pedirá el siguiente. El comando
# tar xvfzM /dev/fd0
puede ser utilizado para recuperar la copia de seguridad completa. Este método puede ser utilizado también si se tiene una unidad de cinta (/dev/rmt0) conectada al sistema.

Hacer una copia de seguridad completa del sistema puede ser costoso en tiempo y recursos. Muchos administradores de sistemas utilizan una política de copias de seguridad increméntales, en la que cada mes se hace una copia de seguridad completa, y cada semana solo se copian aquellos ficheros que hayan sido modificados en esa semana. En este caso, si el sistema se viene abajo a mitad de mes, solo tiene que restaurar la última copia de seguridad mensual completa y, después, las ultimas copias semanales según el caso.

El comando find puede ser útil para localizar ficheros que hayan cambiado desde una cierta fecha. Ahora abordaremos estos temas.

4.5.5 DUMP y RESTORE

En obras