GNU Bash

Bash

Tutorial Bash: Comprimir y descomprimir archivos en Bash con tar y gzip

Bash: Aprende a comprimir y descomprimir archivos utilizando tar y gzip en sistemas Unix y Linux. Optimiza la gestión de archivos y mejora la eficiencia del almacenamiento.

Uso de tar para empaquetar y desempaquetar archivos y directorios

El comando tar (abreviatura de "tape archive") se utiliza en Shell y Bash scripts para empaquetar y desempaquetar archivos y directorios en sistemas operativos basados en Unix, como Linux. Este comando es vital para la gestión de archivos y directorios en entornos de servidores y desarrollo, facilitando la transferencia y almacenamiento de grandes volúmenes de datos.

Para empaquetar archivos y directorios con tar, se utiliza la opción -c (create). A continuación, se muestra cómo empaquetar un directorio denominado mi_directorio en un archivo llamado archivo.tar:

tar -cvf archivo.tar mi_directorio/

Consola con los compandos de arriba.

En este comando:

  • -c indica que estamos creando un nuevo archivo tar.
  • -v (verbose) muestra el progreso en la terminal.
  • -f especifica el nombre del archivo tar a crear.

Para desempaquetar un archivo tar, se utiliza la opción -x (extract). A continuación, se muestra cómo desempaquetar archivo.tar en el directorio actual:

tar -xvf archivo.tar

Consola con los compandos de arriba.

En este comando:

  • -x indica que estamos extrayendo los archivos.
  • -v muestra el progreso en la terminal.
  • -f especifica el archivo tar a extraer.

Para listar el contenido de un archivo tar sin extraerlo, se utiliza la opción -t (list):

tar -tvf archivo.tar

Consola con los compandos de arriba.

En este comando:

  • -t indica que estamos listando los archivos contenidos en el archivo tar.
  • -v muestra el progreso en la terminal.
  • -f especifica el archivo tar del cual listar el contenido.

Además, tar permite empaquetar y desempaquetar archivos y directorios en ubicaciones específicas. Por ejemplo, para extraer archivo.tar en un directorio específico como destino/, se puede hacer de la siguiente manera:

tar -xvf archivo.tar -C destino/

En este comando:

  • -C especifica el directorio de destino donde se extraerán los archivos.

El comando tar también permite empaquetar y desempaquetar archivos tar comprimidos con gzip (archivos .tar.gz). Sin embargo, la combinación de tar con gzip se tratará en otra sección de esta lección.

Al utilizar tar en Bash scripts y comandos Linux, es importante considerar las opciones y parámetros adicionales que pueden optimizar su uso, adaptándose a necesidades específicas como la exclusión de ciertos archivos o la preservación de permisos y propiedades de archivos.

Comandos gzip y gunzip para comprimir y descomprimir archivos

En Bash y Shell, los comandos gzip y gunzip se utilizan para comprimir y descomprimir archivos, respectivamente. Estos comandos son esenciales en la gestión de archivos y directorios en sistemas Linux, permitiendo reducir el tamaño de los archivos para su almacenamiento y transmisión eficiente.

Para comprimir un archivo utilizando gzip, se emplea la siguiente sintaxis:

gzip nombre_archivo

Este comando reemplazará el archivo original por una versión comprimida con la extensión .gz. Por ejemplo, para comprimir un archivo llamado mi_archivo.txt, se haría lo siguiente:

gzip mi_archivo.txt

Consola con los compandos de arriba.

El resultado será un archivo llamado mi_archivo.txt.gz. Si se desea mantener el archivo original y crear una copia comprimida, se puede utilizar la opción -k (keep):

gzip -k mi_archivo.txt

Para descomprimir un archivo comprimido con gzip, se utiliza el comando gunzip. La sintaxis básica es:

gunzip nombre_archivo.gz

Por ejemplo, para descomprimir mi_archivo.txt.gz, se haría lo siguiente:

gunzip mi_archivo.txt.gz

Consola con los compandos de arriba.

Esto restaurará el archivo original mi_archivo.txt y eliminará el archivo comprimido .gz. Si se desea mantener el archivo comprimido y descomprimir una copia, se puede utilizar la opción -k con gunzip:

gunzip -k mi_archivo.txt.gz

Ambos comandos permiten trabajar con múltiples archivos a la vez. Para comprimir múltiples archivos, se puede hacer así:

gzip archivo1 archivo2 archivo3

Y para descomprimir múltiples archivos:

gunzip archivo1.gz archivo2.gz archivo3.gz

Además, gzip y gunzip soportan la compresión y descompresión de archivos a través de la entrada y salida estándar, lo que permite su uso en pipelines. Por ejemplo, para comprimir el resultado de un comando ls y guardarlo en un archivo comprimido:

ls | gzip > listado_archivos.gz

Y para descomprimir un archivo y enviar su contenido a otro comando:

gunzip -c listado_archivos.gz | less

En este comando:

  • -c hace que gunzip envíe la salida descomprimida a la salida estándar en lugar de crear un archivo.

También es posible ajustar el nivel de compresión de gzip especificando directamente un número del 1 al 9 después del guion, sin ninguna letra. Por ejemplo, para una compresión máxima (pero más lenta):

gzip -9 mi_archivo.txt

Y para una compresión mínima (más rápida):

gzip -1 mi_archivo.txt

En este caso:

  • -1: Establece el nivel de compresión al más rápido (menor compresión).
  • -9: Establece el nivel de compresión al máximo (mayor compresión).

El uso de gzip y gunzip en Bash scripts y comandos Linux es una práctica común para la gestión eficiente de archivos, especialmente en entornos de servidores y desarrollo.

Combinación de tar con gzip para crear archivos .tar.gz

Para combinar los comandos tar y gzip en Bash y Shell y crear archivos comprimidos con la extensión .tar.gz, se utiliza una opción específica de tar que facilita este proceso. Esta combinación es común en la gestión de archivos y directorios en sistemas Linux, permitiendo empaquetar y comprimir grandes volúmenes de datos de manera eficiente, una práctica habitual en Bash scripts y comandos Linux.

La opción -z de tar permite comprimir el archivo tar con gzip en un solo paso. A continuación, se muestra cómo empaquetar y comprimir un directorio llamado mi_directorio en un archivo denominado archivo.tar.gz:

tar -czvf archivo.tar.gz mi_directorio/

Consola con los compandos de arriba.

En este comando:

  • -c indica que estamos creando un nuevo archivo tar.
  • -z especifica que se debe comprimir el archivo utilizando gzip.
  • -v (verbose) muestra el progreso en la terminal.
  • -f especifica el nombre del archivo tar a crear.

Para desempaquetar y descomprimir un archivo .tar.gz, se utiliza la opción -x con -z:

tar -xzvf archivo.tar.gz

Consola con los compandos de arriba.

En este comando:

  • -x indica que estamos extrayendo los archivos.
  • -z especifica que el archivo está comprimido con gzip.
  • -v muestra el progreso en la terminal.
  • -f especifica el archivo tar a extraer.

También es posible especificar un directorio de destino para la extracción utilizando la opción -C:

tar -xzvf archivo.tar.gz -C destino/

En este comando:

  • -C especifica el directorio de destino donde se extraerán los archivos.

Para listar el contenido de un archivo .tar.gz sin extraerlo, se utiliza la opción -t con -z:

tar -tzvf archivo.tar.gz

Consola con los compandos de arriba.

En este comando:

  • -t indica que estamos listando los archivos contenidos en el archivo tar.
  • -z especifica que el archivo está comprimido con gzip.
  • -v muestra el progreso en la terminal.
  • -f especifica el archivo tar del cual listar el contenido.

