Articles

Manipulation des archives RAR et 7-Zip sous Linux

Les formats de compression de fichiers RAR et 7-Zip sont nés sous Windows, leur prise en charge sous Linux n’est donc pas aussi automatique que pour les vieux holdovers Unix comme Gzip et TAR. Mais avec le bon logiciel, vous pouvez manipuler ces fichiers compressés sans trop de problèmes.

D’abord, un peu de contexte. RAR – abréviation de Roshal Archive – est un format propriétaire de compression de fichiers développé par Eugene Roshal. Roshal vend un utilitaire commercial pour Windows appelé WinRAR, mais il propose aussi gratuitement des clients de décompression uniquement pour un certain nombre de systèmes d’exploitation.

7-Zip est une application Windows conçue pour gérer autant de formats de compression que possible. Son format natif est 7z, qui utilise une ramification moderne de l’algorithme de compression LZ77. L’application Windows 7-Zip et un kit de développement logiciel 7z sont disponibles sous licence LGPL.

Les deux formats prétendent atteindre de meilleurs taux de compression pour les types de données courants que les anciens algorithmes. Ils prennent également en charge la division de grandes archives en plusieurs petits volumes pour faciliter la mobilité et la récupération des erreurs. La combinaison de ces deux caractéristiques en avait fait des choix populaires pour la distribution en ligne de fichiers extrêmement volumineux tels que les images ISO.

7z et Linux

L’application 7-Zip est open source, mais reste réservée à Windows. Pour les utilisateurs de Linux, le projet renvoie à un paquet client en ligne de commande nommé p7zip qui fournit deux exécutables, 7z et 7za. Les deux ont la même syntaxe et les mêmes options, ne différant que par le fait que 7za est une application autonome compilée uniquement pour être utilisée avec 7z et les formats Unix essentiels (tar, gzip, bzip2, etc.), tandis que 7z utilise une architecture de plugins qui lui permet de prendre en charge de nombreux formats de compression supplémentaires.

La syntaxe de base est 7z function options filename.7z. Pour décompresser une archive, utilisez 7z x myfile.7z. Vous pouvez extraire des fichiers d’une archive avec 7z e myotherfile.7z, mais l’utilisation de la fonction e extrait tous les fichiers dans le répertoire de travail actuel, alors que x préserve leurs chemins.

RAR et Linux

La situation de RAR est un peu plus compliquée, en raison du schéma de compression propriétaire du format de fichier. Le site de RARLAB fournit un client propriétaire non compressé et gratuit pour Linux appelé unrar, conçu pour les distros Intel 32 bits dans les paquets RPM et Slackware, et sous forme de binaires autonomes pour les systèmes Linux PowerPC, Intel 64 bits et ARM. Comme le programme unrar de RARLAB n’est ni un logiciel libre ni une source ouverte, il est peu probable que vous le trouviez livré avec de nombreuses distributions Linux. Vous pouvez télécharger un tarball de code source de RARLAB, mais la licence jointe vous interdit explicitement d’utiliser le code source pour développer toute forme d’encodeur RAR.

Une autre option est un outil en ligne de commande sous licence GPLv2 développé par le projet Gna ! De manière assez confuse, le décodeur RAR open source est également nommé unrar. Gna ! unrar est conçu comme un wrapper autour de unrarlib, une bibliothèque de décodage RAR open source développée par Christian Scheurer et Johannes Winkelmann – qui ne font pas partie de Gna!

Scheurer et Winkelmann ont développé unrarlib à partir du code source original de RARLAB, mais ont demandé et obtenu la permission d’Eugene Roshal de diffuser leur travail en tant que logiciel libre. Ainsi, unrarlib est disponible sous la GPLv2 et sous la licence propriétaire originale de RARLAB.

Cette disposition de licence semblerait dégager une voie pour que les parties intéressées puissent contourner RARLAB et créer un encodeur RAR concurrent à partir du code source original, mais cela ne s’est pas encore produit. Scheurer lui-même n’est pas intéressé à poursuivre dans cette voie, disant qu’il préfère utiliser des formats open source pour créer des archives. « Vous ne pouvez pas toujours choisir le format dans lequel vous obtenez les données, il est donc bon d’avoir un moyen ouvert d’y accéder. Mais vous pouvez choisir la manière dont vous créez une archive. Si vous ne voulez pas d’outils de compression à source fermée, il existe de bonnes alternatives. »

L’unrar propriétaire utilise la même syntaxe de base que 7z et 7za. Pour décompresser et archiver et préserver les chemins de fichiers, tapez unrar x myarchive.rar. Dans l’unrar GPL, il suffit d’ajouter un trait d’union avant le x : unrar -x myotherarchive.rar.

Aujourd’hui, unrarlib ne supporte que jusqu’à la version 2 du format de fichier RAR. Scheurer dit qu’il travaille à l’ajout du support du format RAR3 plus récent à unrarlib, mais dit qu’il n’est pas sûr de la réaction à attendre de RARLAB.

Support de l’interface graphique

Si vous faites la plupart de votre travail à partir d’un gestionnaire de fenêtres Linux, vous avez de la chance. GNOME et KDE disposent tous deux de gestionnaires d’archives graphiques – File Roller pour GNOME et Ark pour KDE. Les versions récentes des deux utilisent des plugins pour prendre en charge une grande variété de formats d’archives, et s’appuient sur p7zip pour le support 7z et Gna ! unrar pour le support RAR. En raison de l’incompatibilité des fichiers RAR3 plus récents, cependant, vous pouvez toujours avoir besoin d’installer l’unrar propriétaire sur votre système également.

Comme je l’ai mentionné au début, 7z et RAR prennent tous deux en charge la division de gros fichiers en plus petits morceaux. Cependant, dans mes tests, ni File Roller ni Ark n’ont reconnu qu’un répertoire rempli de fichiers numérotés séquentiellement monfichier.7z.001, monfichier.7z.002, monfichier.7z.003, et ainsi de suite constituait un seul fichier 7z fractionné en morceaux de la taille d’une bouchée.

Donc, pour accéder aux données à l’intérieur, j’ai dû réunir les fichiers fractionnés en un seul sur la ligne de commande en utilisant la commande cat. cat myfile.7z.001 myfile.7z.002 myfile.7z.003 > myfile.7z recollera les fichiers partiels dans l’ordre, en nommant le résultat monfichier.7z. À ce stade, vous pourriez ouvrir l’archive 7z dans File Roller ou Ark, mais tant que vous êtes déjà à la ligne de commande, il est beaucoup plus rapide de simplement taper 7z x myfile.7z, et voilà – des données, de belles données, juste au bout de vos doigts.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *