Je suis en train de faire du ménage sur disque, et j'en profite pour recompresser des archives de log en 7z. Ce format de compression est juste fantastique. Le gain de place par rapport à gzip ou la bouse de .zip est extraordinaire. Mes 1,5 Go de logs qui prenaient 157 Mo en .gz ne prennent plus que 57 Mo en 7z. J'ai gagné 100 Mo sur un fichier de 157 Mo.
Pour ceux qui ne connaissent pas encore les avantages de ce formidable format,
Le format de compression ZIP est vieux. Il a 21 ans. 21 ans, c'est une éternité en informatique. Depuis les choses ont bien évolué, et le format 7z est désormais bien supérieur. Je ne comprend pas l'acharnement de certains internautes à utiliser (voir cracker) WinZip (payant) ou WinRAR (payant aussi) alors que des alternative gratuites et plus performantes comme 7-Zip (www.7-zip.org) existent.
Non seulement 7-Zip sait décompresser les format ZIP, RAR et bien d'autres (arj, cab, lha, gz, bzip2, iso...) mais il possède son propre format 7z, largement plus performant. Laissez-moi mettre en avant quelques avantage du format 7z sur le format ZIP:
. 7z supporte l'Unicode, le format ZIP non. Ça ne vous dit peut-être rien, mais cela permet d'avoir un encodage des caractères internationaux corrects quels que soient les systèmes utilisés.
. La taille maximale que peut supporter un fichier 7z est de 16 000 000 000 Go par fichier compressé. Le format ZIP est limité à 4 Go. (Le format zip64 qui dépasse cette limite n'est pas standard et ne fonctionne pas partout).
. ZIP utilise la méthode de compression deflate (qui est une combinaison de LZ77 et Huffman). Cette méthode est rapide et consomme peu de mémoire, mais elle est relativement ancienne. 7-Zip utilise plusieurs méthodes, dont le LZMA qui est plus performant que deflate. Exemple: On prend la liste ==> http://download.wikimedia.org/frwiki/la … -in-ns0.gz des titres des articles Wikipedia francophone (fichier unique de 41 Mo):
http://prntscr.com/2d2e2a
. En plus de LZMA, 7z possède des méthodes de compression spécialisées pour certains types de fichiers, par exemple l'algo BCJ pour compresser les exécutables x86 (.exe). Ces méthodes de compression spécialisées donnent de meilleurs résultats que les algorithmes génériques LZMA ou deflate sur ces types de données.
. Le format ZIP est assez bête: Il compresse chaque fichier individuellement, hors de tout contexte. C'est à dire qu'une fois qu'un fichier est compressé, ZIP oublie toutes ses tables de compression et recommence à "apprendre" avec le fichier suivant. Le format 7z groupe les fichiers par extension (quels que soient les répertoires dans lesquels il se trouvent), et conserve ses tables de compression d'un fichier à l'autre. Par exemple les fichiers html contiennent tous généralement les mêmes balises (body,div,span...), et les sources en C souvent les mêmes instructions (if,return,define,char,else...). En compressant par extension, 7z tire partie de cette redondance.
Exemple: Prenons les sources de VLC (vlc-1.1.0.tar.bz2).
http://prntscr.com/2d2e7y
Le fichier 7z est deux fois plus petit que le fichier ZIP !
. Le format 7z repère bien les fichiers identiques. Exemple: Prenons 8 répertoires contenant le même fichier de 23,9 Mo (vlc-1.1.0.tar.bz2).
http://prntscr.com/2d2ecj
Le format ZIP aura compressé 8 fois le fichier. Le format 7z aura repéré les copies et n'en garde qu'une.
. En fait, c'est même encore plus sioux que ça: Le format 7z est capable de repérer les segments de données identiques dans des fichiers différents. Créons un fichier message.txt (mettez le texte que vous voulez dedans), puis tapez: copy /b message.txt+vlc-1.1.0.tar.bz2+message.txt essai.bin
Cela va créer un fichier essai.bin différent de vlc-1.1.0.tar.bz2, mais qui contient en son milieu un segment de données identique au fichier vlc-1.1.0.tar.bz2. Compressons maintenant nos deux fichiers ensembles:
http://prntscr.com/2d2egl
Le fichier 7z est à peine plus gros que le fichier vlc-1.1.0.tar.bz2: 7-Zip a repéré qu'une partie du fichier essai.bin correspond à vlc-1.1.0.tar.bz2. Au lieu de recompresser cette partie, il a juste fait référence au fichier vlc-1.1.0.tar.bz2.
. En format ZIP, la liste des fichiers contenus dans l'archive n'est pas compressée, et cela peut prendre une place non négligeable. Par exemple, si vous compressez les sources de VLC en ZIP, voici ce que donne la liste des fichiers (extrait):
http://prntscr.com/2d2el6
On voit qu'il y a beaucoup de redondance, et cela a un impact d'autant plus important que les fichiers sont nombreux et les répertoires imbriqués. En format 7z, cette liste est compressée.
. Le format 7z supporte nativement le chiffrement AES 256 bits (solide). Le chiffrement en format ZIP est faible, vraiment faible. (Il existe un chiffrement fort en ZIP, mais cela rend les fichiers ZIP incompatibles avec certains logiciels.)
. Le chiffrement des fichiers ZIP laisse les noms de fichiers en clair. Le format 7z peut aussi chiffrer les noms des fichiers.
. C'est l'une des rares applications à savoir exploiter le multithreading des processeurs. Quand n'importe quel autre programme utilise 50% du processeur (un seul thread), 7-Zip l'utilise à 100%.
. Le format 7z est libre, ouvert. Le logiciel 7-Zip est gratuit et libre (GPL). 7-Zip est multiplaformes (Windows, Linux, Mac...). On peut l'utiliser avec son interface graphique, en ligne de commande ou sous forme de librairie. Le code de décompression fait 5 ko.
. L'interface graphique sous Windows est pratique. On peut mettre la compression en arrière-plan pour ne pas ralentir l'ordinateur. Il y a même un bouton "Pause". En prime 7-Zip peut faire un découpage automatique ou créer des archives auto-extractibles (sous Windows).
Le format 7z est vraiment une belle réalisation. J'arrive difficilement à lui trouver des inconvénients. Même si de nos jours c'est l'orgie de giga-octets au niveau des mémoires et des disques durs, l'utilisation du format 7z permet de gagner une place non négligeable, surtout pour envoyer par internet (par exemple par email). Il est tellement performant, portable et pratique que ça ne vaut pas le coup de s'en passer.
Le format 7z a quand même un inconvénient: Il n'est pas possible d'effacer ou remplacer un seul fichier dans l'archive sans tout décompresser/recompresser (sauf si vous désactivez le mode "solid", mais la compression est alors moins bonne).
Notez qu'il existe des algos encore plus performants que 7z/LZMA, mais ils ont des temps de compression bien trop long pour nos processeurs actuels ( je vous avais déjà parlé de l'algo paq8hp5 d'Alexander Ratushnyak, qui depuis a encore amélioré son exploit avec lpaq9m ; Malheureusement les pages de téléchargement font un 404, et c'est fort dommage).
Par pitié, arrêtez de prendre des versions crackées de WinZip ou WinRAR. Faites-vous une fleur: Passez à 7-Zip.
PS: Sous Linux ni ZIP ni 7z ne mémorisent les droits sur les fichiers, contrairement au format .tar (.tar.gz ou .tar.bz2). Pour l'archivage, le format .tar reste donc incontournable. Le format .tar.7z pourrait être une solution (Les sources de VLC font 23,9 Mo en .tar.bz2, et seulement 13,8 Mo en .tar.7z).
PS n°2: La compression lzma est dispo sous Linux (sans besoin du système d'archive de 7z): Faites un man lzma: Il s'utilise comme gzip. tar sait même l'utiliser directement (Faites un man tar). Le format .tar.lzma est même intégré à Nautilus (le gestionnaire de fichiers de Gnome):