Manuels pour la ligne de commande

Man » Manuel bzip2 en ligne - documentation en ligne détaillée pour la page de manuel bzip2

🌍
bzip2, bunzip2 - un compresseur de fichiers basé sur le tri de blocs, v1.0.8
bzcat - décompresse les fichiers vers la sortie standard
bzip2recover - récupère les données des fichiers bzip2 endommagés

SYNOPSIS

bzip2 [ -cdfkqstvzVL123456789 ] [ noms_de_fichiers ... ]
bzip2 [ -h|--help ]
bunzip2 [ -fkvsVL ] [ noms_de_fichiers ... ]
bunzip2 [ -h|--help ]
bzcat [ -s ] [ noms_de_fichiers ... ]
bzcat [ -h|--help ]
bzip2recover nom_de_fichier

DESCRIPTION

bzip2 compresse les fichiers en utilisant l'algorithme de compression de texte basé sur le tri de blocs de Burrows-Wheeler et le codage de Huffman. La compression est généralement bien meilleure que celle obtenue par les compresseurs basés sur LZ77/LZ78 plus classiques, et s'approche des performances de la famille des compresseurs statistiques PPM.

Les options de ligne de commande sont délibérément très similaires à celles de GNU gzip, mais elles ne sont pas identiques.

bzip2 s'attend à ce qu'une liste de noms de fichiers accompagne les indicateurs de ligne de commande. Chaque fichier est remplacé par une version compressée de lui-même, avec le nom "nom_original.bz2". Chaque fichier compressé a la même date de modification, les mêmes permissions et, dans la mesure du possible, la même propriété que le fichier original correspondant, afin que ces propriétés puissent être correctement restaurées lors de la décompression. La gestion des noms de fichiers est naïve dans le sens où il n'existe aucun mécanisme pour conserver les noms de fichiers, les permissions, les propriétés ou les dates d'origine dans les systèmes de fichiers qui ne disposent pas de ces concepts, ou qui ont des restrictions importantes sur la longueur des noms de fichiers, tels que MS-DOS.

bzip2 et bunzip2 ne remplaceront pas les fichiers existants par défaut. Si vous souhaitez que cela se produise, spécifiez l'indicateur -f.

Si aucun nom de fichier n'est spécifié, bzip2 compresse à partir de l'entrée standard vers la sortie standard. Dans ce cas, bzip2 refusera d'écrire la sortie compressée dans un terminal, car cela serait totalement incompréhensible et donc inutile.

bunzip2 (ou bzip2 -d) décompresse tous les fichiers spécifiés. Les fichiers qui n'ont pas été créés par bzip2 seront détectés et ignorés, et un avertissement sera émis. bzip2 tente de deviner le nom du fichier décompressé à partir de celui du fichier compressé de la manière suivante :

nom_de_fichier.bz2 devient nom_de_fichier
nom_de_fichier.bz devient nom_de_fichier
nom_de_fichier.tbz2 devient nom_de_fichier.tar
nom_de_fichier.tbz devient nom_de_fichier.tar
toutautre_nom devient toutautre_nom.out

Si le fichier ne se termine pas par l'une des terminaisons reconnues, .bz2, .bz, .tbz2 ou .tbz, bzip2 indique qu'il ne peut pas deviner le nom du fichier d'origine et utilise le nom d'origine avec .out ajouté.

Comme pour la compression, la fourniture d'aucun nom de fichier entraîne la décompression de l'entrée standard vers la sortie standard.

bunzip2 décompresse correctement un fichier qui est la concaténation de deux fichiers compressés ou plus. Le résultat est la concaténation des fichiers décompressés correspondants. La vérification d'intégrité (-t) des fichiers compressés concaténés est également prise en charge.

Vous pouvez également compresser ou décompresser des fichiers vers la sortie standard en utilisant l'option -c. Plusieurs fichiers peuvent être compressés et décompressés de cette manière. Les sorties résultantes sont envoyées séquentiellement vers la sortie standard. La compression de plusieurs fichiers de cette manière génère un flux contenant plusieurs représentations de fichiers compressés. Un tel flux ne peut être décompressé correctement que par bzip2 version 0.9.0 ou ultérieure. Les versions antérieures de bzip2 s'arrêteront après avoir décompressé le premier fichier du flux.

bzcat (ou bzip2 -dc) décompresse tous les fichiers spécifiés vers la sortie standard.

bzip2 lit les arguments à partir des variables d'environnement BZIP2 et BZIP, dans cet ordre, et les traite avant de lire les arguments à partir de la ligne de commande. Cela permet de fournir facilement des arguments par défaut.

La compression est toujours effectuée, même si le fichier compressé est légèrement plus grand que le fichier original. Les fichiers de moins de 100 octets ont tendance à être plus grands, car le mécanisme de compression a une surcharge constante d'environ 50 octets. Les données aléatoires (y compris la sortie de la plupart des compresseurs de fichiers) sont codées à environ 8,05 bits par octet, ce qui entraîne une expansion d'environ 0,5 %.

