Archivado y compresión de archivos y directorios en Linux

En Linux, el archivado y compresión se realiza utilizando el comando tar (archivado) en conjunto con gzip, bzip2, o xz (compresión). La posibilidad de disponer de un solo archivo comprimido (a menudo llamado tarball) que contenga muchos otros (incluyendo directorios) nos permite distribuirlo fácilmente mediante correo electrónico o transferirlo a través de una red, con la ventaja adicional de que su tamaño es menor que la suma de sus contenidos.

Si bien es perfectamente posible archivar un grupo de archivos y directorios SIN comprimirlos, esta opción rara vez se utiliza, ya que siempre es preferible disponer de un archivo final de menor tamaño. Por ese motivo, nos enfocaremos exclusivamente en ambas operaciones (archivado y compresión).

Antes de comenzar, necesitaremos crear unos archivos de prueba y un subdirectorio en el directorio actual:

[pastacode lang=»bash» manual=»echo%20%22Yo%20soy%20el%20archivo1%22%20%3E%20archivo1.txt%0Aecho%20%22Yo%20soy%20el%20archivo2%20y%20peso%20m%C3%A1s%20que%20archivo1%22%20%3E%20archivo2.txt%0Aecho%20%22Yo%20soy%20el%20archivo3%20y%20penso%20m%C3%A1s%20que%20archivo1%20y%20que%20archivo2%22%20%3E%20archivo3.txt%0Amkdir%20resultados» message=»» highlight=»» provider=»manual»/]

Seguramente se acordarán que explicamos el uso de esos comandos en Crear y borrar archivos y directorios en Linux.

Archivado y compresión con tar y gzip

Para comprimir archivo1.txt, archivo2.txt, y archivo3.txt en un tarball de nombre tarcongzip.tar.gz dentro del subdirectorio resultados debemos hacer lo siguiente:

[pastacode lang=»bash» manual=»tar%20-czvf%20resultados%2Ftarcongzip.tar.gz%20archivo1.txt%20archivo2.txt%20archivo3.txt» message=»» highlight=»» provider=»manual»/]

Con tar y bzip2

Ahora crearemos un tarball llamado tarconbzip2.tar.bz2 también dentro de resultados:

[pastacode lang=»bash» manual=»tar%20-cjvf%20resultados%2Ftarconbzip2.tar.bz2%20archivo1.txt%20archivo2.txt%20archivo3.txt» message=»» highlight=»» provider=»manual»/]

Con tar y xz

Finalmente haremos lo mismo con tarconxz.tar.xz:

[pastacode lang=»bash» manual=»tar%20-cJvf%20resultados%2Ftarconxz.tar.xz%20archivo1.txt%20archivo2.txt%20archivo3.txt» message=»» highlight=»» provider=»manual»/]

Antes de descomprimir, crearemos tres directorios auxiliares dentro de resultados:

[pastacode lang=»bash» manual=»mkdir%20resultados%2F1%0Amkdir%20resultados%2F2%0Amkdir%20resultados%2F3″ message=»» highlight=»» provider=»manual»/]

Y luego descomprimiremos los contenidos en tarcongzip.tar.gz, tarconbzip2.tar.bz2, y tarconxz.tar.xz en resultados/1, resultados/2, y resultados/3, respectivamente. La opción -C (mayúscula) nos permite cambiar de directorio ANTES de realizar la descompresión:

[pastacode lang=»bash» manual=»tar%20-xzvf%20resultados%2Ftarcongzip.tar.gz%20-C%20resultados%2F1%0Atar%20-xjvf%20resultados%2Ftarconbzip2.tar.bz2%20-C%20resultados%2F2%0Atar%20-xJvf%20resultados%2Ftarconxz.tar.xz%20-C%20resultados%2F3″ message=»» highlight=»» provider=»manual»/]

Resaltemos algunos puntos importantes a tener en cuenta en todos los casos:

  • La opción -c indica que estamos creando un tarball, mientras que -x nos dice que lo estamos descomprimiendo.
  • -v muestra la lista de archivos que fueron procesados.
  • -f es la última opción y debe preceder al nombre del tarball a crear.
  • -z, -j, -J representan el tipo de compresión utilizado (gzip, bzip2, o xz, respectivamente).
  • gzip es la herramienta más antigua de las tres y provee la menor compresión, mientras que xz es la más nueva y presenta una mayor compresión pero a costa de un mayor uso de recursos del sistema al momento de comprimir. Finalmente, bzip2 es una especie de promedio entre las otras dos.
  • A modo informativo, las nuevas versiones del kernel se distribuyen desde kernel.org comprimidas con xz.

Cabe destacar que todas las opciones de tar se pueden utilizar con cualquiera de las herramientas de compresión mencionadas anteriormente.

Espero que este post les haya resultado útil. ¡Hasta el próximo!

Deja una respuesta

Tu dirección de correo electrónico no será publicada.