Archivo BZIP2 (.bz2)

Bzip2 Estándar

Bzip2 (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 mayor que el Gzip clásico.

Inspección y metadatos

Los sistemas operativos y analizadores de archivos identifican los archivos de BZ2 inspeccionando la secuencia de bytes binarios inicial:

Selecciona o arrastra archivos aquí

Privado - los archivos nunca salen de tu dispositivo

o pega Ctrl+V
Garantía de privacidad sin transmisión de red: 0 bytes subidos a servidores externos. Todo el procesamiento se realizó de forma local en el entorno seguro de tu navegador.

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 68

REPRESENTACIÓN ASCII: BZh

Estandarización: Bzip2 Open Source Standard

Especificaciones técnicas

Arquitectura del contenedorCabecera de flujo ('BZh' + dígito de tamaño de bloque 1-9) seguida de bloques de datos comprimidos y CRC de 32 bits
CompresiónTransformada de Burrows-Wheeler (BWT), transformada Move-to-Front (MTF) y codificación Huffman
Orden de bytes (Endianness)Estructura de flujo de bits big-endian
Espacios de colorN/D (Flujo de compresión de bytes)
Canales y estructuraFlujo de bytes comprimido de un solo archivo
Dimensiones máximasLongitud de flujo ilimitada (admite tamaños de archivo arbitrarios)
TransparenciaPreservación de datos sin pérdida exacta bit a bit al 100%
Streaming y progresivoTransmisió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écnicoBZ2 (Actual)GZXZZSTD
Algoritmo principalTransformada de Burrows-Wheeler (BWT)Deflate (LZ77 + Huffman)LZMA / LZMA2Entropía de estado finito + LZ77
Compresión vs GzipEntra un 10 % y un 20 % más pequeño que GzipEstándar baseEntra un 20 % y un 30 % más pequeño que Gzipentra un 10 % y un 20 % más pequeño que Gzip
Velocidad de descompresiónLenta (aprox. 30-50 MB/s)Rápida (aprox. 300 MB/s)Moderada (aprox. 100 MB/s)Muy rápida (>1,5 GB/s)
Sumas de comprobación de bloquesCRC de 32 bits por bloqueCRC32 de flujo únicoCRC64 de flujoxxHash64 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: Usa la utilidad «bzip2recover» para recuperar los bloques intactos que rodean el sector dañado.

Análisis de seguridad y vectores de ataque al analizador

Las implementaciones de Bzip2 implican una clasificación compleja de flujos de bits y el análisis de tablas de Huffman, que históricamente han presentado fallos de desbordamiento de enteros.

Vectores de ataque conocidos

  • Desbordamiento de enteros en la asignación de matrices de ordenación BWT (p. ej. CVE-2016-3189).
  • Escritura fuera de límites durante el construcción de la tabla de decodificación Huffman.
  • Denegación de servicio mediante patrones de entrada maliciosos que provocan tiempos de ordenación BWT cuadráticos en el peor de los casos.

Mejores prácticas defensivas: Decodifica archivos BZ2 con decodificadores WASM seguros para la memoria y con límites de memoria impuestos.

Orígenes históricos e hitos

2019Federico Mena Quintero modernizó el mantenimiento del código base de bzip2 bajo bzip3 y las iniciativas modernas de código abierto.
2000Se lanzó la versión 1.0, y estabilizó el formato bzip2 en las distribuciones de Linux y los administradores de paquetes.
1996Julian Seward lanza bzip2 0.15 para reemplazar el formato bzip anterior que tenía problemas de patentes.

Ventajas principales

  • Comprime entre un 10 % y un 20 % más que Gzip en paquetes TAR de código fuente, registros del sistema y bases de datos de texto.
  • La arquitectura de bloques independientes (de 100 kB a 900 kB) incluye sumas de comprobación CRC de 32 bits por bloque para comprobar la integridad de forma fiable.
  • Está disponible de forma nativa en muchas distribuciones de Linux, BSD y macOS; su inclusión depende de cada distribución.

Limitaciones técnicas

  • 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 combinarse 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 indica el tamaño del bloque en cientos de kilobytes (p. 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 pasar 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.

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 aunque parte del archivo esté dañada.

¿Cómo puedo extraer un archivo .tar.bz2?

Puedes descomprimir archivos .tar.bz2 directamente en tu navegador con File2File.app, sin tener que usar herramientas de línea de comandos.