gzip : compresser des fichiers sous Linux, décompresser gzip, utiliser gunzip et zcat
gzip est la commande Linux qui compresse un seul fichier en fichier .gz ; pour décompresser, ajoutez -d à la même commande ou utilisez gunzip. Sur un serveur AlmaLinux 9, un journal d'accès de 31 878 octets est passé à 4 424 octets, et la décompression a rendu la taille et l'heure de modification d'origine.
Les sorties ci-dessous ont été obtenues dans un dossier de test d'un serveur AlmaLinux 9.8 avec le compte root, et les heures sont en UTC. Les journaux d'accès, les notes et les fichiers de configuration sont des fichiers d'exemple créés pour le test, et les adresses IP des journaux sont aussi des valeurs d'exemple pour la documentation.
1️⃣ Utiliser la commande gzip
Le dossier de test contient deux journaux d'accès, deux fichiers de notes, un dossier config avec des fichiers de configuration et un dossier restore vide.
ls -ltotal 88
-rw-r--r-- 1 root root 31878 Oct 28 23:50 access.log
-rw-r--r-- 1 root root 47748 Oct 27 23:59 access.log-20261027
drwxr-xr-x 2 root root 39 Oct 29 00:19 config
-rw-r--r-- 1 root root 45 Oct 28 14:30 memo.txt
-rw-r--r-- 1 root root 426 Oct 27 09:10 readme.txt
drwxr-xr-x 2 root root 6 Oct 29 00:19 restoreSi vous écrivez un nom de fichier après gzip, ce fichier devient un fichier compressé avec .gz ajouté à la fin de son nom. La commande ci-dessous compresse access.log et n'affiche rien une fois terminée.
gzip access.logAprès la compression, ls -l ne montre plus access.log mais seulement access.log.gz. Le journal de 31 878 octets est passé à 4 424 octets, et l'heure de modification reste celle du fichier d'origine.
ls -l access.log access.log.gzls: cannot access 'access.log': No such file or directory
-rw-r--r-- 1 root root 4424 Oct 28 23:50 access.log.gzAvec -v, gzip affiche pour chaque fichier le taux de réduction et le nouveau nom de fichier. Le [81.5%] de la ligne readme.txt indique de combien la taille d'origine a diminué, et [replaced with] signifie que le fichier d'origine a été remplacé par le fichier .gz.
gzip -v readme.txtreadme.txt: 81.5% -- replaced with readme.txt.gzPour garder le fichier d'origine, ajoutez -k. Si vous compressez memo.txt avec -k, memo.txt et memo.txt.gz restent côte à côte.
gzip -k memo.txtls -l memo.txt memo.txt.gz-rw-r--r-- 1 root root 45 Oct 28 14:30 memo.txt
-rw-r--r-- 1 root root 71 Oct 28 14:30 memo.txt.gzLe memo.txt de 45 octets a même grossi à 71 octets après la compression. Selon le manuel officiel, gzip compresse même si le résultat est plus gros que l'original, et il enregistre dans le fichier compressé le nom et l'heure du fichier d'origine.
Si vous indiquez plusieurs fichiers à la fois, chaque fichier donne son propre fichier .gz. En compressant les deux fichiers de configuration du dossier config, on obtient deux fichiers, app.conf.gz et site.conf.gz.
gzip -v config/app.conf config/site.confconfig/app.conf: 78.7% -- replaced with config/app.conf.gz
config/site.conf: 87.7% -- replaced with config/site.conf.gzls -l config/total 8
-rw-r--r-- 1 root root 206 Oct 20 11:00 app.conf.gz
-rw-r--r-- 1 root root 93 Oct 20 11:05 site.conf.gz2️⃣ Décompresser gzip
En décompressant access.log.gz avec -d, rien ne s'affiche, access.log revient et access.log.gz disparaît.
gzip -d access.log.gzls -l access.log access.log.gzls: cannot access 'access.log.gz': No such file or directory
-rw-r--r-- 1 root root 31878 Oct 28 23:50 access.logL'access.log restauré fait 31 878 octets, et son heure de modification est la même qu'avant la compression, Oct 28 23:50.
gunzip fait la même chose que gzip -d. Avec -k, il décompresse en gardant le fichier compressé, et [created] sur la ligne de -v signifie qu'un nouveau fichier a été créé sans supprimer le fichier .gz.
gunzip -kv readme.txt.gzreadme.txt.gz: 81.5% -- created readme.txtls -l readme.txt readme.txt.gz-rw-r--r-- 1 root root 426 Oct 27 09:10 readme.txt
-rw-r--r-- 1 root root 108 Oct 27 09:10 readme.txt.gzgzip n'a pas d'option pour choisir le dossier de destination ; pour décompresser dans un autre dossier, envoyez avec -c le contenu décompressé sur la sortie standard et écrivez le chemin du nouveau fichier après [>]. La commande ci-dessous décompresse memo.txt.gz en memo.txt dans le dossier restore.
gzip -dc memo.txt.gz > restore/memo.txtls -l restore/total 4
-rw-r--r-- 1 root root 45 Oct 29 00:19 memo.txtEn décompressant avec -c, memo.txt.gz reste en place. Le nouveau restore/memo.txt a pour heure de modification Oct 29 00:19, moment de sa création.
3️⃣ Options de la commande gzip
-l affiche sur une ligne, sans décompresser, la taille compressée, la taille d'origine, le taux de réduction et le nom obtenu à la décompression. Après avoir recompressé access.log avec -k, la vérification avec -l donne ceci.
gzip -k access.loggzip -l access.log.gz compressed uncompressed ratio uncompressed_name
4424 31878 86.2% access.logAvec -v en plus, la méthode de compression (defla, abréviation de deflate), le CRC des données d'origine ainsi que la date et l'heure du fichier d'origine s'ajoutent devant.
gzip -lv access.log.gzmethod crc date time compressed uncompressed ratio uncompressed_name
defla b49b41c4 Oct 28 23:50 4424 31878 86.2% access.log-t vérifie seulement que le fichier compressé n'est pas endommagé, puis s'arrête. Utilisé avec -v, il affiche [OK] après chaque fichier sans problème.
gzip -tv access.log.gzaccess.log.gz: OKLes chiffres de -1 à -9 fixent le niveau de compression, et selon le manuel officiel la valeur par défaut est -6. Le même access.log a été compressé trois fois avec -c et les tailles ont été comparées avec wc -c.
gzip -c -1 access.log | wc -c5564gzip -c -6 access.log | wc -c4424gzip -c -9 access.log | wc -c4164| Niveau de compression | Taille .gz | Par rapport à l'original |
|---|---|---|
| Fichier d'origine (access.log) | 31 878 octets | 100% |
| -1 (le plus rapide) | 5 564 octets | 17.5% |
| -6 (par défaut) | 4 424 octets | 13.9% |
| -9 (le plus petit) | 4 164 octets | 13.1% |
-9 était 260 octets plus petit que la valeur par défaut, et -1 était 1 140 octets plus gros que la valeur par défaut.
Si vous n'indiquez qu'un nom de dossier, [is a directory -- ignored] s'affiche et le dossier est ignoré.
gunzip configgzip: config is a directory -- ignoredPour traiter tous les fichiers d'un dossier, ajoutez -r. En décompressant avec gunzip -r le dossier config, où les deux fichiers de configuration avaient été compressés, les deux fichiers sont décompressés l'un après l'autre.
gunzip -rv configconfig/app.conf.gz: 78.7% -- replaced with config/app.conf
config/site.conf.gz: 87.7% -- replaced with config/site.confls -l config/total 8
-rw-r--r-- 1 root root 840 Oct 20 11:00 app.conf
-rw-r--r-- 1 root root 528 Oct 20 11:05 site.conf-r compresse ou décompresse un par un les fichiers d'un dossier et ne regroupe pas plusieurs fichiers en un seul. Pour faire d'un dossier un seul fichier compressé, utilisez la commande tar, qui regroupe et compresse en une seule étape. En compressant le dossier config avec tar -czf, le dossier et les deux fichiers se retrouvent dans un seul config.tar.gz.
tar -czf config.tar.gz configtar -tzvf config.tar.gzdrwxr-xr-x root/root 0 2026-10-29 00:19 config/
-rw-r--r-- root/root 840 2026-10-20 11:00 config/app.conf
-rw-r--r-- root/root 528 2026-10-20 11:05 config/site.conf📌 Options principales : résultats de cet article
| Option | Rôle | Résultat dans cet article | |
|---|---|---|---|
| -c | Envoie le résultat sur la sortie standard et laisse le fichier d'origine tel quel | La sortie de -dc redirigée vers restore/memo.txt a créé un memo.txt de 45 octets | |
| -d | Décompresser (comme gunzip) | access.log.gz disparaît et access.log de 31878 octets revient | |
| -k | Garde le fichier d'origine après compression ou décompression | memo.txt (45 octets) et memo.txt.gz (71 octets) restent côte à côte | |
| -v | Affiche pour chaque fichier le taux de réduction et le nouveau nom | readme.txt: 81.5% -- replaced with readme.txt.gz | |
| -l | Liste la taille, le taux et le nom après décompression des fichiers compressés | Taille compressée 4424, taille d'origine 31878, taux 86.2%, nom access.log | |
| -t | Vérifie que le fichier compressé n'est pas endommagé | Avec -tv, access.log.gz: OK, et unexpected end of file pour broken.gz, dont la fin est coupée | |
| -r | Compresse ou décompresse tous les fichiers d'un dossier | Un seul gunzip -rv config décompresse config/app.conf.gz et config/site.conf.gz | |
| -f | Écrase sans demander même si un fichier du même nom existe | Écrasé sans question : plus de memo.txt, seulement memo.txt.gz (71 octets) | |
| -1 ~ -9 | Niveau de compression (-1 le plus rapide, -9 le plus petit, par défaut -6) | Les sorties compressées avec -1, -6 et -9 comptées avec wc -c : 5564, 4424, 4164 |
📎 Autres options : selon le manuel officiel
| Option | Rôle | |
|---|---|---|
| -N | Enregistre le nom et l'heure du fichier d'origine à la compression (par défaut à la compression) et les restaure à la décompression | |
| -n | N'enregistre pas le nom et l'heure du fichier d'origine à la compression, et utilise le nom sans .gz à la décompression (par défaut à la décompression) | |
| -q | N'affiche aucun avertissement | |
| -S suffixe | Compresse avec le suffixe indiqué au lieu de .gz, et cherche d'abord ce suffixe à la décompression | |
| --rsyncable | Compresse de façon que seules les parties modifiées soient envoyées quand on synchronise des fichiers compressés avec un autre serveur via rsync |
🔲 Simulateur de la commande gzip
Dans le simulateur ci-dessous, vous pouvez saisir vous-même les commandes pour compresser avec gzip, décompresser et voir le contenu avec zcat et zgrep.
4️⃣ Voir le contenu d'un fichier gzip
Les anciens journaux conservés avec une date dans leur nom prennent moins de place une fois compressés avec gzip. La commande ci-dessous compresse access.log-20261027, le journal de la veille.
gzip access.log-20261027Un journal compressé s'affiche à l'écran avec zcat sans être décompressé. zcat est la même commande que gunzip -c (selon le manuel officiel), donc le fichier .gz reste en place.
zcat access.log-20261027.gz | head -3192.0.2.50 - - [27/Oct/2026:00:00:00 +0000] GET / HTTP/1.1 200 15929
192.0.2.54 - - [27/Oct/2026:00:00:07 +0000] GET / HTTP/1.1 200 17699
192.0.2.4 - - [27/Oct/2026:00:00:14 +0000] GET / HTTP/1.1 200 13813La sortie de zcat peut être passée à d'autres commandes par un tube, et compté avec wc -l, ce journal fait 600 lignes.
zcat access.log-20261027.gz | wc -l600Pour chercher un texte précis dans un journal compressé, utilisez zgrep. Avec -c, seul le nombre de lignes contenant [ 404 ] s'affiche ; pour voir les lignes elles-mêmes, lancez-le sans -c.
zgrep -c ' 404 ' access.log-20261027.gz37zgrep ' 404 ' access.log-20261027.gz | head -3192.0.2.23 - - [27/Oct/2026:00:02:06 +0000] GET /old-page-6/ HTTP/1.1 404 229
192.0.2.38 - - [27/Oct/2026:00:04:40 +0000] GET /old-page-2/ HTTP/1.1 404 217
192.0.2.22 - - [27/Oct/2026:00:07:42 +0000] GET /old-page-6/ HTTP/1.1 404 414Quand zcat reçoit un fichier non compressé, il affiche [not in gzip format] et s'arrête.
zcat access.log | head -1
gzip: access.log: not in gzip formatzgrep lit aussi tels quels les fichiers non compressés, ce qui permet de chercher en une fois dans le journal actuel et dans les anciens journaux compressés. Avec deux fichiers ou plus, le nom du fichier précède le nombre de lignes.
zgrep -c wp-login.php access.log access.log-20261027.gzaccess.log:36
access.log-20261027.gz:525️⃣ Erreurs gzip
Si vous recompressez un fichier qui se termine déjà par .gz, [already has .gz suffix -- unchanged] s'affiche et le fichier reste tel quel.
gzip access.log.gzgzip: access.log.gz already has .gz suffix -- unchangedÀ l'inverse, si vous décompressez avec -d un fichier qui ne se termine pas par .gz, [unknown suffix -- ignored] s'affiche.
gzip -d memo.txtgzip: memo.txt: unknown suffix -- ignoredUn fichier qui porte seulement le nom .gz sans avoir été compressé avec gzip se termine par [not in gzip format]. Ce message est apparu en copiant le fichier texte memo.txt sous le nom notgzip.gz puis en le décompressant.
cp memo.txt notgzip.gzgzip -d notgzip.gz
gzip: notgzip.gz: not in gzip formatUn fichier .gz dont la fin est coupée, par exemple après un téléchargement interrompu, se termine par [unexpected end of file]. Voici le résultat de la vérification avec -t de broken.gz, qui ne garde que les 2 000 premiers octets d'un ancien journal compressé.
head -c 2000 access.log-20261027.gz > broken.gzgzip -t broken.gz
gzip: broken.gz: unexpected end of fileMême d'un fichier coupé, zcat peut extraire le contenu jusqu'à l'endroit de la coupure. Sur les 600 lignes du journal, 162 sont restées dans restore/broken.log, et le manuel officiel conseille lui aussi de récupérer le début d'un fichier compressé endommagé avec zcat.
zcat broken.gz > restore/broken.logwc -l restore/broken.log
gzip: broken.gz: unexpected end of file
162 restore/broken.logSi un fichier du même nom que le .gz à créer existe déjà, gzip demande s'il faut l'écraser. En tapant n, la commande se termine par [not overwritten] sans rien changer.
gzip memo.txtgzip: memo.txt.gz already exists; do you wish to overwrite (y or n)? n
not overwrittenAvec -f, gzip écrase directement sans demander. Comme -k n'a pas été ajouté, memo.txt disparaît et seul memo.txt.gz reste.
gzip -f memo.txtls -l memo.txt memo.txt.gzls: cannot access 'memo.txt': No such file or directory
-rw-r--r-- 1 root root 71 Oct 28 14:30 memo.txt.gzVoici les messages d'erreur rencontrés en manipulant la compression et ce qu'il faut vérifier ensuite.
| Sortie | Signification | À vérifier ensuite |
|---|---|---|
| already has .gz suffix -- unchanged | Le fichier se termine déjà par .gz et n'est pas recompressé | Avez-vous écrit le nom du fichier d'origine à compresser |
| unknown suffix -- ignored | Tentative de décompresser un fichier qui ne se termine pas par .gz | Le nom du fichier .gz avec ls |
| not in gzip format | Nommé .gz mais non compressé avec gzip | Le format réel (zip, tar) et la commande correspondante |
| unexpected end of file | La fin du fichier compressé est coupée | Comparer la taille avec l'original et retélécharger · récupérer le début avec zcat |
| already exists; do you wish to overwrite | Un fichier du même nom que celui à créer existe déjà | y ou -f si l'écrasement convient · -c avec un autre nom pour le garder |
| is a directory -- ignored | Nom de dossier au lieu d'un fichier | -r pour les fichiers d'un dossier · tar pour les regrouper en un seul |
🔢 FAQ & contenus recommandés
Rechercher
Commande grep sous Linux
La commande grep pour chercher une chaîne dans des fichiers texte comme les journaux, avec des exemples qui l'enchaînent à tail et find par des tubes.
Disque
Commande du : vérifier l'espace disque des fichiers
La commande du pour vérifier l'espace disque utilisé par les fichiers et les répertoires.
Affichage de fichiers
Commandes head et tail sous Linux
Les commandes head et tail pour voir les premières et dernières lignes d'un fichier, souvent utilisées pour vérifier les journaux d'accès du serveur.
ℹ️ Mention d'affiliation
Le contenu de ce site contient des liens d'affiliation. Lorsqu'un visiteur achète un produit ou un service via l'un de ces liens, le site perçoit une commission du vendeur. Le montant payé par l'acheteur(il baisse lors des promotions ↓), lui, n'augmente pas. Les prix, remises et stocks indiqués correspondent à la date de rédaction et peuvent différer ; vérifiez-les donc auprès du vendeur avant d'acheter. Les produits sont choisis et évalués selon nos propres critères, et les commissions n'influencent ni l'ordre de présentation ni le contenu des évaluations.