Skip to content

Compresión y Descompresión

Comandos esenciales para crear, extraer y gestionar archivos comprimidos y empaquetados en Linux.

Herramienta fundamental para empaquetar y comprimir archivos. Esencial para backups, transferencias y gestión de archivos múltiples.

Terminal window
# Crear archivo tar
tar -cf archive.tar file1 file2 directory/
# Crear archivo tar comprimido con gzip
tar -czf archive.tar.gz directory/
# Crear archivo tar comprimido con bzip2
tar -cjf archive.tar.bz2 directory/
# Crear archivo tar comprimido con xz
tar -cJf archive.tar.xz directory/
# Extraer archivo tar
tar -xf archive.tar
# Extraer archivo tar.gz
tar -xzf archive.tar.gz
# Extraer archivo tar.bz2
tar -xjf archive.tar.bz2
# Listar contenido sin extraer
tar -tf archive.tar
# Extraer en directorio específico
tar -xf archive.tar -C /path/to/directory/
# Crear con verbose (mostrar progreso)
tar -cvzf archive.tar.gz directory/
{{ ... }}
# Excluir archivos
tar -czf archive.tar.gz --exclude="*.log" directory/

Uso en pentesting: Empaquetar herramientas, crear backups de evidencia, transferir múltiples archivos.

Compresor estándar de Linux con buen balance entre velocidad y compresión. Ampliamente compatible y eficiente.

Terminal window
# Comprimir archivo (reemplaza original)
gzip file.txt
# Comprimir manteniendo original
gzip -c file.txt > file.txt.gz
# Comprimir con nivel específico (1-9)
gzip -9 file.txt # Máxima compresión
gzip -1 file.txt # Compresión rápida
# Comprimir recursivamente
gzip -r directory/
# Mostrar información de compresión
gzip -l file.txt.gz

Descompresor para archivos .gz. Comando complementario a gzip para extraer contenido comprimido.

Terminal window
# Descomprimir archivo
gunzip file.txt.gz
# Descomprimir manteniendo original
gunzip -c file.txt.gz > file.txt
# Descomprimir y mostrar contenido
zcat file.txt.gz
# Buscar en archivos comprimidos
zgrep "pattern" file.txt.gz
Terminal window
# Comprimir archivo
bzip2 file.txt
# Comprimir manteniendo original
bzip2 -c file.txt > file.txt.bz2
# Comprimir con nivel específico
bzip2 -9 file.txt
# Mostrar información
bzip2 -l file.txt.bz2

Descompresor para archivos .bz2. Maneja archivos comprimidos con bzip2.

Terminal window
# Descomprimir archivo
bunzip2 file.txt.bz2
# Descomprimir manteniendo original
bunzip2 -c file.txt.bz2 > file.txt
# Mostrar contenido comprimido
bzcat file.txt.bz2
# Buscar en archivos bzip2
bzgrep "pattern" file.txt.bz2
Terminal window
# Comprimir archivo
xz file.txt
# Comprimir manteniendo original
xz -c file.txt > file.txt.xz
# Comprimir con nivel específico
xz -9 file.txt
# Mostrar información
xz -l file.txt.xz

Descompresor para archivos .xz. Extrae contenido comprimido con xz.

Terminal window
# Descomprimir archivo
unxz file.txt.xz
# Descomprimir manteniendo original
unxz -c file.txt.xz > file.txt
# Mostrar contenido
xzcat file.txt.xz

Crea archivos ZIP compatibles con múltiples sistemas operativos. Estándar universal para intercambio de archivos.

Terminal window
# Crear archivo ZIP
zip archive.zip file1 file2
# Crear ZIP de directorio
zip -r archive.zip directory/
# Crear ZIP con compresión máxima
zip -9 -r archive.zip directory/
# Crear ZIP sin compresión
zip -0 -r archive.zip directory/
# Agregar archivos a ZIP existente
zip archive.zip newfile.txt
# Crear ZIP con contraseña
zip -P password archive.zip file.txt
# Excluir archivos
zip -r archive.zip directory/ -x "*.log"

Extrae archivos de formato ZIP. Herramienta estándar para descompresión multiplataforma.

