10 jeux amusants à jouer dans le terminal Linux
Agence web » Actualités du digital » Comment compresser et décompresser des fichiers avec Gzip sous Linux

Comment compresser et décompresser des fichiers avec Gzip sous Linux

Il existe de nombreux utilitaires de compression de fichiers, mais celui que vous êtes assuré de trouver sur chaque distribution Linux est gzip. Si vous n’apprenez à utiliser qu’un seul outil de compression, ce devrait être gzip .

EN RELATION: Comment fonctionne la compression de fichiers ?

Algorithmes et arbres

Le gzip L’outil de compression de données a été écrit au début des années 1990 et se trouve toujours dans toutes les distributions Linux. Il existe d’autres outils de compression disponibles, mais quel que soit l’ordinateur Linux sur lequel vous devez travailler, vous trouverez gzip dessus. Donc si vous savez utiliser gzipvous ê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 antérieurs qui fonctionnaient tous sur des variations d’un thème. Les données à compresser sont analysées et des 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 ont remplacées, le fichier est compressé. Remplacer les jetons par les chaînes d’origine ramène les données à leur état non compressé.

L’algorithme DEFLATE a ajouté la torsion que les chaînes les plus fréquemment rencontrées se voyaient attribuer les plus petits jetons et les chaînes les moins fréquemment rencontrées se voyaient attribuer 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.

Au moment de la rédaction de cet article, l’algorithme DEFLATE a près de trois décennies. Il y a trois décennies, les coûts de stockage des données étaient élevés et les vitesses de transmission étaient lentes. La compression des données était d’une importance vitale.

Le stockage des données est beaucoup moins cher aujourd’hui et les vitesses de transmission sont des ordres de grandeur plus rapides. Mais nous avons tellement plus de données à stocker, et dans le monde entier, les gens accèdent aux services de stockage et de streaming dans le cloud. La compression des données est toujours absolument important, même si tout ce que vous faites est de réduire quelque chose que vous devez 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 volumineux, meilleure est la compression. C’est à cause de deux raisons. La première est qu’il y aura de nombreuses séquences d’octets identiques et répétées dans un gros fichier. La deuxième raison est que la liste des chaînes 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 anéantir les avantages de la compression. Mais même avec un fichier assez petit, il y aura probablement une réduction de taille.

Compresser un fichier

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

ls -lh calc-sheet.ods
gzip calc-sheet.ods
ls -lh cal-*

Compresser 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 d’origine auquel est ajouté « .gz ».

La première utilisation du ls La commande 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 d’origine.

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

gzip -k calc-sheet.ods
ls -lh calc-sheet.*

Compresser un fichier et conserver le fichier d'origine

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

Décompresser un fichier

Pour décompresser un fichier d’archive GZ, utilisez le -d (décompresser). Cela extraira le fichier compressé de l’archive et le décompressera afin qu’il soit impossible de le distinguer du fichier d’origine.

ls calc-sheet.*
gzip -d calc-sheet.ods.gz
ls calc-sheet.*

Décompresser 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 le -k (conserver) à nouveau, ainsi que l’option -d (décompresser).

ls calc-sheet.*
gzip -d calc-sheet.ods.gz
ls calc-sheet.*

Décompresser un fichier et conserver le fichier d'archive

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

EN RELATION: Pourquoi les fichiers supprimés peuvent être récupérés et comment vous pouvez l’empêcher

Décompression et écrasement

Si vous essayez d’extraire un fichier dans un répertoire où le fichier d’origine (ou un fichier différent avec le même) existe, gzip vous invitera à choisir d’abandonner l’extraction ou d’écraser le fichier existant.

gzip -d text-file.txt.gz

Remplacer l'invite de gzip lorsque le fichier dans l'archive existe déjà dans le répertoire

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

gzip -df text-file.txt.gz

Forcer l'écrasement d'un fichier existant

Le fichier est écrasé et vous revenez silencieusement à la ligne de commande.

Compression des arborescences de répertoires

Le -r l’option (récursive) cause gzip pour compresser les fichiers dans une arborescence de répertoires entière. Mais le résultat pourrait ne pas être celui que vous attendiez.

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

tree level1

Tester l'arborescence des répertoires

utilisons gzip dans l’arborescence des répertoires et voyez ce qui se passe.

gzip -r level1/
tree level1

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

Le résultat est gzip a créé un fichier d’archive pour chaque fichier texte dans la structure de répertoires. Il n’a pas créé d’archive de toute l’arborescence des répertoires. En réalité, gzip ne peut mettre qu’un seul fichier dans une archive.

Nous pouvons créer un fichier d’archive contenant une arborescence de répertoires et tous ses fichiers, mais nous devons mettre en jeu une autre commande. Le tar est utilisé pour créer des archives de nombreux fichiers, mais il n’a pas ses propres routines de compression. Mais en utilisant les options appropriées avec taron peut provoquer tar pour pousser le fichier d’archive à travers 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

Le tar les options sont :

  • c: Créer une archive.
  • z: Faites passer les fichiers gzip.
  • v: mode verbeux. Imprimer dans la fenêtre du terminal ce que tar est jusqu’à.
  • f niveau1.tar.gz: nom de fichier à utiliser pour le fichier d’archive.

La sortie de tar chemine dans l'arborescence des répertoires

Cela archive la structure de l’arborescence de répertoires et tous les fichiers dans l’arborescence de répertoires.

EN RELATION: Comment compresser et extraire des fichiers à l’aide de la commande tar sous Linux

Obtenir des informations sur les archives

Le -l L’option (liste) fournit des informations sur un fichier d’archive. Il 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 text-file.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 le -t option (tester).

gzip -t level1.tar.gz

Tester une archive avec l'option -t

Si tout va bien, vous revenez silencieusement à la ligne de commande. Pas de nouvelles, bonnes nouvelles.

Si l’archive est corrompue ou non, 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 contre compression

Vous pouvez choisir de prioriser la vitesse de création de l’archive ou le degré de compression. Pour ce faire, fournissez un numéro en option, à partir de -1 par le haut -9. Le -1 l’option donne la vitesse la plus rapide au sacrifice de la compression et -9 offre la compression la plus élevée au détriment de la vitesse.

À moins que vous ne fournissiez 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 de vitesse et de 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.

Fait intéressant, il n’y a pas de différence entre l’utilisation de la compression de niveau 9 et de la compression de niveau 6. Vous ne pouvez extraire qu’une quantité limitée de compression d’un fichier donné et dans ce cas, cette limite a été atteinte avec une compression de niveau 6. Le monter jusqu’à 9 n’a pas entraîné de réduction supplémentaire de la taille du fichier. Avec des fichiers plus volumineux, la différence entre le niveau 6 et le niveau 9 serait plus prononcée.

Compressé, non 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é ni meilleure confidentialité. Toute personne ayant accès à votre dossier peut utiliser gzip pour le décompresser.

EN RELATION: Lister les 10 plus gros fichiers ou répertoires sous Linux

★★★★★