bzip2(1) General Commands Manual bzip2(1) NOM bzip2, bunzip2 - compresseur de fichiers par tri de blocs, v1.0.8 bzcat - decompresse les fichiers sur la sortie standard bzip2recover - recupere des donnees de fichiers bzip2 endommages SYNOPSIS bzip2 [ -cdfkqstvzVL123456789 ] [ noms_fichiers ... ] bunzip2 [ -fkvsVL ] [ noms_fichiers ... ] bzcat [ -s ] [ noms_fichiers ... ] bzip2recover nom_fichier DESCRIPTION bzip2 compresse des fichiers en utilisant l'algorithme de compression de texte par tri de blocs de Burrows-Wheeler et le codage d'Huffman. La compression est generalement nettement meilleure que celle atteinte par des compresseurs plus conventionnels bases sur LZ77/LZ78 et approche les performances de la famille des compresseurs statistiques PPM. Les options de ligne de commandes sont deliberement tres similaires a celles de GNU gzip, mais elles ne sont pas identiques. bzip2 attend une liste de noms de fichiers pour accompagner les options de ligne de commandes. Chaque fichier est remplace par une version compressee de lui-meme, avec le nom << nom_original.bz2 >>. Chaque fichier compresse a la meme date de modification, les memes permissions et, quand c'est possible, les memes proprietes que celles du fichier original, de sorte que ces caracteristiques peuvent etre correctement restaurees au moment de la decompression. Le traitement du nom du fichier est naif dans le sens qu'il n'y a pas de mecanisme pour preserver les noms, permissions, proprietes et dates des fichiers situes dans des systemes de fichiers ou ces concepts font defaut, ou qui souffrent de restrictions strictes sur la longueur des noms de fichiers, comme MS-DOS. bzip2 et bunzip2, par defaut, n'ecraseront pas les fichiers existants. Si vous voulez que cela se produise, utilisez l'option -f. Si aucun nom de fichier n'est indique, bzip2 compresse de l'entree standard vers la sortie standard. Dans ce cas, bzip2 n'ecrira pas la sortie compressee sur un terminal, puisque cela serait incomprehensible et donc inutile. bunzip2 (ou bzip2 -d) decompresse tous les fichiers specifies. Les fichiers qui n'ont pas ete crees par bzip2 seront detectes et ignores et un avertissement sera emis. bzip2 tente de deviner le nom du fichier pour le fichier decompresse a partir de celui du fichier compresse de la maniere suivante : nom_fichier.bz2 devient nom_fichier nom_fichier.bz devient nom_fichier nom_fichier.tbz2 devient nom_fichier.tar nom_fichier.tbz devient nom_fichier.tar autre_nom devient autre_nom.out Si le nom du fichier ne se termine pas par une des terminaisons reconnues, .bz2, .bz, .tbz2 ou .tbz, bzip2 signale qu'il ne peut pas deviner le nom du fichier original et utilise le nom d'origine en lui ajoutant .out. Comme pour la compression, si aucun nom de fichier n'est fourni, la commande decompresse de l'entree standard vers la sortie standard. bunzip2 decompressera correctement un fichier qui est la concatenation de deux fichiers compresses ou plus. Le resultat est la concatenation des fichiers non compresses correspondants. Le test d'integrite (-t) des fichiers compresses concatenes est aussi prise en charge. Il est egalement possible de compresser ou decompresser vers la sortie standard en fournissant l'option -c. Plusieurs fichiers peuvent etre compresses ou decompresses ainsi. Les sorties resultantes sont envoyees de facon sequentielle a la sortie standard. La compression de plusieurs fichiers de cette maniere genere un flux contenant la representation des divers fichiers compresses. Un flux de ce type ne peut etre decompresse correctement que par bzip2 version 0.9.0 ou ulterieure. Les versions anterieures de bzip2 s'arretent apres la decompression du premier fichier du flux. bzcat (ou bzip2 -dc) decompresse tous les fichiers specifies vers la sortie standard. bzip2 lira les arguments a partir des variables d'environnement BZIP2 et BZIP, dans cet ordre, et les traitera avant tout argument lu a partir de la ligne de commande. Cela offre une facon pratique de fournir des arguments par defaut. La compression est toujours effectuee, meme si le fichier compresse est legerement plus grand que le fichier original. Les fichiers de moins d'une centaine d'octets ont tendance a s'agrandir dans la mesure ou le mecanisme de compression comporte une surcharge constante de l'ordre de 50 octets. Des donnees aleatoires (y compris la sortie de la plupart des compresseurs de fichiers) sont codees a environ 8,05 bits par octet, aboutissant a une expansion autour de 0,5 %. En tant que verification interne, bzip2 utilise des CRC 32 bits pour s'assurer que la version decompressee d'un fichier est identique au fichier d'origine. Ceci permet une protection contre la corruption des donnees compressees et contre des bogues non detectes de bzip2 (heureusement tres improbable). La probabilite qu'une corruption de donnees passe inapercue est infime, environ une chance sur 4 milliards pour chaque fichier compresse. Soyez conscients, toutefois, que la verification se produit pendant la decompression, et qu'elle ne peut donc vous informer que lorsque quelque chose s'est mal passe. Cela ne peut pas vous aider a recuperer les donnees non compressees d'origine. Vous pouvez utiliser bzip2recover pour essayer de recuperer des donnees de fichiers endommages. Valeurs de retour : 0 pour une sortie normale, 1 pour des problemes d'environnement (fichier non trouve, options invalides, erreurs d'entree/sortie, etc.), 2 pour indiquer un fichier compresse corrompu, 3 pour une erreur de consistance interne (un bogue, par exemple) qui a fait paniquer bzip2. OPTIONS -c --stdout Compresser ou decompresser vers la sortie standard. -d --decompress Forcer la decompression. bzip2, bunzip2 et bzcat constituent en fait le meme programme, et la decision quant aux actions a entreprendre est determinee sur la base du nom utilise. Cette option annule ce mecanisme et force bzip2 a decompresser. -z --compress Le complement de -d : force la compression, quel que soit le nom d'invocation. -t --test Verifier l'integrite des fichiers specifies, mais ne pas les decompresser. Cela realise reellement une decompression d'essai et jette le resultat. -f --force Forcer l'ecrasement des fichiers en sortie. Normalement, bzip2 n'ecrasera pas les fichiers de sortie preexistants. L'option force egalement bzip2 a briser les liens physiques (hard links) de fichiers, ce qu'il ne ferait pas autrement. Normalement, bzip2 refuse de decompresser des fichiers qui ne possedent pas les octets magiques d'en-tete corrects. Neanmoins, s'il est force (-f), neanmoins, il passe ces fichiers sans les modifier. C'est ainsi que GNU gzip se comporte. -k --keep conserver (ne pas supprimer) les fichiers d'entree durant la compression ou la decompression. -s --small Reduire l'utilisation de la memoire pour la compression, la decompression et la verification. Les fichiers sont decompresses et testes en utilisant un algorithme modifie qui requiert uniquement 2,5 octets par bloc d'un octet. Cela signifie que tout fichier peut etre decompresse dans 2 300 Ko de memoire, meme s'il le sera a une vitesse deux fois plus lente que la vitesse normale. Durant la compression, -s selectionne une taille de bloc de 200 Ko, ce qui limite l'utilisation de memoire au meme nombre environ, aux depens du coefficient de compression. Bref, si votre machine possede peu de memoire vive (8 Mo ou moins), utilisez -s pour tout ce que vous faites. Voir GESTION DE LA MEMOIRE plus bas. -q --quiet Supprimer les messages d'avertissement non essentiels. Les messages se rattachant aux erreurs d'E/S et a d'autres evenements critiques ne sont pas supprimes. -v --verbose Mode bavard - montre le coefficient de compression pour chaque fichier traite. Des -v supplementaires augmentent le niveau de detail, en affichant des tas d'informations qui sont principalement utiles a des fins de diagnostic. -L --license -V --version Afficher la version du logiciel, les termes de sa licence et les conditions d'utilisation. -1 (ou --fast) a -9 (ou --best) Fixer la taille de bloc a 100, 200, ... 900 ko pendant la compression. Cette option n'a aucun effet sur la decompression. Voir GESTION DE LA MEMOIRE ci-dessous. Les alias --fast et --best existent principalement pour la compatibilite avec GNU gzip. En particulier, --fast ne rend pas les traitements significativement plus rapides. Et --best selectionne simplement le comportement par defaut. -- Traite tous les arguments suivants comme des noms de fichier, meme s'ils debutent par un tiret. Il est ainsi possible de traiter des fichiers dont le nom debute par un tiret, par exemple << bzip2 -- -mon_fichier >>. --repetitive-fast --repetitive-best Ces options sont redondantes dans les versions 0.9.5 et ulterieures. Elles fournissent un controle assez grossier sur le comportement de l'algorithme de tri dans les versions anterieures, ce qui etait parfois utile. Les versions 0.9.5 et ulterieures disposent d'un algorithme ameliore qui rend l'usage de ces options inutile. GESTION DE LA MEMOIRE bzip2 compresse des fichiers importants par blocs. La taille de bloc affecte a la fois le coefficient de compression atteint et la quantite de memoire necessaire pour la compression et la decompression. Les options -1 a -9 precisent la taille de bloc utilisee, de 100 000 octets a 900 000 octets (par defaut) respectivement. Au moment de la decompression, la taille de bloc utilisee pour la compression est lue a partir de l'en-tete du fichier compresse, et bunzip2 s'alloue ensuite juste assez de memoire pour decompresser le fichier. Puisque les tailles de blocs sont conservees dans les fichiers compresses, il s'ensuit que les options -1 a -9 ne sont pas pertinentes et qu'elles sont donc ignorees durant la decompression. Les besoins en memoire de la compression et de la decompression, en octets, peuvent etre estimes a : Compression : 400k + ( 8 x taille de bloc ) Decompression : 100k + ( 4 x taille de bloc ), ou 100k + ( 2.5 x taille de bloc ) Des largeurs de blocs plus importantes voient les benefices marginaux retires diminuer rapidement. L'essentiel de la compression provient des deux ou trois cents premiers ko de la taille de bloc, un fait a retenir quand on utilise bzip2 sur de petites machines. Il est egalement important de savoir que les exigences memoire de la decompression sont fixees au moment de la compression par le choix d'une taille de bloc. Pour les fichiers compresses avec la taille de bloc par defaut de 900 Ko, bunzip2 aura besoin d'environ 3 700 Ko pour la decompression. Pour permettre la decompression de tout fichier sur une machine avec 4 Mo de RAM, bunzip2 possede une option pour decompresser en n'utilisant que la moitie environ de ces 3 700 Ko, a savoir a peu pres 2 300 Ko. Malheureusement, la vitesse de decompression est egalement reduite de moitie, donc vous ne devriez utiliser cette option (-s) qu'en cas de necessite absolue. En general, essayez d'utiliser la taille de bloc memoire la plus grande permise, puisque cela maximise la qualite de la compression atteinte. Les vitesses de compression et de decompression ne sont en fait pas affectees par la taille de bloc. Un autres aspect significatif s'applique aux fichiers qui peuvent tenir dans un seul bloc - c'est-a-dire la plupart des fichiers que vous rencontrez en utilisant une grande taille de bloc. La quantite reelle de memoire utilisee est proportionnelle a la taille du fichier, puisque le fichier est plus petit qu'un bloc. Par exemple, compresser un fichier de 20 000 octets avec l'option -9 forcera le compresseur a allouer environ 7 600 Ko de memoire, mais n'en utilisera reellement que 400 Ko + 20 000 * 8 = 560 Ko. De meme, le decompresseur allouera 3 700 Ko mais n'utilisera que 100 Ko + 20 000 * 4 = 180 Ko. Voici une table qui resume l'utilisation maximale de la memoire pour differentes tailles de blocs, ainsi que la taille compressee totale de 14 fichiers du Calgary Text Compression Corpus totalisant 3 141 622 octets. Cette table donne un certain apercu sur l'evolution de la compression avec la taille de bloc. Ces chiffres tendent a minimiser l'avantage des tailles de blocs plus importantes pour les fichiers plus imposants, car le Corpus est domine par des petits fichiers. Usage Usage Usage Taille du Option compr. decompr. decompr. -s Corpus -1 1200k 500k 350k 914704 -2 2000k 900k 600k 877703 -3 2800k 1300k 850k 860338 -4 3600k 1700k 1100k 846899 -5 4400k 2100k 1350k 845160 -6 5200k 2500k 1600k 838626 -7 6100k 2900k 1850k 834096 -8 6800k 3300k 2100k 828642 -9 7600k 3700k 2350k 828642 RECUPERATION DE DONNEES DE FICHIERS ENDOMMAGES bzip2 compresse les fichiers en blocs d'une longueur d'habituellement 900 Ko. Chaque bloc est traite independamment des autres. Si un defaut du support physique ou une erreur de transmission provoque l'endommagement d'un fichier multi-blocs, il peut etre possible de recuperer des donnees a partir des blocs non endommages du fichier. La representation compressee de chaque bloc est delimitee par un motif de 48 bits, ce qui permet de trouver les limites des blocs avec une probabilite raisonnable. Chaque bloc comporte egalement son propre CRC 32 bits, de sorte que les blocs corrompus peuvent etre distingues des autres. bzip2recover est un programme simple dont le but est de rechercher les blocs dans les fichiers .bz2, et d'ecrire chaque bloc detecte dans son propre fichier .bz2. Vous pouvez alors utiliser bzip2 -t pour tester l'integrite des fichiers resultants et decompresser ceux qui ne sont pas endommages. bzip2recover prend un seul argument, le nom du fichier endommage, et ecrit un certain nombre de fichiers << rec0001file.bz2 >>, << rec0002file.bz2 >>, etc, contenant les blocs extraits. Les noms de fichiers en sortie sont concus de sorte que l'utilisation de jokers (wildcards) dans des traitements ulterieurs - par exemple, << bzip2 -dc rec*file.bz2 > donnees_recuperees >> - liste les fichiers dans le bon ordre. bzip2recover devrait etre utilise principalement pour traiter les grands fichiers .bz2, puisque ceux-ci contiennent de nombreux blocs. Il est clairement inutile d'essayer de l'utiliser sur des fichiers endommages d'un seul bloc, car un seul bloc endommage ne peut pas etre recupere. Si vous voulez minimiser toute perte potentielle de donnees a cause d'erreurs de transmission, vous devriez envisager d'utiliser une taille de bloc plus restreinte. NOTES SUR LES PERFORMANCES La phase de tri de la compression reunit les chaines de caracteres similaires presentes dans le fichier. A cause de cela, les fichiers contenant de tres longues suites de symboles repetes, comme << aabaabaabaab ... >> (repetes plusieurs centaines de fois) peuvent etre compresses plus lentement que d'habitude. Les versions 0.9.5 et ulterieures se conduisent nettement mieux que les versions precedentes de ce point de vue. Le rapport entre le temps de compression dans le pire des cas et dans le cas moyen est de l'ordre de 10 pour 1. Pour les versions anterieures, ce rapport etait de 100 pour 1. Vous pouvez utiliser l'option -vvvv pour voir la progression dans les details, si vous le souhaitez. La vitesse de decompression n'est pas affectee par ces phenomenes. bzip2 alloue d'habitude plusieurs Mo de memoire pour ses besoins, et ensuite charge le tout d'une maniere assez aleatoire. Cela signifie que les performances, a la fois pour la compression et la decompression, sont largement determinees par la vitesse a laquelle votre machine peut traiter les defauts de cache. A cause de cela, de petites modifications du code pour reduire le taux d'echec en cache ont donne des ameliorations de performances disproportionnees. bzip2 aura sans doute de meilleur performances sur des machines avec de tres grands caches. AVERTISSEMENTS Les messages d'erreurs d'E/S ne sont pas d'une grande utilite. bzip2 essaie vraiment de detecter les erreurs d'E/S et de s'arreter proprement, mais les details du probleme rencontre peuvent parfois induire en erreur. Cette page de manuel concerne la version 1.0.8 de bzip2. Les donnees compressees creees par cette version sont entierement compatibles de facon descendante et ascendante avec les versions anterieures 0.1pl2, 0.9.0, 0.9.5, 1.0.0, 1.0.1, 1.0.2 et ulterieures, a l'exception que les versions 0.9.0 et ulterieures peuvent correctement decompresser de multiples fichiers compresses et concatenes. La version 0.1pl2 ne sait pas le faire; elle s'arretera apres la decompression du premier fichier du flux. Les versions bzip2recover anterieures a 1.0.2 utilisait des entiers de 32 bits pour representer les positions des bits dans les fichiers compresses ; de ce fait, elles ne pouvaient traiter de fichiers compresses de plus de 512 Mo de long. Les versions 1.0.2 et ulterieures utilisent des entiers de 64 bits sur certaines plateformes qui les prennent en charge (cibles gerees par GNU et Windows). Pour savoir si bzip2recover a ete construit avec ou sans cette limitation, executez-le sans argument. Dans tous les cas, vous pouvez reconstruire une version non limitee si vous pouvez le recompiler avec MaybeUInt64 defini comme un entier 64 bits non signe. AUTEUR Julian Seward, jseward@acm.org. https://sourceware.org/bzip2/ Les idees integrees a bzip2 sont dues (entre autres) aux personnes suivantes : Michael Burrows et David Wheeler (pour la transformation de tri de blocs), David Wheeler (a nouveau, pour le codeur Huffman), Peter Fenwick (pour le modele de codage structure du bzip original et pour de nombreux raffinements), et Alistair Moffat, Radford Neal et Ian Witten (pour le codeur arithmetique du bzip original). Je suis tres reconnaissant a ces personnes pour leur aide, leur soutien et leurs conseils. Voyez le manuel dans la distribution source pour obtenir des liens vers les sources de documentation. Christian von Roques m'encouragea a chercher des algorithmes de tri plus rapides, pour accelerer la compression. Bela Lubkin m'encouragea a ameliorer la performance de la compression dans le pire des cas. Beaucoup de personnes m'ont envoye des correctifs, aide pour des problemes de portabilite, prete des machines, donne des conseils et ont ete generalement utiles. TRADUCTION La traduction francaise de cette page de manuel a ete creee par Frederic Delanoy et Jean-Pierre Giraud Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . bzip2(1)