En este momento estás viendo Compress, un programa para hacer paquetes tar.

Compress, un programa para hacer paquetes tar.

Compress, un programa para hacer paquetes tar

Los que trabajamos con sistemas GNU/Linux, con mucha frecuencia, descargamos software empaquetado en «tarball» o paquetes tar. En este artículo vemos un programa para crearlos y para desempaquetarlos.

Sumario

  • Paquetes tar
  • Funcionamiento del programa
  • Consideraciones finales
  • Código fuente

Paquetes tar

Un fichero «.tar», es una colección de ficheros que posteriormente se comprime. El nombre viene de «Tape ARchive» o archivo de cinta, de los tiempos en que se almacenaba la información en cintas magnéticas. El «.tar» no esta comprimido, pero tiene una utilidad de compresión llamada «gzip», que comprime el paquete convirtiéndolo en un «.tar.gz». Comprimir los ficheros como un único grupo permite utilizar métodos de compresión más eficientes, ahorrando así espacio y reduciendo el tamaño total del fichero.

El comando «tar» es una herramienta muy práctica para comprimir ficheros, incluso para hacer paquetes de ficheros y comprimir estos. Este sistema de compresión es altamente eficiente pues llega a conseguir compresión de hasta un 50%. Ayudándonos de este comando creamos un programa para trabajar con ficheros de forma muy sencilla.

Desde ficheros de video, imágenes, documentos o paquetes de software completos, se comprimen para almacenarlos o transmitirlos con menos peso con el formato «.tar.gz». Seguro que conoces programas para este fin: 7z, bz2, bzip2, Brotli y zstd son algunos de ellos. Uno de los formatos más conocidos es «.zip», pero este formato actúa únicamente sobre ficheros individuales y no permite hacer paquetes.

A diferencia de los ficheros «.zip», los «.tar.gz» comprimen ficheros grandes en un solo paquete, por ello se ha convertido en una extensión de fichero común para los paquetes de software de código abierto. Además el «.tar.gz» dispone de características adicionales que lo convierten en el mejor formato de compresión.

Conforme el software se hace más y más potente, y almacenamos más información, se hace necesario el uso de compresión, tanto para almacenar como para enviar ficheros. No obstante, para los menos conocedores del software libre, es poco intuitivo comprimir y extraer estos ficheros. Por eso pongo a tu disposición este pequeño script que te facilitará las cosas.

Funcionamiento del programa

Vamos a ejecutar el programa Compress, un programa para hacer paquetes tar, y lo vamos viendo. Luego aportaré el código para que solo tengas que copiar y pegar para probarlo o usarlo. Lo hago con Debian 11 pero te funcionará igual con cualquier derivado como Ubuntu y todos sus sabores, Linux Mint, Kali Linux, Purism PureOS, Raspberry Pi OS, Deepin, MX Linux, etc…hasta más de 80 distribuciones.

Contenido del directorio Compresor
Contenido del directorio Compresor

Como ves, tenemos en el «directorio Compresor», el fichero con el programa, varios documentos de texto y un directorio «Almacenamiento» donde guardaremos el paquete «.tar.gz». Una vez ejecutamos el programa vemos lo siguiente,

Interfaz de Compress
Interfaz de Compress

Como nos dice es un «programa para crear un paquete tar incluyendo los ficheros que indiques y comprimirlo. Puedes elegir la ubicación de dicho paquete y desempaquetarlo donde tu quieras.»

Al elegir la primera opción, nos pide el nombre del fichero a crear. En este caso lo llamaré «Paquete». Solicita la ubicación donde guardarlo. Elijo la ruta «/home/javier/Compresor/Almacenamiento». Ahora añadimos los ficheros que incluir en el paquete. En mi caso «prueba.txt», «prueba1.txt» y «prueba2.txt».

Creación de un paquete tar
Creación de un paquete tar

Una vez clicamos en «Intro», nos indica los ficheros que se van a incluir, que el paquete se ha creado y la ruta donde lo encontraremos. Finalmente nos muestra el contenido del paquete.

Paquete creado
Paquete creado

Una vez creado y guardado nos pregunta si queremos continuar. Le vamos a decir que sí y descomprimiremos el paquete en el mismo directorio donde lo tenemos, aunque le podemos decir el directorio que queramos.

Nos pregunta por la ubicación en la queremos descomprimir el paquete y realiza su trabajo. Nos muestra el contenido del paquete y el del directorio donde lo hemos extraído.

Descomprimiendo el paquete
Descomprimiendo el paquete

Una vez ha terminado nos vuelve a preguntar si queremos continuar. Le decimos que no y sale del programa mostrando el nombre de usuario actual.

Salir del programa
Salir del programa

Comprobamos en la GUI que tenemos todos los ficheros que hemos manejado.

Comprobamos el contenido de los directorios utilizados
Comprobamos el contenido de los directorios utilizados

Consideraciones finales