Comme vérification pour votre protection, bzip2 utilise des CRC de 32 bits pour s'assurer que la version décompressée d'un fichier est identique à l'original. Cela protège contre la corruption des données compressées et contre les bogues non détectés dans bzip2 (ce qui est très peu probable). Les chances que la corruption des données passe inaperçue sont microscopiques, d'environ une chance sur quatre milliards pour chaque fichier traité. Sachez cependant que la vérification se produit lors de la décompression, elle ne peut donc que vous indiquer qu'il y a un problème. Elle ne peut pas vous aider à récupérer les données non compressées d'origine. Vous pouvez utiliser bzip2recover pour essayer de récupérer des données à partir de fichiers endommagés.

Valeurs de retour : 0 pour une sortie normale, 1 pour les problèmes d'environnement (fichier introuvable, indicateurs non valides, erreurs d'E/S, etc.), 2 pour indiquer un fichier compressé corrompu, 3 pour une erreur de cohérence interne (par exemple, un bogue) qui a provoqué une panne de bzip2.

OPTIONS

-c --stdout

Compresser ou décompresser vers la sortie standard.

-d --decompress

Forcer la décompression. bzip2, bunzip2 et bzcat sont en réalité le même programme, et la décision quant aux actions à entreprendre est prise en fonction du nom utilisé. Cet indicateur annule ce mécanisme et force bzip2 à décompresser.

-z --compress

Le complément de -d : force la compression, quel que soit le nom d'invocation.

-t --test

Vérifier l'intégrité des fichiers spécifiés, mais ne pas les décompresser. Cela effectue réellement une décompression d'essai et supprime le résultat.


-f --force

Force l’écrasement des fichiers de sortie. Normalement, bzip2 ne remplace pas les fichiers de sortie existants. Force également bzip2 à rompre les liens symboliques vers les fichiers, ce qu’il ne ferait pas autrement.

bzip2 refuse normalement de décompresser les fichiers qui n’ont pas l’en-tête magique correct. Si l’option -f est utilisée, ces fichiers sont cependant transmis sans modification. C’est ainsi que GNU gzip se comporte.

-k --keep

Conserve (ne supprime pas) les fichiers d’entrée pendant la compression ou la décompression.

-s --small

Réduit l’utilisation de la mémoire pour la compression, la décompression et les tests. Les fichiers sont décompressés et testés à l’aide d’un algorithme modifié qui ne nécessite que 2,5 octets par octet de bloc. Cela signifie que tout fichier peut être décompressé en utilisant 2 300 Ko de mémoire, mais à une vitesse d’environ la moitié de la vitesse normale.

Pendant la compression, l’option -s sélectionne une taille de bloc de 200 Ko, ce qui limite l’utilisation de la mémoire à environ la même valeur, au prix d’une compression moins efficace. En bref, si votre machine dispose de peu de mémoire (8 Mo ou moins), utilisez l’option -s pour tout. Voir la section GESTION DE LA MÉMOIRE ci-dessous.

-q --quiet

Supprime les messages d’avertissement non essentiels. Les messages relatifs aux erreurs d’E/S et autres événements critiques ne sont pas supprimés.

-v --verbose

Mode détaillé : affiche le taux de compression pour chaque fichier traité. Les options -v supplémentaires augmentent le niveau de verbosité, affichant ainsi de nombreuses informations qui sont principalement utiles à des fins de diagnostic.

-h --help

Affiche un message d’aide et quitte.

-L --license -V --version

Affiche la version du logiciel, les conditions générales de la licence.

-1 (ou --fast) à -9 (ou --best)

Définit la taille du bloc à 100 Ko, 200 Ko… 900 Ko lors de la compression. N’a aucun effet lors de la décompression. Voir la section GESTION DE LA MÉMOIRE ci-dessous. Les alias --fast et --best sont principalement destinés à la compatibilité avec GNU gzip. En particulier, l’option --fast n’accélère pas les choses de manière significative. Et l’option --best sélectionne simplement le comportement par défaut.

--   Traite tous les arguments suivants comme des noms de fichiers, même s’ils commencent par un tiret. Cela vous permet de gérer les fichiers dont les noms commencent par un tiret, par exemple : bzip2 -- -monfichier.

--repetitive-fast --repetitive-best

Ces options sont redondantes dans les versions 0.9.5 et ultérieures. Elles permettaient un certain contrôle approximatif du comportement de l’algorithme de tri dans les versions antérieures, ce qui était parfois utile. Les versions 0.9.5 et ultérieures disposent d’un algorithme amélioré qui rend ces options inutiles.

GESTION DE LA MÉMOIRE

