Comment compresser et décompresser des fichiers avec Gzip sous Linux
Publié: 2022-06-28 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 apprenez à n'utiliser qu'un seul outil de compression, ce devrait être gzip
.
CONNEXION : Comment fonctionne la compression de fichiers ?
Algorithmes et arbres
L'outil de compression de données gzip
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 y trouverez gzip
. Donc, si vous savez 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 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'arborescence . 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 d'une importance vitale , 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 à la commande gzip
. 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-*
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 de la commande ls
cible un fichier spécifique, la feuille de calcul. La seconde utilisation de ls
recherche tous les fichiers commençant par « calc- », mais ne trouve que le fichier compressé. En effet, 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 l'option -k
(conserver).
gzip -k calc-sheet.ods
ls -lh calc-sheet.*
Cette fois, le fichier ODS d'origine est conservé.
Décompresser un fichier
Pour décompresser un fichier d'archive GZ, utilisez l'option -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.*
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
(conserver), ainsi que l'option -d
(décompresser).
ls calc-sheet.*
gzip -d calc-sheet.ods.gz
ls calc-sheet.*
Cette fois, gzip ne supprime pas le fichier d'archive.
CONNEXION: 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 demandera de choisir d'abandonner l'extraction ou d'écraser le fichier existant.
gzip -d fichier-texte.txt.gz
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 fichier-texte.txt.gz
Le fichier est écrasé et vous revenez silencieusement à la ligne de commande.
Compression des arborescences de répertoires
L'option -r
(récursive) oblige gzip
à 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.
niveau de l'arborescence1
Utilisons gzip
sur l'arborescence des répertoires et voyons ce qui se passe.
gzip -r niveau1/
niveau de l'arborescence1
Le résultat est que 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 fait, 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 programme 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 tar
, nous pouvons faire en sorte que tar
pousse le fichier d'archive via gzip
. De cette façon, nous obtenons un fichier d'archive compressé et une archive multi-fichiers ou multi-répertoires.
tar -czvf niveau1.tar.gz niveau1
Les options tar
sont :
- c : Créer une archive.
- z : Transférez les fichiers via
gzip
. - v : mode verbeux. Imprimez dans la fenêtre du terminal ce que
tar
fait. - f level1.tar.gz : nom de fichier à utiliser pour le fichier d'archive.
Cela archive la structure de l'arborescence de répertoires et tous les fichiers dans l'arborescence de répertoires.
CONNEXION: Comment compresser et extraire des fichiers à l'aide de la commande tar sous Linux
Obtenir des informations sur les archives
L'option -l
(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 niveau1.tar.gz
gzip -l fichier-texte.txt.gz
Vous pouvez vérifier l'intégrité d'un fichier d'archive avec l'option -t
(test).
gzip -t niveau1.tar.gz
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 pas-une-archive.gz
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 nombre en option, de -1
à top -9
. L'option -1
donne la vitesse la plus rapide au sacrifice de la compression et -9
donne la compression la plus élevée au sacrifice 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
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 fichier peut utiliser gzip
pour le décompresser.
CONNEXION : Répertorier les 10 fichiers ou répertoires les plus volumineux sous Linux