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/

En este comando:
-cindica que estamos creando un nuevo archivo tar.-v(verbose) muestra el progreso en la terminal.-fespecifica 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

En este comando:
-xindica que estamos extrayendo los archivos.-vmuestra el progreso en la terminal.-fespecifica 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

En este comando:
-tindica que estamos listando los archivos contenidos en el archivo tar.-vmuestra el progreso en la terminal.-fespecifica 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:
-Cespecifica 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

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

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:
-chace quegunzipenví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/

En este comando:
-cindica que estamos creando un nuevo archivo tar.-zespecifica que se debe comprimir el archivo utilizandogzip.-v(verbose) muestra el progreso en la terminal.-fespecifica 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

En este comando:
-xindica que estamos extrayendo los archivos.-zespecifica que el archivo está comprimido congzip.-vmuestra el progreso en la terminal.-fespecifica 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:
-Cespecifica 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

En este comando:
-tindica que estamos listando los archivos contenidos en el archivo tar.-zespecifica que el archivo está comprimido congzip.-vmuestra el progreso en la terminal.-fespecifica 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:
--excludeespecifica 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-fileselimina 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.
Alan Sastre
Ingeniero de Software y formador, CEO en CertiDevs
Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, Bash es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.
Más tutoriales de Bash
Explora más contenido relacionado con Bash y continúa aprendiendo con nuestros tutoriales gratuitos.
Aprendizajes 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
gzipygunzip. - Realizar compresión y empaquetado simultáneo de archivos con
tarygzip. - Aplicar opciones avanzadas en
tarygzippara optimización de tareas.
Cursos que incluyen esta lección
Esta lección forma parte de los siguientes cursos estructurados con rutas de aprendizaje