Dernière mise à jour : 20 août 2026

GZIP vs BZIP2 vs XZ : Quel format de compression Linux est le meilleur ?
Que vous empaquetiez des sauvegardes quotidiennes de bases de données, que vous fassiez pivoter des journaux de serveur Web de plusieurs gigaoctets, ou que vous distribuiez des binaires compilés à des milliers de nœuds, la compression est une réalité quotidienne dans l’administration Linux.
Lors de l’invocation de tar ou du traitement de données en flux via l’entrée standard, vous rencontrez généralement trois utilitaires standards : GZIP (.gz), BZIP2 (.bz2), et XZ (.xz).
Alors que les trois outils visent à compresser les octets bruts en archives compactes, ils font des compromis d’ingénierie fondamentalement différents entre le taux de compression, le temps d’exécution CPU et la consommation mémoire. Choisir le mauvais format peut silencieusement créer un goulot d’étranglement dans vos déploiements automatisés, retarder les fenêtres de sauvegarde planifiées ou gaspiller un espace de stockage précieux au fil du temps.
Ce guide décortique le fonctionnement interne de chaque format, leurs performances sur des charges de travail réalistes, et comment choisir le bon pour votre infrastructure.
1. Profils techniques rapides : Les trois concurrents
GZIP (GNU Zip)
- Algorithme sous-jacent : DEFLATE (combination of LZ77 and Huffman coding)
- Extension par défaut :
.tar.gz,.tgz,.gz - Période de sortie : 1992 (créé par Jean-loup Gailly et Mark Adler comme alternative sans brevet à
compress) - Avantage principal : Vitesse d’exécution imbattable et prise en charge quasi universelle de l’écosystème.
- Inconvénient principal : Taux de compression inférieur comparé aux encodeurs statistiques et basés sur des dictionnaires modernes.
GZIP a servi de cheval de bataille par défaut des environnements Unix pendant plus de trois décennies. Parce que son algorithme DEFLATE fonctionne avec de petites fenêtres glissantes (32 KB), GZIP nécessite une consommation mémoire négligeable tant lors de la compression que de la décompression.
BZIP2
- Algorithme sous-jacent : Transformée de Burrows-Wheeler (BWT) combinée avec la transformation Move-to-Front (MTF) et le codage Huffman
- Extension par défaut :
.tar.bz2,.tbz2,.bz2 - Période de sortie : 1996 (créé par Julian Seward)
- Avantage principal : De meilleurs taux de compression sur les fichiers ASCII répétitifs et les journaux structurés que GZIP.
- Inconvénient principal : Plus lent en général, notamment lors de la décompression, et largement rendu obsolète par des algorithmes plus récents.
BZIP2 traite les données en blocs discrets (généralement 900 KB) en utilisant des permutations réversibles qui regroupent les caractères similaires avant l’encodage. Bien qu’il ait été largement célébré à la fin des années 1990 et au début des années 2000 pour surpasser les tailles de fichiers de GZIP, son coût de calcul est relativement élevé.
XZ (LZMA2)
- Algorithme sous-jacent : LZMA2 (Algorithme de chaîne de Markov Lempel-Ziv, amélioré)
- Extension par défaut :
.tar.xz,.txz,.xz - Ère de sortie : 2009 (introduit pour remplacer le format
lzmaplus ancien) - Avantage principal : Rapports de compression exceptionnellement élevés et décompression rapide et légère.
- Inconvénient principal : Consommation élevée de RAM et durée d’exécution CPU prolongée lors de la compression initiale.
XZ exploite des tailles de dictionnaire variables (souvent jusqu’à 32 Mo ou 64 Mo par défaut) pour repérer les motifs d’octets dupliqués sur des fenêtres de données beaucoup plus larges que GZIP. Cela le rend extrêmement efficace pour réduire les gros fichiers redondants tels que les médias d’installation du système d’exploitation, les arbres de sources du noyau et les images de firmware.
2. Matrice de comparaison des performances
Le tableau ci-dessous résume les dynamiques de performance pratiques de chaque utilitaire lorsqu’il est exécuté avec les configurations par défaut sur du matériel serveur standard :
| Métrique / Dimension | GZIP (-6) | BZIP2 (-9) | XZ (-6) |
|---|---|---|---|
| Taux de compression | Modéré (~65-75% de réduction) | Bon (~75-80% de réduction) | Supérieur (~80-88% de réduction) |
| Vitesse de compression | Très rapide | Lent | Très lent |
| Vitesse de décompression | Extrêmement rapide | Lent à modéré | Rapide |
| Utilisation de la RAM lors de la compression | Négligeable (~1–2 Mo) | Faible (~8–10 Mo) | Élevée (~100–700 Mo+) |
| Utilisation de la RAM lors de la décompression | Négligeable (< 1 Mo) | Faible (~4 Mo) | Modéré (~10–65 Mo) |
| Point fort principal | Journaux, pipelines CI/CD, flux en temps réel | Compatibilité avec les archives héritées | Dépôts de paquets, ISO du système d’exploitation, stockage à froid |
3. Insights de benchmark du monde réel
Pour comprendre comment ces outils se comportent sous une charge réaliste, considérez un journal d’accès serveur brut de 1 Go représentatif et un répertoire de code source logiciel non compressé de 500 Mo.
Scénario A : Compression de gros fichiers journaux (texte de 1 Go)
- GZIP : Termine en moins de 12 secondes, produisant une archive d’environ 180 Mo.
- BZIP2 : Termine en environ 45–50 secondes, réduisant le fichier à environ 130 Mo.
- XZ: Prend 80 à 90 secondes avec les paramètres par défaut, produisant une archive d’environ 95 Mo.
Scénario B : Charges de travail de décompression
Une métrique critique souvent négligée est asymétrie.
- GZIP se décompresse en 2 à 3 secondes avec une utilisation de mémoire microscopique.
- XZ se décompresse en 4 à 6 secondes. Bien que la compression initiale soit lente, l’extraction de
.xzest presque aussi rapide que l’extraction de.gz. - BZIP2 nécessite environ 25 à 30 secondes simplement pour décompresser, car inverser la transformation de Burrows-Wheeler est computationnellement symétrique à son encodage.
4. Pourquoi BZIP2 perd de sa popularité
Dans les infrastructures modernes, BZIP2 se retrouve coincé dans un terrain intermédiaire gênant :
- Battu en vitesse par GZIP : Si la latence de traitement ou une faible utilisation du CPU est importante, GZIP est nettement plus rapide.
- Battu en densité par XZ : Si la conservation de la bande passante et l’efficacité du stockage sont importantes, XZ génère des archives nettement plus petites.
- Battu en vitesse de décompression par les deux : Dans les systèmes de distribution de logiciels, les clients subissent une pénalité CPU mesurable lors de l’extraction des fichiers
.tar.bz2comparativement aux.tar.gzou.tar.xz.
Par conséquent, les principales distributions Linux (notamment Debian, Arch et Fedora) ont déplacé leurs paquets officiels et les tarballs du noyau du BZIP2 vers XZ (et plus récemment, Zstandard pour les opérations d’exécution).
5. Utilisation pratique en ligne de commande
Intégration de Tar (le flux de travail le plus courant)
Les implémentations modernes de GNU tar reconnaissent automatiquement le format de compression en fonction de l’extension du fichier, mais l’utilisation de drapeaux explicites reste une pratique courante :
# GZIP: Fast archive creation
tar -czvf project-backup.tar.gz /var/www/project/
# BZIP2: Legacy high-ratio archive
tar -cjvf project-backup.tar.bz2 /var/www/project/
# XZ: Maximum space savings
tar -cJvf project-backup.tar.xz /var/www/project/
# Generic extraction (tar auto-detects the format)
tar -xvf archive-name.tar.*
Compression de fichiers autonome
Pour compresser des fichiers individuels sans les regrouper :
# Compress keeping the original file intact (-k)
gzip -k access.log # Output: access.log.gz
bzip2 -k access.log # Output: access.log.bz2
xz -k access.log # Output: access.log.xz
# Decompress individual files
gzip -d access.log.gz
bzip2 -d access.log.bz2
xz -d access.log.xz
Utilisation de systèmes multi-cœurs
Par défaut, les implémentations monothread de ces outils n’utilisent qu’un seul cœur CPU. Si vous compressez des archives de plusieurs gigaoctets sur des serveurs modernes multi-cœurs, le traitement monothread peut prendre des heures.
- Multi-threading XZ : Support natif via
-Tou--threads:xz -T0 -k database_dump.sql # Uses all available CPU cores - GZIP parallèle (
pigz) : Un remplacement direct qui utilise tous les cœurs CPU pour les opérations GZIP :pigz -k database_dump.sql - BZIP2 parallèle (
pbzip2) : Implémentation multi-thread pour BZIP2 :pbzip2 -k database_dump.sql
6. Comment choisir : cadre décisionnel pratique
Choisissez votre outil en fonction de la contrainte principale de votre flux de travail :
Utiliser GZIP si :
- Vous configurez une compression de flux en temps réel ou une transmission réseau où le débit est le facteur limitant.
- Vous gérez la rotation automatisée des journaux (
logrotate) sur des serveurs de production où les ressources CPU doivent être réservées aux charges de travail des applications. - Une portabilité maximale à travers les systèmes embarqués hérités et les images de base standard est requise.
Utiliser XZ si :
- Vous publiez des artefacts de version, des constructions de noyau, des images de base de conteneurs ou des dépôts de paquets statiques téléchargés fréquemment par des tiers.
- Vous préparez des archives froides à long terme (sauvegardes hebdomadaires/mensuelles hors site) où les coûts de stockage l’emportent sur le temps de compression ponctuel.
- Vous avez besoin de petites tailles de fichiers, mais vos utilisateurs exigent toujours un téléchargement rapide et des temps d’extraction courts.
Conserver BZIP2 uniquement si :
- Vous maintenez la compatibilité descendante avec des scripts hérités, des routines de restauration de sauvegarde existantes ou des appliances logicielles qui ne fournissent pas de décompresseur XZ.
7. Questions fréquemment posées (FAQ)
Q1. Quel format fournit la plus petite taille d’archive ? XZ produit constamment la plus petite taille d’archive parmi les trois en raison de ses fenêtres de dictionnaire LZMA2 plus grandes.
Q2. XZ est-il plus lent que GZIP lors de la décompression des fichiers ? XZ est seulement légèrement plus lent que GZIP pour décompresser, mais il est nettement plus rapide que BZIP2.
Q3. GZIP et XZ peuvent-ils tirer parti de plusieurs cœurs CPU ? XZ prend en charge le multithreading natif avec le drapeau -T0, tandis que GZIP peut être parallélisé sur plusieurs cœurs à l’aide de l’utilitaire de substitution pigz.
Q4. Pourquoi les distributions Linux abandonnent-elles BZIP2 ? Les distributions ont largement abandonné BZIP2 parce que XZ compresse davantage et décompresse plus rapidement, tandis que GZIP reste plus rapide pour les opérations rapides.
Q5. Un niveau de compression plus élevé comme -9 fait-il une différence notable ? Le réglage du niveau -9 n’apporte qu’une réduction marginale de 1 % à 3 % de la taille en moyenne tout en augmentant considérablement la consommation de cycles CPU et la surcharge mémoire.