15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar
04.08.2025

Cómo Descomprimir un Archivo .tar.gz en Linux: Guía Completa con Consejos Avanzados

Trabajar con archivos comprimidos es una realidad cotidiana en cualquier entorno Linux. Entre los formatos más utilizados está .tar.gz, un formato de dos etapas que combina tar para archivado y gzip para compresión. Ya sea que estés desempaquetando código fuente de software, restaurando copias de seguridad o implementando archivos de configuración en un servidor VPS Hosting, saber cómo manejar archivos .tar.gz de manera eficiente y segura es una habilidad fundamental de Linux.

Esta guía cubre todo, desde el comando de extracción básico hasta técnicas avanzadas para archivos grandes, endurecimiento de seguridad y mejores prácticas de scripting.

¿Qué es un archivo .tar.gz?

Un archivo .tar.gz — a menudo llamado tarball — se crea en dos pasos:

  1. tar agrupa múltiples archivos y directorios en un único archivo (.tar)
  2. gzip comprime ese archivo para reducir su tamaño (.tar.gz o .tgz)

Casos de uso comunes

  • Distribuir código fuente de software
  • Empaquetar archivos de configuración y copias de seguridad
  • Archivar archivos de registro para almacenamiento a largo plazo
  • Transferir árboles de directorios grandes entre servidores

Nombre de archivo de ejemplo: project-files.tar.gz

Comando de extracción básico

El comando estándar para extraer un archivo .tar.gz es:

tar -xvzf file.tar.gz

Desglose de banderas

BanderaSignificado
-xExtraer archivos del archivo
-vModo detallado — lista cada archivo mientras se extrae
-zDescomprimir usando gzip
-fEspecifica el nombre del archivo a operar

Este único comando maneja la gran mayoría de tareas de extracción cotidianas.

Extraer a un directorio específico

Por defecto, tar extrae archivos en el directorio de trabajo actual. Para redirigir la salida a una ubicación específica, usa la bandera -C:

tar -xvzf file.tar.gz -C /path/to/target-directory

> Nota: El directorio de destino debe existir ya. Créalo primero con mkdir -p /path/to/target-directory si es necesario.

Este enfoque es especialmente útil en scripts de implementación automatizados u organizando múltiples archivos en un servidor de producción.

Vista previa del contenido del archivo antes de extraer

Antes de extraer un archivo — particularmente uno de una fuente desconocida — es una buena práctica inspeccionar su contenido primero:

tar -tvzf file.tar.gz

La bandera -t lista todos los archivos y directorios dentro del archivo sin extraer nada. Esto te ayuda a:

  • Entender la estructura de directorios interna
  • Evitar sobrescribir accidentalmente archivos existentes
  • Detectar rutas sospechosas o inesperadas

Extraer archivos o directorios específicos

No siempre necesitas extraer un archivo completo. Para extraer un único archivo o carpeta, especifica su ruta exactamente como aparece dentro del archivo:

tar -xvzf file.tar.gz path/to/specific-file.txt

Para encontrar la ruta interna exacta, ejecuta el comando --list primero:

tar -tvzf file.tar.gz | grep filename

> Importante: Usa la ruta relativa mostrada en el listado del archivo, no una ruta absoluta que comience con /.

Consideraciones de seguridad al extraer archivos no confiables

Extraer archivos .tar.gz de fuentes desconocidas o no confiables puede presentar riesgos de seguridad graves, incluyendo ataques de traversal de directorios donde archivos maliciosos sobrescriben archivos críticos del sistema. Aplica estas protecciones:

Prevenir sobrescritura de directorios

tar --no-overwrite-dir -xvzf file.tar.gz

Eliminar componentes de ruta inicial

La bandera --strip-components elimina niveles de directorio iniciales de las rutas extraídas, lo que neutraliza intentos de inyección de ruta absoluta:

tar --strip-components=1 -xvzf untrusted-archive.tar.gz

Extraer en un directorio aislado

Siempre extrae archivos no confiables en un directorio sandbox dedicado e inspecciona el contenido antes de mover archivos a su destino final:

mkdir /tmp/sandbox && tar -xvzf untrusted-archive.tar.gz -C /tmp/sandbox

