Archivo BZIP2 (.bz2)
Bzip2 EstándarBzip2 (BZ2) es una utilidad clásica de compresión de Unix libre de patentes y un formato de archivo creado por Julian Seward, que utiliza la transformada de Burrows-Wheeler para lograr una compresión significativamente más estricta que el Gzip clásico.
Inspeccionar y metadatos
Los sistemas operativos y analizadores de archivos identifican los archivos de BZ2 inspeccionando la secuencia de bytes binarios inicial:
Firma de cabecera a nivel de bytes (Bytes mágicos)
Los sistemas operativos y analizadores de archivos identifican los archivos de BZ2 inspeccionando la secuencia de bytes binarios inicial:
FIRMA HEXADECIMAL (DESPLAZAMIENTO 0):
42 5A 68REPRESENTACIÓN ASCII: BZh
Estandarización: Bzip2 Open Source Standard
Especificaciones técnicas
| Arquitectura del contenedor | Cabecera de flujo ('BZh' + dígito de tamaño de bloque 1-9) seguida de bloques de datos comprimidos y CRC de 32 bits |
| Compresión | Transformada de Burrows-Wheeler (BWT), transformada Move-to-Front (MTF) y codificación Huffman |
| Orden de bytes (Endianness) | Estructura de flujo de bits de gran-extremo |
| Espacios de color | N/D (Flujo de compresión de bytes) |
| Canales y estructura | Flujo de bytes comprimido de un solo archivo |
| Dimensiones máximas | Longitud de flujo ilimitada (admite tamaños de archivo arbitrarios) |
| Transparencia | Preservación de datos sin pérdida exacta bit a bit al 100% |
| Streaming y progresivo | Transmisión secuencial bloque por bloque con sumas de comprobación CRC independientes por bloque |
Matriz de comparación técnica: BZ2 frente a la competencia
| Atributo técnico | BZ2 (Actual) | GZ | XZ | ZSTD |
|---|---|---|---|---|
| Algoritmo principal | Transformada de Burrows-Wheeler (BWT) | Desinflar (LZ77 + Huffman) | LZMA / LZMA2 | Entropía de estado finito + LZ77 |
| Compresión vs Gzip | 10% - 20% más pequeño que Gzip | Estándar base | 20% - 30% más pequeño que Gzip | 10% - 20% más pequeño que Gzip |
| Velocidad de descompresión | Lenta (~30-50 MB/s) | Rápida (~300 MB/s) | Moderada (~100 MB/s) | Ultrarrápida (>1.5 GB/s) |
| Sumas de comprobación de bloques | CRC de 32 bits por bloque | CRC32 de flujo único | CRC64 de flujo | xxHash64 de flujo |
Modos de corrupción comunes y guía de recuperación hexadecimal
La extracción se aborta con 'bzip2: Error de integridad de datos al descomprimir'.
Causa raíz: Bit invertido en el bloque comprimido que hace que la matriz de permutación inversa BWT falle en la validación CRC32.
Recuperación: Utilice la utilidad 'bzip2recover' para rescatar los bloques no dañados que rodean el sector corrupto.
Análisis de seguridad y vectores de ataque al analizador
Las implementaciones de Bzip2 implican una clasificación compleja de flujos de bits y análisis de tablas Huffman que históricamente han experimentado fallas de desbordamiento de enteros.
Vectores de ataque conocidos
- Desbordamiento de enteros en la asignación de matrices de clasificación BWT (ej. CVE-2016-3189).
- Escritura fuera de límites durante el ensamblaje de la tabla de decodificación Huffman.
- Denegación de servicio a través de patrones de entrada patológicos que provocan tiempos de clasificación BWT cuadráticos en el peor de los casos.
Mejores prácticas defensivas: Decodifique archivos BZ2 utilizando decodificadores WASM seguros para la memoria con límites de memoria aplicados.
Orígenes históricos e hitos
Ventajas clave y pros
- Supera consistentemente al Gzip clásico en un 10% a 20% en tarballs de código fuente, registros del sistema y bases de datos de texto.
- La arquitectura de bloques independientes (100k a 900k) incluye sumas de comprobación CRC de 32 bits por bloque para una verificación de integridad robusta.
- Disponibilidad nativa universal en todas las distribuciones de línea de comandos de Linux, BSD y macOS.
Limitaciones técnicas y contras
- Velocidades de compresión y descompresión significativamente más lentas en comparación con los algoritmos modernos como Zstandard.
- Compresión de un solo archivo únicamente: requiere emparejamiento con TAR (.tar.bz2) para empaquetar varios archivos o directorios.
- Mayor uso de CPU durante la descompresión que Gzip o Zstd.
Curiosidades técnicas interesantes
- Los bytes mágicos 'BZh' significan 'Burrows-Wheeler Zip Huffman', seguidos de un dígito ('1' a '9') que denota el tamaño del bloque en cientos de kilobytes (ej. 'BZh9' = 900 KB).
- El código fuente del Kernel de Linux se distribuyó exclusivamente en formato .tar.bz2 durante más de una década antes de migrar a .xz.
- La transformada de Burrows-Wheeler no comprime los datos directamente; permuta el orden de los caracteres para que las letras idénticas se agrupen, lo que facilita su compresión mediante la codificación Huffman.
Preguntas técnicas frecuentes
¿Cuál es la diferencia entre .gz y .bz2?
.bz2 utiliza la transformada de Burrows-Wheeler para lograr tamaños de archivo más pequeños que .gz, pero tarda más en comprimirse y descomprimirse.
¿Por qué bzip2 tiene un comando 'bzip2recover'?
Debido a que bzip2 comprime los datos en bloques independientes de 900 KB, cada uno con su propio CRC, bzip2recover puede extraer bloques no dañados incluso si parte del archivo está corrupto.
¿Cómo puedo extraer un archivo .tar.bz2?
Puede descomprimir archivos .tar.bz2 directamente en su navegador web con File2File.app sin necesidad de ejecutar herramientas de línea de comandos.