Cómo comprimir y descomprimir archivos usando tar en Linux

Contenidos

Tar es más que una simple utilidad de archivo: tar viene con algunas funciones integradas excelentes, que le posibilitan comprimir y descomprimir archivos, al mismo tiempo que los archiva. ¡Aprenda todo al respecto en este post y más!

Que es alquitrán y ¿cómo lo instalo?

Según el alquitrán manual (al que puede tener acceso escribiendo man tar una vez instalado), tar es una utilidad de archivo. Es compatible con muchas funciones, incluida la compresión y descompresión de archivos sobre la marcha al archivarlos. Comencemos instalando alquitrán:

Instalar alquitrán en su distribución de Linux basada en Debian / Apt (como Ubuntu y Mint), ejecute el siguiente comando en su terminal:

sudo apt install tar

Instalar alquitrán en su distribución de Linux basada en RedHat / Yum (como RHEL, Centos y Fedora), ejecute el siguiente comando en su terminal:

sudo yum install tar

A continuación, crearemos algunos datos de muestra:

mkdir test; cd test
touch a b c d e f 
echo 1 > a; echo 5 > e; echo '22222222222222222222' > b

Configurar datos de muestra para comprimir

Aquí creamos una prueba de directorio y creamos seis archivos vacíos en ella usando el touch mando. Además agregamos algunos números a los archivos. a, mi, y B, aún cuando notablemente archivo B tiene datos repetitivos, que se comprimirán bien.

Si desea obtener más información acerca de cómo funciona la compresión, puede consultar nuestro ¿Cómo funciona la compresión de archivos? post.

Crear un archivo sin comprimir

Creación simple de archivos tar sin comprimir

tar -hcf all_files.tar *
ls -l | grep -v total | awk '{print $5"tbytes for: "$9}' | sort -n

Aquí creamos un archivo sin comprimir usando el tar -hcf all_files.tar * mando. Echemos un vistazo a las alternativas utilizadas en este comando.

En primer lugar, tenemos -h que aún cuando no es necesario en esta circunstancia particular, recomiendo incluir siempre en su tar comandos. Esta opción significa desreferencia, que eliminará la referencia (o seguirá) los links simbólicos, archivando y volcando los archivos a los que apuntan.

A continuación tenemos el -c y -f opciones. Tenga en cuenta que solo se escriben junto con el - en -h, dicho de otra forma, en lugar de especificar otro -, simplemente los etiquetamos en las otras opciones de taquigrafía. Rapido y Facil.

los -c soporte de opción para crear un nuevo archivo. Tenga en cuenta que, de forma predeterminada, los directorios se archivan de forma recursiva, a menos que además se utilice la opción –no-recursividad. los -f La opción nos posibilita especificar el nombre del archivo. Por eso, tiene que ser el último en nuestra cadena de alternativas (puesto que necesita una opción) para que podamos agregar el nombre del archivo de almacenamiento de forma directa detrás de él. Usando tar -fch test.tar * no trabajará:

Las opciones taquigráficas que requieren una opción no se pueden colocar al frente

Después de que se genera el alquitrán, usamos un ls salida que nos muestra claramente el número de bytes por archivo. Como puede ver, el archivo tar es mucho más grande que todos nuestros archivos combinados. Los archivos simplemente se están archivando y algunos gastos generales para alquitrán se está agregando.

Como nota al margen interesante, además podemos ver con qué tipos de archivos estamos trabajando simplemente usando el file comando en el símbolo del sistema:

file c
file b
file all_files.tar

Usando archivo para ver el tipo de archivo

Crear un archivo sin comprimir

Un algoritmo de compresión muy común es GZIP. Agreguemos la opción para lo mismo (-z) a nuestra cadena de alternativas de línea de comandos abreviadas y vea cómo esto afecta el tamaño del archivo:

tar -zhcf all_files.tar.gz [a-f]
ls -l | grep -v total | awk '{print $5"tbytes for: "$9}' | sort -n

Mirando el tamaño de un archivo comprimido frente a uno sin comprimir

Esta vez especificamos una expresión regular para utilizar solo los archivos con nombre a para F, previniendo el tar comando de incluir el all_files.tar archivo dentro del nuevo all_files.tar.gz ¡expediente!

Vea ¿Cómo se utiliza verdaderamente Regex? y Modificar texto usando expresiones regulares usando sed si desea obtener más información sobre las expresiones regulares.