Estas prácticas son especialmente críticas en infraestructura compartida. Si administras múltiples sitios o clientes, considera usar entornos de Alojamiento Web Compartido con límites de permisos estrictos.

Manejo eficiente de archivos grandes

Para archivos que abarcan varios gigabytes, la extracción estándar puede parecer una caja negra. Estas técnicas mejoran la visibilidad y el rendimiento.

Monitorear progreso con pv

pv (pipe viewer) muestra una barra de progreso en tiempo real y velocidad de transferencia:

pv file.tar.gz | tar xzvf -

Instala pv si aún no está disponible:

# Debian/Ubuntu
sudo apt install pv

# CentOS/RHEL/AlmaLinux
sudo dnf install pv

Desactivar modo detallado para extracción más rápida

Al extraer archivos muy grandes, la bandera -v puede ralentizar las cosas imprimiendo miles de nombres de archivo en la terminal. Elimínala para mejor rendimiento:

tar -xzf file.tar.gz

Usar descompresión paralela con pigz

Para servidores multi-núcleo, pigz reemplaza gzip con una implementación paralela y puede reducir dramáticamente el tiempo de descompresión:

tar -I pigz -xf file.tar.gz

Descomprimir en dos pasos separados

A veces necesitas un control más fino — por ejemplo, al integrar en un pipeline o inspeccionar el archivo .tar intermedio antes de desempaquetar. Puedes dividir el proceso en dos comandos:

# Step 1: Decompress gzip to get a plain .tar archive
gunzip file.tar.gz

# Step 2: Extract the .tar archive
tar -xvf file.tar

Este enfoque es útil cuando:

  • Quieres inspeccionar el .tar sin procesar antes de la extracción
  • Tu pipeline procesa etapas .tar y .gz por separado
  • Necesitas pasar el archivo .tar a otra herramienta

Crear un archivo .tar.gz

Saber cómo crear archivos es tan importante como extraerlos. La sintaxis refleja la extracción pero usa -c (crear) en lugar de -x:

tar -czvf archive-name.tar.gz /path/to/directory/

Excluir archivos o directorios específicos

tar -czvf archive.tar.gz /path/to/directory/ --exclude='*.log' --exclude='node_modules'

Esto es invaluable para crear paquetes de implementación limpios o copias de seguridad sin bloat innecesario.

Automatizar operaciones .tar.gz en scripts

En servidores de producción — ya sea que ejecutes un Servidor Dedicado o un VPS administrado — automatizar operaciones de archivo ahorra tiempo y reduce errores humanos.

Ejemplo: Script de copia de seguridad automatizada

#!/bin/bash

BACKUP_DIR="/var/backups"
SOURCE_DIR="/var/www/html"
DATE=$(date +%Y-%m-%d)
ARCHIVE="$BACKUP_DIR/website-backup-$DATE.tar.gz"

mkdir -p "$BACKUP_DIR"
tar -czf "$ARCHIVE" --exclude='*.tmp' "$SOURCE_DIR"

echo "Backup created: $ARCHIVE"

Programa esto con un trabajo cron para copias de seguridad diarias completamente automatizadas:

0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

Usar gestores de archivos GUI (Opcional)

Si estás trabajando en un entorno de escritorio Linux, las herramientas gráficas proporcionan una alternativa de arrastrar y soltar:

Entorno de escritorioGestor de archivos
GNOMEFile Roller
KDE PlasmaArk
XfceThunar Archive Plugin

Estas herramientas soportan .tar.gz de forma nativa y son adecuadas para uso ocasional. Sin embargo, para administración de servidores, la línea de comandos sigue siendo el enfoque más confiable y scriptable.

Referencia rápida: Comandos tar esenciales

TareaComando
Extraer archivotar -xvzf file.tar.gz
Extraer a directoriotar -xvzf file.tar.gz -C /target/
Listar contenidostar -tvzf file.tar.gz
Extraer archivo únicotar -xvzf file.tar.gz path/to/file
Crear archivotar -czvf archive.tar.gz /source/
Monitorear progreso`pv file.tar.gztar xzvf -`
Eliminar
15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar