BZ2

¿Qué es un archivo BZ2?

Comprime mejor que GZ y tarda bastante más en hacerlo.

Qué es BZ2

BZ2 es un formato de flujo, que se escribe y se lee de principio a fin. Se usa para el archivado.

La extensión es .bz2 y el nombre completo, Bzip2 Archive. Ambos importan menos que lo que el archivo puede contener, y de eso trata el resto de esta página.

De dónde viene BZ2

Se remonta a 1996.

A un formato que lleva tanto tiempo siendo legible se le puede confiar algo que quieras recuperar dentro de diez años.

La especificación es pública

Está publicada entera, así que cualquiera puede implementarla leyendo el documento en vez de a base de inspeccionar archivos. Por eso aparece en tantos programas, y por eso los archivos escritos hace veinte años siguen abriéndose hoy. Publicada no quiere decir libre de regalías: cuando un formato envuelve un códec, la licencia de las patentes es un asunto aparte que la norma no resuelve.

Es un formato heredado

Sigue abriéndose en todas partes y los programas antiguos aún lo escriben, pero ya no se construye nada nuevo a su alrededor. Convierte lo que quieras conservar y no lo elijas para algo que empieza hoy.

No se tira nada

BZ2 guarda su contenido exactamente. Volver a guardarlo no cambia nada, así que puedes abrirlo, editarlo y guardarlo tantas veces como quieras sin acumular daño; eso es lo que lo convierte en un formato de trabajo y no de entrega.

Contiene exactamente un archivo

BZ2 comprime un solo flujo y no tiene ninguna noción de nombre de archivo ni de carpeta. Por eso se ve tan a menudo junto a TAR, que aporta la estructura que le falta.

De dónde sale su ratio de compresión

Trabaja por tramos de 900 KB: para que una repetición se pueda comprimir, tiene que caber entera dentro de uno.

Ese único número explica la mayor parte de la diferencia entre un formato de archivo comprimido y otro. Un tramo mayor encuentra más repetición y tarda más y gasta más memoria en hacerlo: ese es todo el intercambio.

Qué hace para protegerse

BZ2 lleva una suma de verificación, para que un archivo dañado se detecte en vez de leerse mal en silencio.

Una suma de verificación no repara nada. Te dice que el archivo está mal, que es la diferencia entre enterarte ahora y enterarte por la persona a la que se lo enviaste.

Qué abre BZ2

bzip2, 7-Zip y Keka lo leen, y también la mayoría de programas del mismo tipo.

Cuando un archivo no se abre, el formato rara vez es el problema: lo más habitual es que el programa sea anterior al formato. Convertir a algo más antiguo es la salida fiable, y para eso está el resto de este sitio.

Abrirlo en el navegador

Ningún navegador lo lee.

Ese es el motivo más frecuente para convertirlo: no que el formato sea malo, sino que el sitio donde quieres mostrar el archivo no sabe leerlo.

Es un formato de entrega

BZ2 está pensado para entregarse, no para trabajar dentro. Editar uno es posible y rara vez agradable; lo sensato es cambiar el original y volver a exportar.

Qué sale mal con él

Las quejas recurrentes: guarda un único flujo y no sabe describir una carpeta.

Nada de esto es motivo para evitar el formato. Son las cosas que conviene conocer antes de que una de ellas te sorprenda, que es una afirmación distinta y más útil.

Lo aplastaron por los dos lados, y conviene decirlo

Bzip2 apareció en 1996 comprimiendo bastante mejor que gzip, y durante una década larga `.tar.bz2` fue la opción intermedia sensata para publicar código fuente y archivos históricos. Esa etapa terminó. xz comprime más, zstd va mucho más rápido con proporciones parecidas, y los dos descomprimen antes que bzip2.

Así que un `.bz2` con el que te topas hoy es casi siempre antiguo: una versión archivada, un conjunto de datos publicado hace años, una copia de seguridad de un sistema cuya configuración se fijó en 2008. No hay ningún argumento vivo para crear uno nuevo, y la pregunta útil es cómo abrir el que tienes.

Ordena los datos en lugar de buscar repeticiones

Los demás compresores de esta familia — gzip, xz, 7z, zip — miran hacia atrás buscando secuencias que ya han visto. Bzip2 hace otra cosa: la transformada de Burrows-Wheeler reordena un bloque de datos de manera que los caracteres parecidos acaban juntos, y después un codificador sencillo aprovecha las rachas que esa reordenación ha creado.

Lo sorprendente es que la transformada sea reversible: la reordenación se deshace exactamente. Es un enfoque elegante y explica el carácter del formato — buenas proporciones en texto, descompresión lenta porque hay que deshacer la transformada, y un consumo de memoria que depende del tamaño de bloque y no del tamaño del archivo.

Bloques independientes, y por eso se puede rescatar

Bzip2 trabaja sobre bloques independientes, de 900 KB por omisión. Cada bloque se comprime y se descomprime por su cuenta, sin mirar a sus vecinos.