Además incluimos el -z opción que utilizará la compresión GZIP para comprimir el resultado .tar archivo una vez que se haya completado el volcado de datos. Es genial ver que terminamos con un archivo de 186 bytes, lo que nos dice que, en esta circunstancia, el tar El encabezado / sobrecarga de aproximadamente 10 Kb se puede comprimir muy bien.

El tamaño total del archivo es 7,44 veces mayor que el tamaño total del archivo, pero importa poco, puesto que este ejemplo ficticio no es representativo de la compresión de archivos grandes donde casi siempre se ven ganancias en lugar de pérdidas, a menos que los datos estén precomprimidos o sean de un formato tal que no se pueda condensar fácilmente usando una gama de algoritmos. Aún así, un algoritmo (como el de GZIP) puede ser mejor que otro (como a modo de ejemplo BZIP2), y viceversa, para diferentes conjuntos de datos.

Obtener más bytes a través de compresión de alto nivel

¿Podemos hacer que el archivo sea aún más pequeño? Si. Podemos determinar la opción de compresión máxima de GZIP usando el -I opción a tar que nos posibilita especificar un programa de compresión para utilizar (con gracias a desbordamiento de pila ideas de usuarioman42):

tar -I 'gzip -9' -hcf all_files.tar.gz [a-f]
ls -l | grep -v total | awk '{print $5"tbytes for: "$9}' | sort -n

Usando la opción -I para tar para especificar un programa de compresión

Aquí especificamos -I 'gzip -9' como el programa de compresión a usar, y dejamos caer el -z opción (puesto que ahora estamos especificando un programa personalizado específico para utilizar en lugar de utilizar la configuración GZIP de tar incorporada). El resultado es que tenemos 12 bytes menos como consecuencia de un intento de compresión mejor (pero de forma general más lento) (en el nivel -9) por GZIP.

En términos generales, cuanto más rápida sea la compresión (menor nivel de intentos de compresión, dicho de otra forma, -1), mayor tamaño de archivo. Y, cuanto más lenta sea la compresión (mayor nivel de intentos de compresión, dicho de otra forma, -9), más pequeño es el archivo. Puede determinar sus propias preferencias variando el nivel de compresión de -1 (rápido) a -9 (lento)

Otros programas de compresión

Hay otros dos algoritmos de compresión comunes que se pueden explorar y probar (diferentes opciones de algoritmo además dan diferentes resultados de tamaño y pueden tener opciones de compresión adicionales), y eso es bzip2, que se puede usar especificando el -j opción a tar, y XZ que se puede usar especificando el -J opción.

Alternativamente, puede usar el -I comando para determinar las alternativas de compresión máximas para bzip2 (-9):

ejemplo de programa de compresión bzip -9

Y -9e por xz:

ejemplo de programa de compresión xz -9e

Como puede ver, los resultados son menos buenos en esta circunstancia que si se utiliza el algoritmo GZIP algo estándar. Aún así, el bzip2 y xz los algoritmos pueden mostrar mejoras con otros conjuntos de datos.

Descomprimir un archivo

Descomprimir un archivo es muy fácil, sea cual sea el método original para comprimirlo, y siempre que dicho algoritmo de compresión esté presente en su computadora. A modo de ejemplo, si el algoritmo de compresión original era bzip2 (indicado por un .bz2 extensión al nombre del archivo tar), entonces querrá haber hecho sudo apt install bzip2 (o sudo yum install bzip2) en su computadora de destino que es descomprimir el archivo.

rm a b c d e f
tar -xf all_files.tar.gz
ls

Descomprimir un archivo tar comprimido (o sin comprimir)

Simplemente especificamos -x para expandir o descomprime nuestro all_files.tar.gz e indique cuál es el nombre del archivo usando de nuevo el -f opción de taquigrafía como antes.

Comprimir archivos puede ayudarlo a ahorrar mucho espacio en sus dispositivos de almacenamiento y saber cómo usarlos. tar en combinación con las alternativas de compresión disponibles le ayudará a hacerlo. Una vez que es necesario volver a extraer el archivo, es fácil hacerlo siempre que el software de descompresión correcto esté disponible en la computadora utilizada para descomprimir o extraer los datos de su archivo. ¡Disfrutar!

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.