Terminal window
# Extraer archivo ZIP
unzip archive.zip
# Extraer en directorio específico
unzip archive.zip -d /path/to/directory/
# Listar contenido sin extraer
unzip -l archive.zip
# Extraer archivo específico
unzip archive.zip file.txt
# Extraer con contraseña
unzip -P password archive.zip
# Sobrescribir sin preguntar
unzip -o archive.zip
# Extraer solo archivos nuevos
unzip -u archive.zip

Maneja archivos RAR, formato propietario popular. Útil para extraer archivos de diversas fuentes.

Terminal window
# Crear archivo RAR
rar a archive.rar file1 file2
# Crear RAR de directorio
rar a -r archive.rar directory/
# Crear con compresión máxima
rar a -m5 archive.rar directory/
# Crear RAR con contraseña
rar a -p archive.rar file.txt
# Crear volúmenes divididos
rar a -v100M archive.rar largefile.iso
Terminal window
# Extraer archivo RAR
unrar x archive.rar
# Extraer en directorio específico
unrar x archive.rar /path/to/directory/
# Listar contenido
unrar l archive.rar
# Extraer con contraseña
unrar x -p archive.rar
# Probar integridad
unrar t archive.rar

Compresor de alta eficiencia con soporte para múltiples formatos. Excelente ratio de compresión.

Terminal window
# Crear archivo 7z
7z a archive.7z file1 file2
# Crear 7z de directorio
7z a archive.7z directory/
# Extraer archivo 7z
7z x archive.7z
# Listar contenido
7z l archive.7z
# Crear con contraseña
7z a -p archive.7z file.txt
# Crear con compresión máxima
7z a -mx9 archive.7z directory/
# Probar integridad
7z t archive.7z
Terminal window
# Crear backup completo de directorio
tar -czf evidence_$(date +%Y%m%d_%H%M%S).tar.gz /path/to/evidence/
# Comprimir logs del sistema
tar -czf system_logs.tar.gz /var/log/ --exclude="*.gz"
# Crear archivo con metadatos preservados
tar -czpf backup.tar.gz directory/
Terminal window
# Buscar patrones en archivos comprimidos
zgrep -i "password\|secret" *.gz
bzgrep -i "admin\|root" *.bz2
# Extraer y analizar sin descomprimir completamente
tar -tzf archive.tar.gz | grep -E "\.(conf|cfg|ini)$"
# Verificar integridad de archivos
gzip -t *.gz
bzip2 -t *.bz2
Terminal window
# Comprimir herramientas de pentesting
tar -czf tools.tar.gz /opt/tools/ --exclude="*.log"
# Crear archivo autoextraíble
cat > extract.sh << 'EOF'
#!/bin/bash
tail -n +10 $0 | tar -xzf -
exit 0
EOF
cat extract.sh tools.tar.gz > tools_installer.sh
chmod +x tools_installer.sh
Terminal window
# Extraer metadatos de archivos ZIP
unzip -l suspicious.zip | awk '{print $4}' | sort
# Buscar archivos sospechosos en archivos comprimidos
tar -tf archive.tar | grep -E "\.(exe|bat|cmd|scr)$"
# Verificar timestamps en archivos
tar -tvf archive.tar | sort -k4,5
Terminal window
# Prueba de diferentes métodos
time gzip -c largefile > test.gz
time bzip2 -c largefile > test.bz2
time xz -c largefile > test.xz
# Comparar tamaños
ls -lh test.*
#!/bin/bash
FILE="testfile"
echo "Método Tiempo Tamaño Ratio"
echo "=================================="
# gzip
start=$(date +%s.%N)
gzip -c $FILE > test.gz
end=$(date +%s.%N)
size=$(stat -c%s test.gz)
printf "gzip %.2fs %d %.1f%%\n" $(echo "$end - $start" | bc) $size $(echo "scale=1; $size * 100 / $(stat -c%s $FILE)" | bc)
# Repetir para otros métodos...
Terminal window
# Sincronizar con compresión
rsync -avz source/ destination/
# Backup incremental comprimido
rsync -avz --backup --backup-dir=backup_$(date +%Y%m%d) source/ destination/
Terminal window
# Crear imagen comprimida de disco
dd if=/dev/sda | gzip > disk_image.gz
# Restaurar imagen comprimida
gunzip -c disk_image.gz | dd of=/dev/sda

Tip: Para pentesting, tar.gz es generalmente la mejor opción por su compatibilidad universal y buen balance entre compresión y velocidad. Para máxima compresión usa xz, para velocidad usa gzip -1.