Gzip en Linux : comment compresser, décompresser et gérer vos fichiers en ligne de commande

découvrez comment compresser, décompresser et gérer vos fichiers avec gzip sous linux grâce aux principales commandes en ligne de commande.

La commande gzip compresse des fichiers individuels sous Linux et crée généralement une version portant l’extension .gz. Elle sert autant à réduire la taille de journaux et de sauvegardes qu’à préparer des données pour un transfert. À connaître avant de commencer : gzip remplace le fichier d’origine par défaut. Pour conserver celui-ci, il faut utiliser une option adaptée.

Ce guide détaille la compression de fichiers, la décompression, l’affichage de données sans extraction et l’association avec tar pour regrouper un dossier. Le fil conducteur sera celui d’un petit site web dont les journaux doivent être archivés chaque semaine. Les commandes proposées fonctionnent depuis la ligne de commande, dans un terminal Linux courant.

En bref

  • Un fichier, un fichier compressé : gzip ne crée pas à lui seul une archive regroupant plusieurs fichiers.
  • Pour garder l’original : utilise gzip -k fichier ou redirige la sortie avec gzip -c.
  • Pour extraire : gunzip fichier.gz et gzip -d fichier.gz sont deux méthodes équivalentes.
  • Pour un dossier : associe tar et gzip afin de produire une archive unique.
  • Pour lire sans extraire : zcat envoie le contenu décompressé vers le terminal.

Compresser un fichier avec gzip sous Linux

La syntaxe de base est directe : gzip [options] fichier. Pour compresser un journal nommé access.log, la commande est simplement gzip access.log. Le résultat est access.log.gz et le fichier non compressé disparaît de son emplacement.

Ce comportement surprend parfois lors du premier essai. Gzip ne détruit pas le contenu : il remplace le fichier par son équivalent compressé. Mais si le fichier original doit rester disponible pour une comparaison ou un traitement ultérieur, cette suppression apparente peut devenir gênante.

Conserver le fichier d’origine

L’option -k demande à gzip de garder le fichier source. Pour le journal précédent, utilise gzip -k access.log. Les deux fichiers restent alors présents, ce qui est pratique pour tester le taux de réduction avant d’intégrer la commande à un script de sauvegarde.

Une autre méthode consiste à envoyer le résultat vers la sortie standard avec -c, puis à le rediriger dans un nouveau fichier :

gzip -c access.log > access.log.gz

Cette forme est utile dans les pipelines, car elle sépare clairement la lecture de la source et l’écriture du résultat. Elle permet aussi de choisir un nom de sortie différent. Attention toutefois : le symbole > écrase le fichier de destination s’il existe déjà. Pour ajouter des données à un fichier, le symbole >> a un autre comportement et ne doit pas être substitué sans comprendre le format produit.

A lire :   Comment supprimer un mail envoyé sur Outlook : étapes et limites à connaître

Choisir un niveau et vérifier le résultat

Les options gzip permettent de choisir un niveau de compression de 1 à 9. L’option -1 privilégie la vitesse, tandis que -9 cherche une réduction plus poussée au prix d’un traitement potentiellement plus long. Sans indication, gzip utilise le niveau 6.

Sur un serveur qui compresse chaque nuit des journaux déjà volumineux, le niveau maximal n’est pas automatiquement le meilleur choix. Si les fichiers sont ensuite transférés rapidement vers un stockage externe, économiser quelques octets ne justifie pas toujours de mobiliser davantage le processeur. Pour une opération ponctuelle où l’espace disque manque, un niveau élevé peut en revanche se défendre.

Ajoute -v pour afficher le nom traité et le pourcentage de réduction :

gzip -v -k access.log

Le résultat varie selon le contenu. Du texte répétitif, comme des logs ou du code source, se compresse souvent bien. Des fichiers JPEG, des vidéos ou des archives ZIP ont déjà subi une compression ; gzip leur fera généralement gagner peu de place. Le bon réflexe consiste à mesurer sur un exemple représentatif plutôt qu’à appliquer un niveau maximal par principe.

découvrez comment compresser et décompresser des fichiers avec gzip sous linux, et maîtrisez les commandes essentielles pour gérer vos archives en ligne de commande.

Décompression et lecture d’une archive .gz

Pour retrouver un fichier ordinaire à partir d’une archive .gz, la commande la plus simple est gunzip access.log.gz. Elle produit access.log et retire normalement le fichier compressé. L’équivalent avec gzip est gzip -d access.log.gz : l’option -d signifie décompression.

