Il existe de nombreux utilitaires de compression de fichiers, mais celui que vous êtes sûr de trouver sur toutes les distributions Linux est gzip. Si vous n’apprenez à utiliser qu’un seul outil de compression, ce devrait être gzip .

Algorithmes et arbres

L’outil de compression de données gzip a été écrit au début des années 1990, et il est toujours présent dans toutes les distributions Linux. Il existe d’autres outils de compression, mais quel que soit l’ordinateur Linux sur lequel vous avez besoin de travailler, vous y trouverez gzip. Donc, si vous savez comment utiliser gzip, vous êtes prêt à partir sans avoir besoin d’installer quoi que ce soit.

gzip est une implémentation de l’algorithme DEFLATE qui a été inventé – et breveté – par Phil Katz de PKZIP. L’algorithme DEFLATE a amélioré les algorithmes de compression précédents qui fonctionnaient tous sur des variations d’un même thème. Les données à compresser sont analysées, et les chaînes uniques sont identifiées et ajoutées à un arbre binaire.

Les chaînes uniques se voient attribuer un jeton d’identification unique en vertu de leur position dans l’arbre. Les jetons sont utilisés pour remplacer les chaînes dans les données et, comme les jetons sont plus petits que les données qu’ils remplacent, le fichier est compressé. En substituant les jetons aux chaînes de caractères d’origine, les données retrouvent leur état non compressé.

L’algorithme DEFLATE a ajouté la particularité que les chaînes les plus fréquemment rencontrées se voient attribuer les plus petits jetons et les chaînes les moins fréquemment rencontrées les plus grands. L’algorithme DEFLATE a également incorporé des idées de deux méthodes de compression antérieures, le codage Huffman et la compression LZ77.

5 SYSTÈMES D’EXPLOITATION LINUX POUR SMARTPHONES À INSTALLER SUR VOTRE APPAREIL

À l’heure où nous écrivons ces lignes, l’algorithme DEFLATE a presque trente ans. Il y a trente ans, les coûts de stockage des données étaient élevés et les vitesses de transmission lentes. La compression des données était d’une importance vitale.

Aujourd’hui, le stockage des données est beaucoup moins cher et les vitesses de transmission sont beaucoup plus rapides. Mais nous avons tellement plus de données à stocker, et dans le monde entier, les gens accèdent au stockage en nuage et aux services de streaming. La compression des données reste d’une importance vitale, même si vous ne faites que réduire un fichier à télécharger ou à transmettre, ou si vous essayez de récupérer de l’espace sur un disque dur local.

La commande gzip

Plus un fichier est gros, plus la compression peut être efficace. Il y a deux raisons à cela. La première est qu’il y aura de nombreuses séquences d’octets identiques et répétées dans un grand fichier. La seconde raison est que la liste des chaînes de caractères et des jetons doit être stockée dans le fichier compressé afin que la décompression puisse avoir lieu. Avec un très petit fichier, cette surcharge peut annuler les avantages de la compression. Mais même avec un fichier assez petit, il est probable qu’il y ait une certaine réduction de la taille.

Compression d’un fichier

Pour compresser un fichier, il suffit de passer le nom du fichier à la commande gzip. Nous allons vérifier la taille originale du fichier, le compresser, puis vérifier la taille du fichier compressé.

ls -lh calc-sheet.ods

gzip calc-sheet.ods

ls -lh cal-*

14 DISTRIBUTIONS LINUX LÉGÈRES POUR DONNER UNE NOUVELLE VIE À VOTRE VIEUX PC

Compression d’une feuille de calcul

Le fichier d’origine, une feuille de calcul appelée  » calc-sheet.ods « , fait 11 Ko, et le fichier compressé (également appelé fichier d’archive) fait 9,3 Ko. Notez que le nom du fichier d’archive est le nom du fichier original auquel on a ajouté  » .gz « .

La première utilisation de la commande ls cible un fichier spécifique, la feuille de calcul. La deuxième utilisation de ls recherche tous les fichiers commençant par « calc- » mais ne trouve que le fichier compressé. C’est parce que, par défaut, gzip crée le fichier d’archive et supprime le fichier original.

Ce n’est pas un problème. Si vous avez besoin du fichier original, vous pouvez le récupérer dans le fichier d’archive. Mais si vous préférez conserver le fichier original, vous pouvez utiliser l’option -k (keep).

gzip -k calc-sheet.ods

ls -lh calc-sheet.*

Compression d’un fichier et conservation du fichier original

Cette fois, le fichier ODS d’origine est conservé.

Décompression d’un fichier

Pour décompresser un fichier d’archive GZ, utilisez l’option -d (decompress). Cela extraira le fichier compressé de l’archive et le décompressera de manière à ce qu’il soit impossible de le distinguer du fichier original.

ls calc-sheet.*

gzip -d calc-sheet.ods.gz

ls calc-sheet.*

Décompression d’un fichier avec gzip

Cette fois, nous pouvons voir que gzip a supprimé le fichier d’archive après avoir extrait le fichier d’origine. Pour conserver le fichier d’archive, nous devons utiliser à nouveau l’option -k (keep), ainsi que l’option -d (decompress).

ls calc-sheet.*

