Linux / Commande gzip : compresser et vérifier un fichier .gz
gzip compresse des données au format .gz. Avec un fichier nommé comme argument, son fonctionnement habituel remplace l’original par sa version compressée : utilisez -k pour conserver le fichier source, ou -c pour écrire le résultat ailleurs. Pour regrouper un répertoire dans un seul fichier en conservant sa structure, associez gzip à tar.
Comprendre ce que gzip conserve et remplace
Les exemples concernent GNU gzip, dont vous pouvez consulter la version avec gzip --version et les options avec man gzip. La syntaxe générale est :
gzip [OPTIONS] [FICHIER ...]
Sur un fichier ordinaire report.log, gzip report.log produit normalement report.log.gz et retire l’entrée source après réussite. Ce n’est donc pas une commande de copie. Avec plusieurs arguments, gzip traite normalement chaque fichier séparément ; il ne construit pas une archive contenant une arborescence.
La compression est sans perte : une décompression correcte restitue les octets compressés. Elle ne chiffre pas les données et ne garantit aucun gain de taille. Un petit fichier ou des données déjà compressées peuvent même donner un .gz plus gros.
Créer un fichier compressé en gardant la source
Pour essayer sans toucher à vos documents, ouvrez Bash et créez un nouveau dossier temporaire. Ne poursuivez que si la préparation réussit :
demo=$(mktemp -d) &&
cd "$demo" &&
printf 'hello\n' > note.txt &&
printf 'Repertoire de travail : %s\n' "$demo"
Restez dans ce terminal et gardez le chemin affiché. Le nom note.txt est nouveau dans ce dossier. Compressez-le en conservant la source :
gzip -k note.txt && ls -l note.txt note.txt.gz
La liste doit montrer les deux fichiers. Les tailles et dates exactes dépendent du système ; un texte de six octets comme celui-ci est trop court pour illustrer une réduction de taille utile.
Pour choisir un autre nom de sortie, utilisez -c et une redirection :
gzip -c note.txt > note-copy.txt.gz
-c écrit le flux compressé sur la sortie standard et laisse note.txt en place. Le shell ouvre toutefois le fichier après > avant de lancer gzip : un fichier de ce nom déjà présent est normalement tronqué. Choisissez une sortie nouvelle, ne redirigez jamais vers la source et vérifiez le code de sortie avant de considérer le résultat comme utilisable.
Tester le flux et vérifier la restitution du texte
gzip -t note.txt.gz && printf 'Flux gzip valide\n'
-t lit et décompresse les données pour contrôler leur intégrité sans créer un fichier décompressé. Un succès est généralement silencieux ; la ligne ci-dessus affiche donc un message seulement si gzip renvoie 0. GNU gzip utilise 1 pour un échec et 2 pour un avertissement : lisez aussi les diagnostics.
Le contrôle du format et de la somme de contrôle interne peut détecter une corruption, mais ne prouve ni l’origine du fichier ni son authenticité. Un fichier différent, recompressé correctement, peut réussir le même test. Pour comparer avec la source de notre essai, écrivez dans un nouveau nom :
gzip -dc note.txt.gz > restored-note.txt &&
cmp note.txt restored-note.txt &&
printf 'Contenu identique\n'
-d demande la décompression et -c conserve ici le .gz en envoyant le texte vers la sortie standard. cmp ne produit normalement rien quand les deux fichiers sont identiques ; le dernier message confirme cette comparaison uniquement si les commandes précédentes réussissent. L’essai doit restituer hello suivi d’un saut de ligne.
Pour une décompression directement vers le nom déduit du suffixe, gzip -dk fichier.gz conserve aussi le fichier compressé. Songez cependant au fichier de destination déjà présent. À l’inverse, gzip -d fichier.gz remplace normalement le fichier compressé après réussite. N’ajoutez pas -f pour faire disparaître un refus d’écrasement sans examiner les deux fichiers.
Choisir les options adaptées au fichier
| Option | Utilisation |
|---|---|
| -k | Conserver les fichiers d’entrée pendant compression ou décompression. |
| -c | Écrire sur la sortie standard, sans retirer la source. |
| -d | Décompresser au lieu de compresser. |
| -t | Tester l’intégrité du flux compressé. |
| -1 à -9 | Choisir un compromis entre temps de compression et taille. |
| -v | Afficher des détails sur les fichiers traités et leur réduction. |
| -l | Afficher des informations de taille sur un fichier compressé. |
-1 privilégie la vitesse et -9 un effort de compression plus élevé ; le niveau par défaut de GNU gzip est -6. Aucun niveau n’assure un pourcentage de réduction donné. Comparez sur vos données si le temps de traitement ou l’espace est important, sans attendre d’un petit exemple une mesure représentative.
gzip -9c note.txt > note-level9.txt.gz
gzip -l note-level9.txt.gz
Le niveau est choisi lors de la compression ; il n’est pas nécessaire de le rappeler pour décompresser. -l est une consultation d’informations, pas un remplacement du test -t. Pour un flux composé de plusieurs membres gzip concaténés, certaines informations affichées par -l ne concernent que le dernier membre.
Distinguer un fichier gzip d’une archive tar
gzip -c a.txt b.txt produit une suite de membres compressés dont la décompression restitue les contenus à la suite. Cela ne permet pas d’extraire ensuite a.txt et b.txt comme deux entrées indépendantes d’une archive. De même, -r parcourt les répertoires pour compresser les fichiers séparément ; il ne crée pas un unique paquet conservant leur organisation.
Pour transférer une arborescence dans un fichier .tar.gz, tar rassemble les membres puis gzip compresse ce flux. Le guide de la commande tar, de la liste des membres et de leur extraction présente un exemple complet avec restauration et comparaison.
Consultez le manuel GNU gzip pour les règles de remplacement, les niveaux et les limites des flux concaténés. Si -t échoue sur un téléchargement, conservez les diagnostics et recherchez une copie fiable ; renommer le fichier ou forcer sa lecture ne répare pas les données.




