Cookies de statistiques et de publicité
Nous utilisons des cookies de statistiques et de publicité, tous deux destinés à Google. Si vous refusez, rien ne change visiblement pour vous.Aller à la page de confidentialité
BZ2
Compresse mieux que GZ et met sensiblement plus longtemps.
BZ2
BZ2 est un format de flux, écrit et lu du début à la fin. Il est utilisé pour l’archivage.
L’extension est .bz2 et le nom complet Bzip2 Archive. L’un et l’autre comptent moins que ce que le fichier peut contenir, et c’est le sujet du reste de cette page.
Il remonte à 1996.
À un format resté lisible aussi longtemps, on peut confier quelque chose qu’on veut retrouver dans dix ans.
Elle est publiée intégralement : n’importe qui peut l’implémenter à partir du document plutôt qu’en l’observant, et c’est pourquoi ce format apparaît dans tant de programmes et pourquoi des fichiers écrits il y a vingt ans s’ouvrent encore. Une spécification publiée n’est pas pour autant libre de redevances : quand un format enveloppe un codec, les brevets sont une question à part, que la norme ne tranche pas.
Il s’ouvre encore partout et les anciens logiciels l’écrivent toujours, mais plus rien de neuf ne se construit autour. Convertissez ce que vous voulez garder, et ne le choisissez pas pour un projet qui commence aujourd’hui.
BZ2 enregistre son contenu à l’identique. Le réenregistrer ne change rien : vous pouvez l’ouvrir, le modifier et le réenregistrer autant de fois que vous voulez sans accumuler de dégâts, et c’est ce qui en fait un format de travail plutôt qu’un format de livraison.
BZ2 compresse un seul flux et n’a aucune notion de nom de fichier ni de dossier. C’est pourquoi on le voit si souvent accompagné de TAR, qui apporte la structure qui lui manque.
Il travaille par tranches de 900 Ko : pour être compressée, une répétition doit tenir tout entière dans cette étendue.
Ce seul nombre explique l’essentiel de l’écart entre un format d’archive et un autre. Une étendue plus grande trouve plus de répétitions et met plus de temps et plus de mémoire à le faire : voilà tout le compromis.
BZ2 porte une somme de contrôle, pour qu’un fichier abîmé soit détecté au lieu d’être mal lu en silence.
Une somme de contrôle ne répare rien. Elle vous dit que le fichier est abîmé, ce qui fait la différence entre l’apprendre maintenant et l’apprendre de la personne à qui vous l’avez envoyé.
bzip2, 7-Zip et Keka le lisent, comme la plupart des programmes du même genre.
Quand un fichier ne s’ouvre pas, le format est rarement en cause : le plus souvent, c’est le programme qui est plus ancien que lui. Convertir vers quelque chose de plus ancien est le contournement fiable, et c’est à cela que sert le reste de ce site.
Aucun navigateur ne le lit.
C’est de loin la raison la plus fréquente de le convertir : non pas que le format soit mauvais, mais que l’endroit où vous voulez montrer le fichier ne sache pas le lire.
BZ2 est fait pour être transmis, pas pour travailler dedans. Modifier un tel fichier est possible et rarement agréable ; la voie raisonnable passe par la source et un nouvel export.
Les reproches qui reviennent : il porte un seul flux et ne sait pas décrire un dossier.
Rien de tout cela n’est une raison d’éviter le format. Ce sont les choses à connaître avant que l’une d’elles vous surprenne, ce qui est une affirmation différente et plus utile.
Bzip2 est arrivé en 1996 en compressant notablement mieux que gzip, et pendant une décennie environ `.tar.bz2` a été le choix intermédiaire sensé pour les releases de code source et les archives. Cette période est révolue. xz compresse plus dur, zstd est plus rapide à des taux similaires, et les deux décompressent plus rapidement que bzip2, ce qui a réduit le format à un rôle de conservation.
Donc un `.bz2` que vous rencontrez aujourd’hui est presque toujours ancien — une release archivée, un jeu de données publié il y a des années, une sauvegarde d’un système dont les défauts dataient de 2008. Il n’y a pas d’argument vivant pour en créer de nouveaux, et la question utile est comment ouvrir celui que vous avez, pas s’il faut en créer d’autres.
Tous les autres compresseurs ici — gzip, xz, 7z, zip — regardent en arrière pour des séquences répétées. Bzip2 fait quelque chose de différent : la transformée de Burrows-Wheeler réarrange un bloc de données pour que des caractères similaires se retrouvent adjacents, puis un encodeur simple exploite les plages que cela crée.
La transformée est réversible, ce qui est la partie surprenante — le réarrangement peut être défait exactement. C’est une approche élégante et elle explique les caractéristiques du format : bons taux sur le texte, décompression lente parce que la transformée doit être défaite, et un coût en mémoire proportionnel à la taille du bloc plutôt qu’au fichier, ce qui le rend utilisable même sur de très gros fichiers.
Bzip2 travaille sur des blocs indépendants, 900 Ko par défaut. Chaque bloc se compresse et se décompresse de manière autonome, sans référence à ses voisins, ce qui est la propriété structurante du format.
Cela lui donne une propriété que rien d’autre ici n’a : si une partie de l’archive est corrompue, les blocs non endommagés restent lisibles, et un outil de récupération peut les extraire. Dans gzip ou xz, un dommage tôt dans le flux coûte en général tout ce qui suit, parce que le flux est une suite d’interdépendances. Pour une vieille archive sur un média défaillant, c’est un avantage réel et parfois décisif, et c’est la raison pour laquelle certains jeux de données scientifiques ont été publiés en `.tar.bz2` même quand un format plus moderne aurait été techniquement supérieur.
Parce que les blocs sont indépendants, ils peuvent être compressés et décompressés sur des cœurs de processeur distincts en même temps. Des outils comme pbzip2 et lbzip2 exploitent cela et produisent des fichiers que le bzip2 ordinaire lit toujours, ce qui est important pour les outils existants.
Sur une machine à huit cœurs, cela transforme la pire caractéristique de bzip2 en quelque chose de tolérable. C’est la raison principale pour laquelle le format a survécu aussi longtemps en calcul scientifique et dans les chaînes de données, où les fichiers sont gros et les cœurs nombreux, et où la parallélisation vaut le coup d’être ajoutée par-dessus l’algorithme de base.
Bzip2 compresse exactement un flux. Il n’a pas de répertoire, pas de noms de fichiers, pas la notion de plusieurs fichiers — la même forme que gzip et xz. C’est pourquoi `.tar.bz2` est la forme normale : tar regroupe l’arborescence en un flux et bzip2 la compresse, et les deux étapes sont en général fusionnées par les outils d’archive.
Décompresser un `.bz2` nu restitue exactement un fichier. Si vous attendiez un dossier, l’archive que vous vouliez est le `.tar` à l’intérieur, et la plupart des outils présentent les deux étapes comme une seule, ce qui masque l’opération mais ne la supprime pas.
Sur du texte typique et du code source, bzip2 se pose environ un quart plus petit que gzip — 25 et 27 pour cent sur deux corpus de code source mesurés pour cette page — et à quelques pour cent près de xz sur ce type d’entrée. La compression est plusieurs fois plus lente que gzip ; la décompression est encore plus lente, ce qui est la caractéristique qui l’a achevé.
Ce dernier point est ce qui rend le format peu attractif plutôt que remplacé. Un fichier est compressé une fois et décompressé plusieurs fois, donc un format lent à lire paie son coût à répétition. xz est lent à écrire et rapide à lire, ce qui est la bonne disposition, et c’est pour cela que la communauté du logiciel libre a basculé de `.tar.bz2` à `.tar.xz` à mesure que la puissance de calcul augmentait.
Le bzip2 original est passé des années sans release, et en 2019 une écriture hors limites a été trouvée dans le décompresseur qui était présente depuis longtemps. La maintenance a depuis été reprise et le problème est corrigé partout où c’est à jour, ce qui rend le format sûr à ouvrir avec un logiciel récent.
Cela vaut la peine d’être su pour le contexte plutôt que comme un avertissement sur vos fichiers : un `.bz2` est une donnée, pas du code, et en ouvrir un avec un logiciel à jour est sans particularité. L’épisode fait partie des raisons pour lesquelles les distributions sont passées à autre chose, en plus de la vitesse, et c’est aussi pourquoi les nouveaux projets choisissent xz ou zstd plutôt que bzip2 par défaut.
Les anciennes releases de code source Linux et paquets de distribution archivés. Des jeux de données scientifiques et génomiques, où les outils bloc-parallèle l’avaient rendu pratique et où les archives publiées ne sont pas ré-encodées. Des systèmes de sauvegarde configurés il y a dix ans. Les dumps de base de données de Wikipédia, historiquement et pendant longtemps, et certaines archives académiques qui ont standardisé le format à l’époque de leur création.
Le motif est la publication plutôt que l’échange : des fichiers écrits une fois, téléchargés par beaucoup, jamais revisités. Personne n’envoie aujourd’hui à un collègue un `.bz2`, parce que les nouvelles archives sortent toutes en `.tar.zst` ou en `.tar.xz`, et l’ancien format reste présent là où il a été créé et n’a pas été remplacé par un travail explicite de migration.
Pour des archives scientifiques ou génomiques, le `.tar.bz2` reste parfois la forme de distribution officielle parce que la chaîne de traitement en aval attend ce format et que la migration est coûteuse en temps de validation. C’est une situation où le format n’est pas le bon choix, mais où le coût de changer de format dépasse le bénéfice, et c’est l’une des raisons pour lesquelles on continue à voir des `.bz2` dans des contextes où un choix plus récent serait techniquement supérieur. Pour vos propres usages, cette contrainte n’existe pas, et le passage à `.tar.zst` ou `.tar.xz` se fait en une commande qui ré-emballe l’archive avec un gain immédiat de temps de décompression.
| Extension | .bz2 |
|---|---|
| Type de média | application/x-bzip2 |
| Première publication | 1996 |