Le choix entre gunzip et gzip -d relève surtout de la lisibilité. Dans un script qui compresse et extrait plusieurs formats, garder la famille de commandes gzip peut faciliter la lecture. Pour une commande tapée ponctuellement, gunzip exprime immédiatement l’intention.

Garder la version compressée

Si le fichier compressé doit rester comme sauvegarde, ajoute l’option -k : gzip -dk access.log.gz. Gzip crée alors le fichier décompressé sans effacer la source. C’est une précaution utile avant une migration ou lorsqu’un script doit conserver les données reçues intactes.

La sortie peut aussi être envoyée vers un autre fichier. La commande suivante décompresse le contenu vers copie.log, tout en conservant access.log.gz :

gzip -dc access.log.gz > copie.log

Le duo -d et -c demande de décompresser vers la sortie standard. Cette sortie peut être redirigée, transmise à une autre commande ou examinée directement. Vérifie toujours le nom placé après > : une redirection vers un fichier existant le remplace.

Lire sans créer de fichier temporaire

Pour inspecter rapidement un fichier compressé, zcat access.log.gz affiche son contenu décompressé dans le terminal. La commande ne recrée pas de fichier intermédiaire. Pour un journal long, la sortie peut être envoyée vers un outil de lecture page par page, par exemple zcat access.log.gz | less.

Cette méthode convient bien à un diagnostic : un développeur peut chercher une erreur dans un journal archivé sans modifier son état sur le disque. Pour filtrer les lignes contenant un code d’erreur, on peut faire suivre la décompression d’une recherche, comme zcat access.log.gz | grep "500". Sur les systèmes où les variantes de ces outils diffèrent, consulte leur page de manuel locale avec man zcat ou man gzip.

Traiter plusieurs fichiers sans confondre compression et archivage

Gzip accepte plusieurs noms de fichiers en arguments, mais il ne les rassemble pas dans un seul conteneur. Avec gzip fichier1.log fichier2.log fichier3.log, il crée trois résultats distincts : fichier1.log.gz, fichier2.log.gz et fichier3.log.gz. Chaque fichier est compressé séparément.

A lire :   Redirection URL en PHP : exemples de codes et méthodes efficaces

La distinction est utile : la compression de fichiers réduit les données, tandis que l’archivage regroupe plusieurs éléments sous un même nom. Pour transférer un dossier de projet avec son arborescence, la pratique habituelle consiste à créer d’abord une archive avec tar, puis à la compresser avec gzip.

Compresser récursivement un répertoire

L’option -r permet de parcourir un répertoire et de compresser les fichiers qu’il contient, y compris dans ses sous-répertoires : gzip -r logs/. Le résultat reste toutefois une série de fichiers compressés séparément. Cette commande ne produit pas un fichier unique à envoyer à une collègue ou à déposer dans un stockage distant.

Avant de lancer cette opération sur un répertoire de travail, regarde ce qu’il contient. Gzip vise les fichiers ordinaires ; les liens symboliques ne sont pas traités comme des fichiers classiques. Un dossier contenant des images ou des archives déjà compressées ne gagnera pas forcément beaucoup de place. Et si l’objectif est une sauvegarde restaurable en un seul geste, mieux vaut ne pas confondre récursivité et création d’archive.

Créer une archive tar.gz

Pour réunir le dossier site dans un fichier compressé, utilise :

tar -czf sauvegarde-site.tar.gz site/

L’option -c crée l’archive, -z active gzip et -f indique le nom du fichier à produire. L’option -v peut être ajoutée pour afficher les éléments traités : tar -czvf sauvegarde-site.tar.gz site/. Le suffixe .tar.gz, parfois remplacé par .tgz, indique qu’il s’agit d’une archive tar compressée avec gzip.

Pour l’extraire dans le répertoire courant, la commande correspondante est tar -xzf sauvegarde-site.tar.gz. Dans un déploiement web, cette étape peut s’inscrire dans une routine de sauvegarde avant une mise à jour. Les guides consacrés à l’installation de WordPress sur Debian ou à WordPress avec Docker, MariaDB et Nginx donnent des contextes où une archive de fichiers peut compléter une sauvegarde de base de données.

Automatiser gzip et choisir les bons réglages

Dans un script, gzip devient intéressant quand les étapes restent explicites. Imaginons un serveur qui produit chaque jour access.log. Une commande comme gzip -v access.log réduit le fichier et indique le résultat, mais elle rend le journal original indisponible sous son ancien nom. Avant d’automatiser, il faut donc décider si le processus suivant attend le fichier compressé ou le fichier texte.

