Comprimir y descomprimir archivos en Bash

Intermedio
Bash
Bash
Actualizado: 05/12/2024

¡Desbloquea el curso de Bash completo!

IA
Ejercicios
Certificado
Entrar

Mira la lección en vídeo

Accede al vídeo completo de esta lección y a más contenido exclusivo con el Plan Plus.

Desbloquear Plan Plus

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

Guarda tu progreso

Inicia sesión para no perder tu progreso y accede a miles de tutoriales, ejercicios prácticos y nuestro asistente de IA.

Progreso guardado
Asistente IA
Ejercicios
Iniciar sesión gratis

Más de 25.000 desarrolladores ya confían en CertiDevs

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.

Aprendizajes de esta lección de Bash

  • 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.

Completa este curso de Bash y certifícate

Únete a nuestra plataforma de cursos de programación y accede a miles de tutoriales, ejercicios prácticos, proyectos reales y nuestro asistente de IA personalizado para acelerar tu aprendizaje.

Asistente IA

Resuelve dudas al instante

Ejercicios

Practica con proyectos reales

Certificados

Valida tus conocimientos

Más de 25.000 desarrolladores ya se han certificado con CertiDevs

⭐⭐⭐⭐⭐
4.9/5 valoración