Utilidades de compresión : el comando tar

tar es una utilidad de archivo de propósito general capaz de empaquetar muchos archivos en uno solo a la vez que mantiene la información necesaria para restaurar totalmente los archivos, como los permisos y la propiedad de los mismos. El nombre tar proviene de las palabras inglesas que se refieren al archivo en cinta (tape archive) porque la herramienta se utilizaba originalmente para archivar archivos como copias de seguridad en una cinta.

El formato es el siguiente :

tar funcionopciones archivo.tar archivos ….

Función Opciones
C Para crear un nuevo archivo tar K Conserva cualquier archivo existente durante la extracción
X Para extraer archivos de un archivo tar F Especifica que se debe leer o escribir el archivo que se encuentra en el .tar
T Para listar el contenido de un archivo tar V Para que el archivo tar muestre los archivos que va a archivar o a restablecer
R Para añadir archivos al final de un archivo tar    
U Para actualizar archivos más recientes que los que se encuentran en el archivos tar    
D Para comparar los archivos del archivo tar con los que se encuentran en el sistema de archivos    

Las funciones más utilizadas son c y x,y las opciones más comunes son f y v.

 

Por ejemplo para empaquetar el contenido del directorio mt utilizamos el comando :

 

$ tar cf mt.tar mt

 

Para extraer el contenido utilizaremos el comando tar de la siguiente forma :

$ tar xvf mt.tar

Una opción muy interesante de tar nos permite escribir un archivo en una salida estándar. Si especifica – como archivo tar a leer o escribir, los datos se leerán o escribirán en una salida estándar.

Así podemos comprimir y descomprimir de un directorio a otro a través de un canal sin que quede constancia de haber generado un .tar:

$ cd origen

$ tar cf – .| cd ../destino;tar xvf –

Con estos comandos hemos trasladado todos los ficheros del directorio origen (con todos sus permisos y enlaces) al directorio destino.

El símbolo | ,pipe (o tubería en inglés) abre un canal que permite que los resultados de la ejecución de un comando sea la entrada del siguiente.