Pour compresser la sortie d’une autre commande, utilise -c. Par exemple, une sauvegarde SQL peut être envoyée directement dans gzip : mysqldump nom_base | gzip -c > sauvegarde.sql.gz. Le flux produit par l’outil SQL est compressé sans créer d’abord un fichier SQL temporaire non compressé. Dans un script réel, prévois aussi le contrôle des erreurs et la gestion des identifiants de base de données ; une redirection réussie ne garantit pas à elle seule que la sauvegarde est complète.

A lire :   Comment flouter une photo sur iPhone sans application ?
Besoin Commande Effet
Compresser un fichier gzip fichier.log Crée un fichier .gz et remplace la source
Garder la source gzip -k fichier.log Conserve les deux versions
Lire sans extraire zcat fichier.log.gz Envoie le texte décompressé au terminal
Archiver un dossier tar -czf archive.tar.gz dossier/ Regroupe puis compresse les fichiers

Pour plusieurs fichiers compressés, passe les noms à gunzip ou à gzip -d. Une commande telle que gzip -d jour1.log.gz jour2.log.gz décompresse les deux éléments. Pour examiner les statistiques disponibles sans lancer une extraction classique, gzip -l fichier.log.gz affiche notamment les tailles compressée et non compressée ainsi qu’un ratio estimé.

Les métadonnées méritent un peu d’attention. Gzip conserve des informations liées au nom et à la date du fichier source dans le flux compressé, tandis que les permissions et la propriété lors de la restauration dépendent aussi du système de fichiers et des droits de l’utilisateur. Pour un transfert entre machines ou utilisateurs différents, ne pars pas du principe que chaque détail d’origine sera rétabli à l’identique.

Erreurs fréquentes et repères pour la gestion des fichiers

Le piège le plus courant consiste à penser que gzip peut transformer directement un répertoire en un seul fichier compressé. Il peut parcourir le répertoire avec -r, mais il crée alors des fichiers compressés séparés. Pour obtenir un paquet unique, associe tar et gzip. Cette différence change la façon de copier, transmettre et restaurer une sauvegarde.

Autre erreur classique : compresser à nouveau des données déjà compressées. Des formats comme JPEG, MP3, MP4 ou ZIP sont conçus pour réduire leur taille. Les passer dans gzip consomme du temps processeur et produit souvent un fichier presque identique, voire un peu plus volumineux en raison des données de structure ajoutées.

Quelques choix pratiques avant d’exécuter une commande

  • Besoin de garder la source : utilise -k, ou envoie le résultat vers un nouveau nom avec -c.
  • Besoin d’un seul fichier à transférer : crée une archive avec tar -czf plutôt que de compresser chaque élément séparément.
  • Besoin de consulter un journal : préfère zcat ou une commande de lecture par page plutôt qu’une extraction temporaire.
  • Besoin de réduire le temps de traitement : reste sur le niveau par défaut ou teste -1 sur des données représentatives.

Le niveau 9 ne garantit pas un résultat spectaculaire. Il demande davantage de calcul et l’économie obtenue dépend du contenu, pas de la volonté du développeur. Pour une tâche récurrente sur un serveur partagé, un niveau plus rapide peut être le meilleur choix si le temps processeur compte davantage que quelques mégaoctets.

Enfin, une sauvegarde compressée doit être testée. Vérifie que l’archive se décompresse, que les fichiers attendus sont présents et que la base de données peut être restaurée. Pour une application web hébergée, la gestion des fichiers n’est qu’une partie du dispositif : les contenus téléversés, les configurations et les données SQL n’ont pas nécessairement le même emplacement. Les ressources sur la mise en place d’un serveur local Linux avec LAMPP ou sur l’hébergement d’un site Joomla sur OVH permettent de replacer ces opérations dans un environnement concret.

Le réflexe le plus sûr reste simple : regarder ce que la commande va remplacer, choisir entre un fichier compressé et une archive, puis tester la restauration avant de compter sur la sauvegarde.

Quelle différence entre gzip et gunzip ?

gzip sert principalement à compresser. gunzip décompresse les fichiers .gz ; la même opération peut être effectuée avec gzip -d.

Comment garder le fichier original après compression ?

Utilise gzip -k nom_du_fichier. Tu peux aussi employer gzip -c nom_du_fichier > resultat.gz pour écrire la version compressée dans un fichier choisi.

gzip peut-il compresser un dossier en une seule archive ?

Non. Avec l’option -r, gzip traite les fichiers du dossier séparément. Pour réunir les éléments dans une seule archive compressée, utilise tar -czf archive.tar.gz dossier/.

Comment lire un fichier .gz sans le décompresser sur le disque ?

La commande zcat fichier.gz envoie le contenu décompressé vers le terminal. Pour parcourir un long fichier, tu peux utiliser zcat fichier.gz | less.