bzip2 compresse les fichiers volumineux par blocs. La taille du bloc affecte à la fois le taux de compression obtenu et la quantité de mémoire nécessaire pour la compression et la décompression. Les options -1 à -9 définissent la taille du bloc à 100 000, 200 000… 900 000 octets, respectivement. Au moment de la décompression, la taille du bloc utilisée pour la compression est lue dans l’en-tête du fichier compressé, et bunzip2 alloue ensuite suffisamment de mémoire pour décompresser le fichier. Étant donné que les tailles de bloc sont stockées dans les fichiers compressés, il en résulte que les options -1 à -9 sont sans incidence et sont donc ignorées lors de la décompression.

Les exigences de compression et de décompression, en octets, peuvent être estimées comme suit :

Compression : 400 k + (8 x taille du bloc)

Décompression : 100 k + (4 x taille du bloc), ou
100 k + (2,5 x taille du bloc)

Les grandes tailles de bloc donnent des rendements marginaux rapidement décroissants. La majeure partie de la compression provient des premiers deux ou trois cents k de la taille du bloc, un fait à garder à l’esprit lors de l’utilisation de bzip2 sur des petites machines. Il est également important de comprendre que l’exigence de mémoire pour la décompression est définie au moment de la compression par le choix de la taille du bloc.

Pour les fichiers compressés avec la taille de bloc par défaut de 900 k, bunzip2 nécessitera environ 3 700 kio de mémoire pour la décompression. Pour prendre en charge la décompression de n’importe quel fichier sur une machine de 4 mégaoctets, bunzip2 dispose d’une option pour décompresser en utilisant environ la moitié de cette quantité de mémoire, soit environ 2 300 kio. La vitesse de décompression est également divisée par deux, vous ne devez donc utiliser cette option que lorsque cela est nécessaire. L’indicateur pertinent est -s.

En général, essayez d’utiliser la plus grande taille de bloc que les contraintes de mémoire permettent, car cela maximise la compression obtenue. La compression et la vitesse de décompression sont pratiquement inchangées par la taille du bloc.

Un autre point important s’applique aux fichiers qui tiennent dans un seul bloc, ce qui signifie la plupart des fichiers que vous rencontrerez en utilisant une grande taille de bloc. La quantité de mémoire réelle utilisée est proportionnelle à la taille du fichier, car le fichier est plus petit qu’un bloc. Par exemple, la compression d’un fichier de 20 000 octets avec l’indicateur -9 amènera le compresseur à allouer environ 7 600 k de mémoire, mais seulement 400 k + 20 000 * 8 = 560 kio seront utilisés. De même, le décompresseur allouera 3 700 k, mais seulement 100 k + 20 000 * 4 = 180 kio seront utilisés.

Voici un tableau qui résume l’utilisation maximale de la mémoire pour différentes tailles de blocs. Également indiqué est la taille compressée totale pour 14 fichiers du Calgary Text Compression Corpus, totalisant 3 141 622 octets. Cette colonne donne une idée de la façon dont la compression varie en fonction de la taille du bloc. Ces chiffres ont tendance à sous-estimer l’avantage des grandes tailles de bloc pour les fichiers plus volumineux, car le Corpus est dominé par les fichiers plus petits.

Compression Décompression Décompression Corpus Indicateur Utilisation Utilisation Utilisation -s Taille -1 1200 k 500 k 350 k 914704 -2 2000 k 900 k 600 k 877703 -3 2800 k 1300 k 850 k 860338 -4 3600 k 1700 k 1100 k 846899 -5 4400 k 2100 k 1350 k 845160 -6 5200 k 2500 k 1600 k 838626 -7 6100 k 2900 k 1850 k 834096 -8 6800 k 3300 k 2100 k 828642 -9 7600 k 3700 k 2350 k 828642

RÉCUPÉRATION DE DONNÉES À PARTIR DE FICHIERS ENDOMMAGÉS

bzip2 compresse les fichiers en blocs, généralement de 900 kio. Chaque bloc est traité indépendamment.

Si une erreur de média ou de transmission entraîne la corruption d’un fichier .bz2 multi-blocs, il peut être possible de récupérer des données à partir des blocs non corrompus du fichier.


La représentation compressée de chaque bloc est délimitée par un motif de 48 bits, ce qui permet de déterminer les limites des blocs avec une précision raisonnable. Chaque bloc contient également son propre CRC de 32 bits, ce qui permet de distinguer les blocs endommagés des blocs intacts.

^ zip2recover est un programme simple dont le but est de rechercher des blocs dans les fichiers .bz2 et d’écrire chaque bloc dans son propre fichier .bz2. Vous pouvez ensuite utiliser bzip2 -t pour tester l’intégrité des fichiers résultants et décompresser ceux qui ne sont pas endommagés.

