|
COMPRESIONES Y RESGUARDOS 4.5 |
|
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
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
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
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
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
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
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