La combinación de tar y gzip también permite usar otras opciones avanzadas para optimizar su uso. Por ejemplo, para excluir ciertos archivos o directorios durante la creación del archivo comprimido, se puede utilizar la opción --exclude:

tar -czvf archivo.tar.gz mi_directorio/ --exclude=mi_directorio/archivo_excluido

En este comando:

  • --exclude especifica los archivos o directorios a excluir.

Otra opción útil es --remove-files, que elimina los archivos originales después de haberlos empaquetado y comprimido:

tar -czvf archivo.tar.gz mi_directorio/ --remove-files

En este comando:

  • --remove-files elimina los archivos originales después de crear el archivo tar comprimido.

El uso de tar combinado con gzip en Bash scripts y comandos Linux es esencial para la gestión eficiente de archivos y directorios, especialmente en entornos de servidores y desarrollo, donde la optimización del almacenamiento y la transferencia de datos es crucial.

Certifícate en Bash con CertiDevs PLUS

Ejercicios de esta lección Comprimir y descomprimir archivos en Bash con tar y gzip

Evalúa tus conocimientos de esta lección Comprimir y descomprimir archivos en Bash con tar y gzip con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de Bash

Accede a todas las lecciones de Bash y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Principales Distribuciones De Linux

GNU Bash

Introducción Y Entorno

Instalar Ubuntu En Windows Con Wsl

GNU Bash

Introducción Y Entorno

Introducción A Shell Y Bash

GNU Bash

Introducción Y Entorno

Comandos De Navegación Pwd, Cd Y Ls

GNU Bash

Navegación Y Gestión De Archivos Y Directorios

Manipulación De Archivos Y Directorios

GNU Bash

Navegación Y Gestión De Archivos Y Directorios

Comprimir Y Descomprimir Archivos En Bash Con Tar Y Gzip

GNU Bash

Navegación Y Gestión De Archivos Y Directorios

Manipulación De Permisos De Archivos Y Directorios Con Chmod, Chown Y Chgrp

GNU Bash

Navegación Y Gestión De Archivos Y Directorios

Enlaces Simbólicos Y Duros

GNU Bash

Navegación Y Gestión De Archivos Y Directorios

Redirección Y Tuberías

GNU Bash

Navegación Y Gestión De Archivos Y Directorios

Gestión De Procesos Con Ps, Htop Y Pgrep

GNU Bash

Gestión De Procesos Y Servicios

Gestión De Servicios Con Systemd

GNU Bash

Gestión De Procesos Y Servicios

Configuración De Bash

GNU Bash

Interacción Con El Sistema

Redes Y Comunicación Con Ifconfig, Ip Y Netstat

GNU Bash

Interacción Con El Sistema

Transferencia De Archivos Y Comunicación Remota Con Ssh

GNU Bash

Interacción Con El Sistema

Gestión De Paquetes Y Dependencias Y Actualización Del Sistema

GNU Bash

Interacción Con El Sistema

Variables Y Tipos De Datos

GNU Bash

Sintaxis Y Creación De Scripts En Bash

Operadores

GNU Bash

Sintaxis Y Creación De Scripts En Bash

Sintaxis De Control De Flujo

GNU Bash

Sintaxis Y Creación De Scripts En Bash

Expresiones Regulares Y Manipulación De Texto

GNU Bash

Sintaxis Y Creación De Scripts En Bash

Definición Y Uso De Funciones

GNU Bash

Sintaxis Y Creación De Scripts En Bash

En esta lección

Objetivos de aprendizaje de esta lección

  • Comprender cómo empaquetar archivos y directorios utilizando el comando tar.
  • Aprender a descomprimir archivos tar con tar.
  • Listar el contenido de archivos tar sin extraerlos.
  • Comprimir y descomprimir archivos utilizando gzip y gunzip.
  • Realizar compresión y empaquetado simultáneo de archivos con tar y gzip.
  • Aplicar opciones avanzadas en tar y gzip para optimización de tareas.