Comprimir directorios y archivos con tar, en Linux

Comprimir y descomprimir con tar en Linux

Comprimir con tar en la terminal

A la hora de comprimir y descomprimir archivos y directorios completos de forma recursiva en Linux podemos usar diferentes programas: zip, gzip, p7zip, bzip2, xz y tar entre otros.

Todos pueden ser mejores o peores pero lo más importante es con cual te sientes más cómodo y, en este caso, vamos a usar el comando tar.

Si queremos empaquetar y comprimir un archivo usaremos la siguiente instrucción, con las siguientes opciones recomendadas:

tar -cvf archivo_comprimido.tar archivo_a_comprimir.txt

Si es un directorio lo que queremos comprimir, con todo su contenido, en lugar de poner el nombre del archivo a comprimir ponemos la ruta del directorio.

tar -cvf directorio_comprimido.tar /ruta/al/directorio

Las opciones que hemos usado son las siguientes:

  • c-> Creamos un nuevo archivo
  • v-> Muestra el progreso de cada archivo conforme lo va procesando
  • f-> Damos un nombre al archivo comprimido

Mejorar la compresión con gzip

Una opción muy buena que tiene el comando tar es que nos permite mejorar el nivel de compresión usando el algoritmo gzip para lo cual solo tenemos que añadir la opción z a las opciones y en lugar de ponerle al archivo la extensión .tar le ponemos la extensión .tar.gz:

tar -cvzf directorio_comprimido.tar.gz /ruta/al/directorio
  • z-> Usa el algoritmo de compresión gzip

Mejorar, aún más, la compresión con bzip2

Podemos mejorar, aún más, el nivel de compresión usando el algoritmo bzip2 en lugar de gzip.
El precio a pagar por este nivel de compresión es que la operación será más lenta para comprimir y descomprimir.
En esta caso cambiaremos la opción z por j y la extensión en este caso será .tar.tb2 (también puede ser .tar.tbz).

tar -cvjf directorio_comprimido.tar.gz /ruta/al/directorio
  • j-> Usa el algoritmo de compresión bzip2

Ver el contenido del archivo comprimido

Podemos ver el contenido del archivo después de su compresión.

tar -tvf archivo_comprimido.tar

Las opciones nos indican lo siguiente:

  • t-> Lista el contenido del archivo comprimido
  • v-> Muestra el progreso de cada archivo conforme lo va procesando
  • f-> Damos un nombre al archivo comprimido

Si hemos usado uno de los algoritmos de compresión usaremos la misma instrucción escribiendo la extensión correspondiente.

Añadir uno o varios archivos (o un directorio) a un archivo comprimido

Si ya tenemos nuestro archivo comprimido y, por algún motivo, queremos añadirle al contenido otros archivos o incluso un directorio tendremos que usar la opción r, quedando la instrucción de la siguiente manera, pero hay que tener en cuenta que no es posible si hemos usado los algoritmos de compresión gzip o bzip2:

tar -rvf archivo_comprimido.tar archivo_a_incluir.txt

y si es un directorio:

tar -rvf archivo_comprimido.tar ruta/al/directorio

Descomprimir un archivo tar

La operación contraria a lo realizado hasta ahora es descomprimir un archivo previamente comprimido con el comando tar.

tar -xvf archivo_comprimido.tar

En este caso usamos la nueva opción x, con la cual le indicamos que queremos extraer todo el contenido del archivo comprimido.

x-> Extraer el contenido del archivo

Extraer uno o varios archivos del archivo comprimido

Hay veces que el contenido de un archivo comprimido es de varios cientos, o quizás más, archivos y solo necesitamos extraer uno o varios, pero no todos los existentes.
En este caso usaremos la instrucción anterior pero añadiendo al final de la misma el nombre o nombres de los archivos que necesitamos extraer.

tar -xvf archivo_comprimido.tar archivo1.txt archivo2.txt

Importante:
Si dentro del archivo comprimido existe una estructura de directorios y queremos extraer un archivo, tendremos que poner la ruta completa de donde se encuentra el archivo a extraer

tar -xvf archivo_comprimido.tar "dir1/dir2/dir3/archivo1.txt" "dir1/dir2/dir3/archivo2.txt"

Lo mismo hay que hacer si queremos extraer un directorio completo, es decir, hay que poner la ruta completa al directorio.

Si el archivo comprimido tiene alguno de los algoritmos de compresión gzip o bzip2 tendremos que usar la opción correspondiente para la extracción del o de los archivos:

# Para gzip
tar -zxvf archivo_comprimido.tar.gz "dir1/dir2/dir3/archivo1.txt" "dir1/dir2/dir3/archivo2.txt"

# Para bzip2
tar -jxvf archivo_comprimido.tar.bz2 "dir1/dir2/dir3/archivo1.txt" "dir1/dir2/dir3/archivo2.txt"

Extraer archivos siguiendo un patrón determinado

Si queremos extraer todos los archivos .log que se encuentren en su interior usaremos la siguiente sintaxis.

tar -xvf archivo_comprimido.tar --wilcards '.log'

Si se han usado alguno de los algoritmos de compresión anteriormente vistos actuaremos como hemos visto en las anteriores ocasiones.

Sobre mi

Trabajo en el desarrollo de webs profesionales desde hace más de 25 años.
También me dedico a mis proyectos personales.

Últimas notas publicadas

Categorías

Scroll al inicio