Eso le da una propiedad que ninguno de los demás tiene aquí: si una parte del archivo se corrompe, los bloques intactos siguen siendo legibles y una herramienta de recuperación puede extraerlos. En gzip o en xz, un daño al principio del flujo suele costar todo lo que venía después. Para un archivo viejo en un soporte que se está muriendo, eso es una ventaja real y a veces decisiva.

Y por eso también se puede repartir entre núcleos

Como los bloques son independientes, se pueden comprimir y descomprimir en varios núcleos a la vez. Herramientas como pbzip2 y lbzip2 lo explotan y producen archivos que el bzip2 corriente sigue leyendo sin enterarse.

En una máquina con ocho núcleos eso convierte su peor característica en algo tolerable. Es el motivo principal de que el formato aguantara tanto en computación científica y en cadenas de tratamiento de datos, donde los archivos son enormes y los núcleos sobran.

Otra vez la extensión doble

Bzip2 comprime exactamente un flujo. No tiene directorio, ni nombres de archivo, ni noción de que pueda haber varios — la misma forma que gzip y xz. Por eso lo normal es `.tar.bz2`: tar reúne el árbol de carpetas en un único flujo y bzip2 lo comprime.

Descomprimir un `.bz2` a secas devuelve exactamente un archivo. Si esperabas una carpeta, lo que buscabas es el `.tar` que hay dentro, y la mayoría de herramientas presentan los dos pasos como uno solo.

Dónde caen realmente los números

Sobre texto y código fuente, bzip2 se queda alrededor de una cuarta parte por debajo de gzip, y a pocos puntos porcentuales de xz con esa clase de entrada. Comprimir es varias veces más lento que gzip; descomprimir lo es todavía más, y esa es la característica que lo mató.

Ese último punto es lo que lo vuelve poco atractivo en lugar de meramente superado. Un archivo se comprime una vez y se descomprime muchas, así que un formato lento de leer paga su coste una y otra vez. xz es lento al escribir y rápido al leer, que es el reparto correcto.

Estuvo años sin mantenimiento, y eso pasó factura

El bzip2 original pasó mucho tiempo sin publicar versiones, y en 2019 se encontró en el descompresor un fallo de escritura fuera de límites que llevaba ahí bastante tiempo. Desde entonces el mantenimiento se retomó y el problema está corregido en todo lo que esté al día.

Merece la pena saberlo como contexto, no como advertencia sobre tus archivos: un `.bz2` son datos, no código, y abrirlo con software actualizado no tiene nada de particular. El episodio forma parte de por qué las distribuciones se marcharon a otra cosa, junto con la lentitud.

Qué sigue produciendo archivos así

Versiones antiguas de código fuente de Linux y paquetes de distribución archivados. Conjuntos de datos científicos y genómicos, donde las herramientas paralelas lo hicieron practicable y donde lo ya publicado no se vuelve a recodificar. Sistemas de copias de seguridad configurados hace una década. Y los volcados de bases de datos de proyectos grandes, durante muchos años.

El patrón es la publicación, no el intercambio: archivos escritos una vez, descargados por mucha gente y nunca revisados. Nadie le manda hoy un `.bz2` a un compañero de trabajo.

Abrirlo, y qué hacer con el contenido después

Cualquier sistema Linux y macOS maneja bzip2 desde la línea de órdenes, y 7-Zip lo lee en Windows sin dificultad. Descomprimir un `.tar.bz2` son dos pasos que casi todas las herramientas presentan como uno.

Si el contenido va a ir a parar a una persona, reempaquétalo como ZIP, que es lo que su equipo abre sin ayuda. Si vuelve a un sistema Unix, usa `.tar.gz` o `.tar.xz`, que conservan los permisos y los enlaces simbólicos que tar arrastra y que ZIP descarta. Volver a crear un `.bz2` es la única opción sin nada a favor.

Cómo funciona aquí la conversión, y qué límites tiene

Los archivos comprimidos son la excepción a la regla de este sitio: en lugar de convertirse en tu navegador, se envían a api.quinvert.com, donde 7-Zip hace el trabajo. El archivo se escribe en una carpeta temporal recién creada, con un nombre fijo — tu nombre de archivo no llega al disco —, y esa carpeta se borra al terminar, también por los caminos de error. El contenedor donde ocurre no tiene salida a internet y el resultado se devuelve sin caché.

Los números importan aquí más que en otras páginas. El límite de las conversiones en servidor es de 25 MB por archivo y 100 conversiones por visitante y día, contadas por día UTC, más un tope de ráfaga de cinco peticiones por minuto. Los archivos de dentro salen byte a byte; lo que no sobrevive es lo que el contenedor sabía sobre ellos y no dentro de ellos: una contraseña, y según el formato los permisos y las fechas originales. RAR es la excepción declarada: se lee y nunca se escribe, y eso es la licencia de UnRAR, no una carencia.

Los datos, en un solo sitio

Identificadores y procedencia del formato BZ2.
Extensión.bz2
Tipo de medioapplication/x-bzip2
Primera publicación1996