gzip -d calc-sheet.ods.gz

ls calc-sheet.*

Décompression d’un fichier et conservation du fichier d’archive

Cette fois, gzip ne supprime pas le fichier d’archive.

Décompression et écrasement

Si vous essayez d’extraire un fichier dans un répertoire où le fichier original – ou un fichier différent avec le même nom – existe, gzip vous demandera de choisir d’abandonner l’extraction ou d’écraser le fichier existant.

gzip -d fichier-texte.txt.gz

Invitation à l’écrasement de gzip lorsque le fichier de l’archive existe déjà dans le répertoire

Si vous savez à l’avance que vous êtes content que le fichier du répertoire soit écrasé par le fichier de l’archive, utilisez l’option -f (force).

gzip -df fichier-texte.txt.gz

Forcer l’écrasement d’un fichier existant

Le fichier est écrasé et vous êtes renvoyé en silence à la ligne de commande.

Compression d’arborescences de répertoires

L’option -r (récursive) permet à gzip de compresser les fichiers d’une arborescence de répertoires entière. Mais le résultat peut ne pas être celui que vous attendez.

Voici l’arborescence de répertoires que nous allons utiliser dans cet exemple. Les répertoires contiennent chacun un fichier texte.

arbre niveau1

Test de l’arborescence des répertoires

Utilisons gzip sur l’arborescence de répertoires et voyons ce qui se passe.

gzip -r level1/

tree level1

Structure du répertoire après avoir exécuté gzip dessus

Le résultat est que gzip a créé un fichier d’archive pour chaque fichier texte dans la structure du répertoire. Il n’a pas créé une archive de l’arborescence entière du répertoire. En fait, gzip ne peut mettre qu’un seul fichier dans une archive.

Nous pouvons créer un fichier d’archive qui contient une arborescence de répertoires et tous ses fichiers, mais nous devons faire intervenir une autre commande. Le programme tar est utilisé pour créer des archives de nombreux fichiers, mais il ne dispose pas de ses propres routines de compression. Mais en utilisant les options appropriées avec tar, nous pouvons faire en sorte que tar fasse passer le fichier d’archive par gzip. De cette façon, nous obtenons un fichier d’archive compressé et une archive multi-fichiers ou multi-répertoires.

tar -czvf level1.tar.gz level1

Les options de tar sont les suivantes

c : Créer une archive.
z : Pousse les fichiers à travers gzip.
v : Mode verbeux. Affiche dans la fenêtre du terminal ce que tar est en train de faire.
f level1.tar.gz : Nom de fichier à utiliser pour le fichier d'archive.

Sortie de tar se frayant un chemin dans l’arborescence des répertoires

Cette opération archive l’arborescence des répertoires et tous les fichiers qu’elle contient.

Obtenir des informations sur les archives

L’option -l (liste) fournit des informations sur un fichier d’archive. Elle vous montre les tailles compressées et non compressées du fichier dans l’archive, le taux de compression et le nom du fichier.

gzip -l leve1.tar.gz

gzip -l fichier-texte.txt.gz

Utilisation de l’option -l list pour afficher les statistiques de compression d’une archive

Vous pouvez vérifier l’intégrité d’un fichier d’archive avec l’option -t (test).

gzip -t niveau1.tar.gz

Test d’une archive avec l’option -t

Si tout va bien, vous êtes silencieusement renvoyé à la ligne de commande. Pas de nouvelles, bonnes nouvelles.

Si l’archive est corrompue ou n’est pas une archive, vous en êtes informé.

gzip -t not-an-archive.gz

Utilisation de l’option -t pour tester un fichier qui n’est pas une archive.

Vitesse versus Compression

Vous pouvez choisir de donner la priorité à la vitesse de création de l’archive ou au degré de compression. Pour ce faire, vous devez fournir un nombre comme option, de -1 à -9. L’option -1 donne la vitesse la plus rapide au détriment de la compression et -9 donne la compression la plus élevée au détriment de la vitesse.

Si vous ne fournissez pas l’une de ces options, gzip utilise -6.

gzip -1 calc-sheet.ods

ls -lh calc-sheet.ods.gz

gzip -9 calc-sheet.ods

ls -lh calc-sheet.ods.gz

gzip -6 calc-sheet.ods

ls -lh calc-sheet.ods.gz

Utilisation de gzip avec différentes priorités pour la vitesse et la compression

Avec un fichier aussi petit que celui-ci, nous n’avons pas vu de différence significative dans la vitesse d’exécution, mais il y avait une petite différence dans la compression.

Il est intéressant de noter qu’il n’y a pas de différence entre la compression de niveau 9 et la compression de niveau 6. La compression d’un fichier est limitée et, dans ce cas, la limite a été atteinte avec la compression de niveau 6. Le passage au niveau 9 n’a pas permis de réduire davantage la taille des fichiers. Avec des fichiers plus volumineux, la différence entre le niveau 6 et le niveau 9 serait plus prononcée.

Compressé, mais pas protégé

Ne confondez pas la compression avec le cryptage ou toute autre forme de protection. La compression d’un fichier ne lui confère aucune sécurité ou confidentialité accrue. Toute personne ayant accès à votre fichier peut utiliser gzip pour le décompresser.