% Linux Installation and Getting Started    -*- TeX -*-
% backups.tex
% Copyright (c) 1993 by Matt Welsh and Lars Wirzenius
%
% This file is freely redistributable, but you must preserve this copyright 
% notice on all copies, and it must be distributed only as part of "Linux 
% Installation and Getting Started". This file's use is covered by
% the copyright for the entire document, in the file "copyright.tex".
%
% Este fichero es de distribuci\'on libre, pero debe mantenerse esta 
% informaci\'on de Copyright en todas las copias, y debe distribuirse solo como
% parte de "Instalaci\'on y Primeros Pasos en Linux". El uso de este fichero esta
% cubierto por el Copyright del documento completo, en el fichero "copyright.tex"
% Copyright (c) 1995 por Gerardo Izquierdo para la versi\'on al Castellano
% $Log: tar.tex,v $
% Revision 0.5.0.1  1996/02/10 23:45:13  rcamus
% Primera beta publica
%
%

\section{Archivando y Comprimiendo Ficheros}

\index{ficheros!archivando|(}
\index{archivando ficheros|(}
\index{ficheros!comprimiendo|(}
\index{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.

\subsection{Utilizando {\tt tar}}
\index{tar@{\tt tar}}
El comando {\tt tar} es utilizado normalmente para archivar ficheros.

El formato del comando {\tt tar} es
\begin{tscreen}
tar \cparam{opciones} \cparam{fichero1} \cparam{fichero2} \ldots \cparam{ficheroN}
\end{tscreen}
donde \cparam{opciones} es la lista de comandos y opciones para {\tt tar},
y \cparam{fichero1} hasta \cparam{ficheroN} es la lista de ficheros a
a\~nadir o extraer del archivo.

Por ejemplo, el comando
\begin{tscreen}
\# {\em tar cvf backup.tar /etc}
\end{tscreen}
empaquetar\'a todos los ficheros de {\tt /etc} en el fichero tar 
{\tt backup.tar}. El primer argumento de {\tt tar} ---``{\tt cvf}''--- es el
``comando'' {\tt tar}. ``{\tt c}'' le dice a {\tt tar} que cree un nuevo
fichero de archivo. La opci\'on ``{\tt v}'' fuerza a {\tt tar} en el modo 
detallado ---imprimiendo los nombres de los ficheros seg\'un se archivan. La
opci\'on ``{\tt f}'' le dice a {\tt tar} que el siguiente 
argumento ---{\tt backup.tar}--- es el nombre del archivo a crear. El 
resto de
los argumentos de {\tt tar} son los nombres de ficheros y directorios a 
a\~nadir al archivo.

El comando
\begin{tscreen}
\# {\em tar xvf backup.tar}
\end{tscreen}
extraer\'a el fichero tar {\tt 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 d\'onde
se deben desempaquetar los ficheros. Por ejemplo, digamos que se archivaron
los siguientes ficheros: {\tt /etc/hosts}, {\tt /etc/group}, y 
{\tt /etc/passwd}. Si se us\'o el comando
\begin{tscreen}
\# {\em tar cvf backup.tar /etc/hosts /etc/group /etc/passwd}
\end{tscreen}
el nombre de directorio {\tt /etc} se a\~nadi\'o al principio de cada nombre de
fichero. Para poder extraer los ficheros en la localizaci\'on correcta, se 
necesitar\'a utilizar los siguientes comandos:
\begin{tscreen}
\# {\em cd /} \\
\# {\em tar xvf backup.tar}
\end{tscreen}
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
\begin{tscreen}
\# {\em cd /etc} \\
\# {\em tar cvf hosts group passwd}
\end{tscreen}
Los nombres de directorio no se salvaron en el fichero de archivo. Por \'esto
se necesitar\'a hacer ``{\tt cd /etc}'' antes de extraer los ficheros. Como
se puede ver, el c\'omo haya sido creado un fichero tar marca una gran 
diferencia en c\'omo se extrae. Se puede usar el comando
\begin{tscreen}
\# {\em tar tvf backup.tar}
\end{tscreen}
para mostrar un ``\'\i ndice'' del fichero tar antes de desempaquetarlo.
De esta forma se puede ver que directorio se utiliz\'o como origen de los
nombres de los ficheros, y se puede extraer el archivo desde la 
localizaci\'on correcta.

\subsection{{\tt gzip} y {\tt compress}}
\index{gzip@{\tt gzip}}
\index{compress@{\tt compress}}
A diferencia de los programas de archivo para MS-DOS, {\tt tar} no comprime
autom\'aticamente los ficheros seg\'un los archiva. Por ello, si se est\'an 
archivando dos ficheros de un megabyte, el fichero tar resultante tendr\'a dos
megabytes. El comando {\tt gzip} puede utilizarse para comprimir un fichero
(el fichero a comprimir no necesita ser un fichero tar). El comando
\begin{tscreen}
\# {\em gzip -9 backup.tar}
\end{tscreen}
comprimir\'a {\tt backup.tar} y le dejar\'a con {\tt backup.tar.gz}, que es la
versi\'on comprimida del fichero. La opci\'on {\tt -9} le dice a {\tt gzip} que
utilice el mayor factor de compresi\'on.

El comando {\tt gunzip} puede ser utilizado para descomprimir un fichero
comprimido con {\tt gzip}. Equival\'entemente, se puede utilizar 
``{\tt gzip -d}''.

{\tt gzip} es una herramienta relativamente nueva en la comunidad UNIX. 
Durante muchos a\~nos, se utiliz\'o en su lugar el comando {\tt compress}. Sin 
embargo, debido a varios factores\footnote{Estos factores incluyen una 
disputa por una patente software contra el algoritmo de {\tt compress} y el
hecho de que {\tt gzip} es mucho m\'as eficiente que {\tt compress}.}, 
{\tt compress} se est\'a volviendo desfasado.

Los ficheros comprimidos con {\tt compress} terminan en la extensi\'on {\tt .Z}.
Por ejemplo, {\tt backup.tar.Z} es la versi\'on comprimida con {\tt compress} 
de {\tt backup.tar}, mientras que {\tt backup.tar.gz} es la versi\'on 
comprimida con {\tt gzip}\footnote{Para a\~nadir m\'as confusi\'on, 
durante alg\'un tiempo la extensi\'on {\tt .z} (``{\tt z}'' min\'uscula) 
fu\'e utilizada para los ficheros comprimidos con {\tt gzip}. La 
extensi\'on oficial de los ficheros {\tt gzip} ahora es {\tt .gz}.}. El 
comando {\tt uncompress} se utiliza para expandir un fichero comprimido 
con {\tt compress}; {\tt gunzip} sabe tambi\'en como tratar los ficheros 
comprimidos con {\tt compress}.

\subsection{Junt\'andolo todo}
Por lo tanto, para archivar un grupo de ficheros y comprimir el resultado,
se pueden utilizar los comandos:
\begin{tscreen}
\# {\em tar cvf backup.tar /etc} \\
\# {\em gzip -9 backup.tar}
\end{tscreen}
El resultado ser\'a {\tt backup.tar.gz}. Para desempaquetar este fichero, se 
usan los comandos contrarios:
\begin{tscreen}
\# {\em gunzip backup.tar.gz} \\
\# {\em tar xvf backup.tar}
\end{tscreen}
Por supuesto, aseg\'urese siempre de que est\'a en el directorio correcto 
antes de desempaquetar un fichero tar.

Se pueden utilizar algunas ma\~nas UNIX para hacer todo esto en una sola l\'\i nea
de comando, como por ejemplo:
\begin{tscreen}
\# {\em tar cvf - /etc $\mid$ gzip -9c $>$ backup.tar.gz}
\end{tscreen}
Aqu\'{\i} estamos enviando el fichero tar a ``{\tt -}'', que representa 
la salida est\'andar de {\tt tar}. Esto es encolado hacia {\tt gzip}, que 
comprime el fichero tar de entrada, y el resultado se salva en {\tt 
backup.tar.gz}. La opci\'on {\tt -c} de {\tt gzip} le dice que env\'\i e 
su salida hacia la salida est\'andar, que es redirigida a {\tt 
backup.tar.gz}.

Un comando \'unico para desempaquetar este archivo ser\'\i a:
\begin{tscreen}
\# {\em gunzip -c backup.tar.gz $\mid$ tar xvf -}
\end{tscreen}
De nuevo, {\tt gunzip} descomprime el contenido de {\tt backup.tar.gz} y 
env\'\i a
el fichero tar resultante hacia la salida est\'andar. Esta es redirigida 
hacia
{\tt tar}, que lee de ``{\tt -}'', refiri\'endose \'esta vez a la entrada 
est\'andar de {\tt tar}.

Felizmente, el comando {\tt tar} tambi\'en incluye la opci\'on {\tt z} para
comprimir/descomprimir autom\'aticamente los ficheros al vuelo, utilizando el
algoritmo de compresi\'on de {\tt gzip}.

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

Rem\'\i tase a las p\'aginas man para obtener mas informaci\'on acerca de {\tt tar} y 
{\tt gzip}.

\index{ficheros!archivando|)}
\index{archivando ficheros|)}
\index{ficheros!comprimiendo|)}
\index{comprimiendo ficheros|)}