Como puedes observar es un sencillo programa y muy práctico para guardar ficheros comprimidos o comprimirlos para enviarlos por correo, por ejemplo, o con SSH a otro equipo, evitando tiempo en la transmisión.

Es posible que tengas que instalar un par de paquetes, que no afectan al funcionamiento del programa, pero si a los «banners». También puedes editar el código y sustituirlos por «echo». Más fácil es instalarlos. Primero actualizas la lista de paquetes de los repositorios y los instalas con

sudo apt update

sudo apt install toilet figlet

Ahora solo tienes que copiar y pegar el código en un fichero y darle permisos de ejecución, ejecutando

chmod +x compresor.sh

Y lo ejecutas con

./compresor.sh

Código fuente

Aquí tienes el código de Compress, un programa para hacer paquetes tar

#!/bin/bash

# Compresor.sh

# Este programa ha sido creado por Francisco Javier Izquierdo Hidalgo.
# Es software libre; puedes redistribuirlo y/o  modificarlo bajo los
# términos de la Licencia Pública General de GNU publicado por la Free
# Software Foundation; ya sea la versión 2 de la Licencia, o (a tu
# elección) cualquier versión posterior.

# Este programa se distribuye con la esperanza de que sea útil, pero SIN
# NINGUNA GARANTÍA; sin siquiera la garantía implícita de
# COMERCIABILIDAD o APTITUD PARA UN PROPÓSITO EN PARTICULAR. Ver el GNU
# General Public License para más detalles.

# script para Comprimir/Descomprimir ficheros en formato tgz mediante el
# comando tar. Mostrará un menú con las opciones:
# - Comprimir
# - Descomprimir
# - Salir
# Dentro de cada opcion, pedirá al usuario los ficheros a comprimir/
# descomprimir, el destino dónde comprimir/descomprimir e información de los
# ficheros.

# Empaquetar y comprimir: tar -czvf fichero.tar.gz /ruta/del/directorio/
# Desempaquetar y descomprimir: tar -xvf -C fichero.tar.gz

#Funcion menu. Muestra el menu de operaciones.
menu(){
        echo "   1.Comprimir"
        echo "   2.Descomprimir"
        echo "   Cualquier tecla para salir"

        return
}

#Funcion operaciones. Realiza la operacion que indicamos.

operaciones(){
case $op in
        1) echo ==========================================================
           echo "Introduce el nombre del nuevo fichero comprimido"
       	        	read n1
       	        echo ===========================================================
                echo "¿Donde quieres guardar el fichero/carpeta?"
                	read rutac
                echo ===========================================================
                echo "Introduce los ficheros a incluir separados por un espacio"
        		read arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9
   		echo ===========================================================
                tar -czvf $n1.tar.gz $arg1 $arg2 $arg3 $arg4 $arg5 $arg6 $arg7 $arg8 $arg9
                echo ===========================================================
                echo "Paquete comprimido creado"
                mv $n1.tar.gz $rutac
                echo ===========================================================
                echo "$n1.tar.gz" "se encuentra en la ruta $rutac"
       		echo ===========================================================
       		echo "Y el contenido del paquete es el siguiente:"
       		cd $rutac
       		tar -tf $rutac/$n1.tar.gz
       		echo ;;
        2) echo ==========================================================
           echo "Donde quieres descomprimir el fichero?"
                read rutad
                echo ==========================================================
                echo "El contenido del paquete es:"
                tar -zxvf $n1.tar.gz -C $rutad
                echo ==========================================================
                echo "El contenido del directorio $rutad es;"
                ls -l $rutad
                echo ;;
        *)echo "Introduce una operacion válida (1 o 2)";;
esac
}
# Programa principal

clear
toilet -f mono12 -F metal COMPRESS
figlet "   By Javier Izquierdo"
echo
echo "                       Vamos a trabajar con ficheros"
echo
echo "      Programa para crear un paquete tar incluyendo los ficheros que indiques"
echo "           y comprimirlo. Puedes elegir la ubicación de dicho paquete y "
echo "                       desempaquetarlo donde tu quieras"
echo "             =========================================================="
echo
i="y"
while [ $i = "y" ]
        do
                menu
        	read op
		operaciones
        	echo "¿ Quieres continuar ? (y/n)"
        	read i
	done
echo "                     ============================"
echo "                        Has terminado"
figlet  "                        $USER"
echo "                     ============================"
Parte del código
Parte del código

Espero que te sea de utilidad, y recuerda que es software libre, tienes libertad para usarlo con cualquier propósito, copiarlo, estudiarlo, distribuirlo, mejorarlo y modificarlo a tu gusto.

Si tienes algún comentario que hacer sobre este artículo, al pie del post tienes un formulario para hacerlo.

O si quieres contactar conmigo por cualquier otro asunto relacionado con el sitio, en la página de contacto, tienes un formulario más adecuado.

Y para suscribirte y recibir las novedades publicadas, tienes un enlace en pie de la página o desde aquí mismo.

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.