^ zip2recover prend un seul argument, le nom du fichier endommagé, et écrit un certain nombre de fichiers « rec00001file.bz2 », « rec00002file.bz2 », etc., contenant les blocs extraits. Les noms de fichiers de sortie sont conçus de manière à ce que l’utilisation de caractères génériques lors du traitement ultérieur, par exemple « bzip2 -dc rec*file.bz2 > recovered_data », permette de traiter les fichiers dans le bon ordre.

^ zip2recover est particulièrement utile pour traiter les fichiers .bz2 volumineux, car ceux-ci contiennent de nombreux blocs. Il est clairement inutile de l’utiliser sur des fichiers à bloc unique endommagés, car un bloc endommagé ne peut pas être récupéré. Si vous souhaitez minimiser les pertes de données potentielles dues à des erreurs de support ou de transmission, vous pouvez envisager de compresser avec une taille de bloc plus petite.

NOTES SUR LES PERFORMANCES

La phase de tri de la compression regroupe les chaînes similaires dans le fichier. De ce fait, les fichiers contenant de très longues séquences de symboles répétés, tels que « aabaabaabaab ... » (répété plusieurs centaines de fois), peuvent se compresser plus lentement que la normale. Les versions 0.9.5 et ultérieures sont beaucoup plus performantes que les versions précédentes à cet égard. Le rapport entre le pire des cas et le cas moyen en matière de temps de compression est d’environ 10:1. Pour les versions précédentes, ce chiffre était plutôt de 100:1. Vous pouvez utiliser l’option -vvvv pour surveiller les progrès en détail, si vous le souhaitez.

La vitesse de décompression n’est pas affectée par ces phénomènes.

^ zip2 alloue généralement plusieurs mégaoctets de mémoire pour fonctionner, puis la parcourt de manière assez aléatoire. Cela signifie que les performances, tant pour la compression que pour la décompression, sont largement déterminées par la vitesse à laquelle votre machine peut gérer les défauts de cache. De ce fait, de petites modifications du code visant à réduire le taux de défauts de cache ont permis d’obtenir des améliorations de performances disproportionnées. Je suppose que bzip2 fonctionnera le mieux sur les machines dotées de très grandes mémoires cache.

AVERTISSEMENTS

Les messages d’erreur d’E/S ne sont pas aussi utiles qu’ils pourraient l’être. bzip2 tente de détecter les erreurs d’E/S et de se terminer proprement, mais les détails de ce qui cause le problème semblent parfois plutôt trompeurs.

Cette page de manuel concerne la version 1.0.8 de bzip2. Les données compressées créées par cette version sont entièrement compatibles avec les versions publiques précédentes, les versions 0.1pl2, 9.0, 0.9.5, 1.0.0, 1.0.1 et 1.0.2, mais avec l’exception suivante : les versions 0.9.0 et ultérieures peuvent correctement décompresser plusieurs fichiers compressés concaténés. La version 0.1pl2 ne peut pas le faire ; elle s’arrête après avoir décompressé uniquement le premier fichier de la séquence.


Les versions de bzip2recover antérieures à la 1.0.2 utilisaient des entiers de 32 bits pour représenter les positions de bits dans les fichiers compressés, elles ne pouvaient donc pas gérer les fichiers compressés de plus de 512 mégaoctets. Les versions 0.2 et ultérieures utilisent des entiers de 64 bits sur certaines plateformes qui les prennent en charge (cibles prises en charge par GNU et Windows). Pour déterminer si bzip2recover a été compilé avec une telle limitation, exécutez-le sans argument. Dans tous les cas, vous pouvez compiler vous-même une version illimitée si vous pouvez le recompiler avec MaybeUInt64 défini comme un entier non signé de 64 bits.

AUTEUR

Julian Seward, _.

https://sourceware.org/bzip2/

Les idées contenues dans bzip2 sont dues à (au moins) les personnes suivantes : Michael Burrows et David Wheeler (pour la transformation de tri par blocs), David Wheeler (encore une fois, pour le codeur Huffman), Peter Fenwick (pour le modèle de codage structuré dans le bzip d’origine et de nombreuses améliorations), et Alistair Moffat, Radford Neal et Ian Witten (pour le codeur arithmétique dans le bzip d’origine). Je suis très redevable de leur aide, de leur soutien et de leurs conseils. Consultez le manuel dans la distribution source pour obtenir des indications sur les sources de documentation. Christian von Roques m’a encouragé à rechercher des algorithmes de tri plus rapides, afin d’accélérer la compression. Bela Lubkin m’a encouragé à améliorer les performances de compression dans le pire des cas. Donna Robinson a converti la documentation au format XML. Les scripts bz* sont dérivés de ceux de GNU gzip. De nombreuses personnes ont envoyé des correctifs, ont aidé à résoudre les problèmes de portabilité, ont prêté des machines, ont donné des conseils et ont été généralement serviables.