Compression Linux 2026 : tar, gzip, bzip2, xz, zip et 7z maîtrisés

Publié le 3 février 2026

Linux
Administration
Stockage

La compression est essentielle pour économiser espace disque et bande passante. Ce guide explique comment utiliser tar, gzip, bzip2, xz, zip et 7z pour créer et gérer archives sous Linux.

Comprendre la Compression

Pourquoi Compresser ?

Avantages :

  • Économiser espace disque (50-90% selon format)
  • Transferts réseau plus rapides
  • Backups plus légers
  • Archivage long terme

Use cases :

  • Backups serveurs
  • Transfert fichiers
  • Logs rotation
  • Distribution code source

Compression vs Archivage

Archivage (tar) : Regrouper fichiers en un seul Compression (gzip, bzip2) : Réduire taille

Combinaison courante : tar + gzip = .tar.gz


tar : Archivage Fichiers

Syntaxe de Base

# Créer archive (sans compression)
tar -cf archive.tar fichiers/

# Options principales :
# c - create (créer)
# x - extract (extraire)
# t - list (lister contenu)
# f - file (fichier archive)
# v - verbose (afficher détails)
# z - gzip compression
# j - bzip2 compression
# J - xz compression

Créer Archives

# Archive simple (pas de compression)
tar -cf backup.tar /var/www

# Avec verbose (voir fichiers ajoutés)
tar -cvf backup.tar /var/www

# Archive + gzip (.tar.gz ou .tgz)
tar -czf backup.tar.gz /var/www

# Archive + bzip2 (.tar.bz2)
tar -cjf backup.tar.bz2 /var/www

# Archive + xz (.tar.xz)
tar -cJf backup.tar.xz /var/www

# Multiple dossiers/fichiers
tar -czf archive.tar.gz /var/www /etc/nginx /home/user

Extraire Archives

# Extraire dans dossier actuel
tar -xf archive.tar

# Extraire .tar.gz
tar -xzf archive.tar.gz

# Extraire .tar.bz2
tar -xjf archive.tar.bz2

# Extraire .tar.xz
tar -xJf archive.tar.xz

# Extraire dans dossier spécifique
tar -xzf backup.tar.gz -C /restore/

# Extraire fichier spécifique
tar -xzf backup.tar.gz var/www/index.html

# Avec verbose
tar -xzvf backup.tar.gz

Lister Contenu

# Voir contenu sans extraire
tar -tf archive.tar

# Avec détails
tar -tvf archive.tar

# Filtrer avec grep
tar -tzf backup.tar.gz | grep ".conf"

Options Avancées

# Exclure fichiers
tar -czf backup.tar.gz /var/www --exclude='*.log' --exclude='cache/*'

# Exclure pattern depuis fichier
echo "*.log" > exclude.txt
echo "node_modules" >> exclude.txt
tar -czf backup.tar.gz /project -X exclude.txt

# Préserver permissions
tar -czpf backup.tar.gz /var/www
# p = preserve permissions

# Update archive (ajouter si plus récent)
tar -uzf backup.tar.gz newfile.txt

# Append fichiers à archive existante
tar -rzf backup.tar.gz additional.txt

# Différence entre archive et filesystem
tar -df backup.tar /var/www

# Archive avec date dans nom
tar -czf backup-$(date +%Y%m%d).tar.gz /var/www

gzip : Compression Rapide

Utilisation gzip

# Compresser fichier (remplace original par .gz)
gzip file.txt
# Crée : file.txt.gz

# Garder original
gzip -k file.txt

# Décompresser
gunzip file.txt.gz
# Ou
gzip -d file.txt.gz

# Niveau compression (1-9)
gzip -1 file.txt  # Rapide, moins compressé
gzip -9 file.txt  # Lent, plus compressé
gzip -6 file.txt  # Défaut

# Compresser récursivement
gzip -r dossier/

# Voir infos sans décompresser
gzip -l file.txt.gz

gzip avec Pipes

# Compresser output commande
mysqldump database | gzip > backup.sql.gz

# Décompresser et lire
zcat file.txt.gz
# Ou
gunzip -c file.txt.gz

# Grep dans fichier compressé
zgrep "error" logfile.gz

# Less sur fichier compressé
zless file.txt.gz

# Diff fichiers compressés
zdiff file1.txt.gz file2.txt.gz

bzip2 : Meilleure Compression

Utilisation bzip2

# Compresser (plus lent que gzip, meilleur ratio)
bzip2 file.txt
# Crée : file.txt.bz2

# Garder original
bzip2 -k file.txt

# Décompresser
bunzip2 file.txt.bz2
# Ou
bzip2 -d file.txt.bz2

# Niveau compression (1-9)
bzip2 -9 file.txt

# Compresser avec verbose
bzip2 -v file.txt

# Test intégrité
bzip2 -t file.txt.bz2

bzip2 Outils

# Lire sans décompresser
bzcat file.txt.bz2

# Grep
bzgrep "pattern" file.txt.bz2

# Less
bzless file.txt.bz2

# Diff
bzdiff file1.txt.bz2 file2.txt.bz2

xz : Compression Maximale

Utilisation xz

# Compresser (meilleur ratio, très lent)
xz file.txt
# Crée : file.txt.xz

# Garder original
xz -k file.txt

# Décompresser
unxz file.txt.xz
# Ou
xz -d file.txt.xz

# Niveaux compression (0-9)
xz -0 file.txt  # Rapide
xz -9 file.txt  # Maximum (défaut : -6)

# Extreme mode (encore meilleur)
xz -9e file.txt

# Multi-thread
xz -T 4 file.txt  # 4 threads
xz -T 0 file.txt  # Tous cores disponibles

# Test intégrité
xz -t file.txt.xz

xz Outils

# Lire
xzcat file.txt.xz

# Grep
xzgrep "pattern" file.txt.xz

# Less
xzless file.txt.xz

zip : Compatibilité Multi-OS

Créer Archives ZIP

# Archive ZIP simple
zip archive.zip file1.txt file2.txt

# Récursif (dossiers)
zip -r archive.zip dossier/

# Avec compression max
zip -9 -r archive.zip dossier/

# Sans compression (store)
zip -0 -r archive.zip dossier/

# Exclure fichiers
zip -r archive.zip dossier/ -x "*.log" "cache/*"

# Update archive
zip -u archive.zip newfile.txt

# Ajouter avec chemins relatifs
cd /var/www
zip -r /backup/web.zip .

# Protéger par mot de passe
zip -e -r secure.zip dossier/
# Demande mot de passe

# Splitter archive (100MB chunks)
zip -s 100m -r archive.zip bigsoftware/

Extraire ZIP

# Extraire tout
unzip archive.zip

# Dans dossier spécifique
unzip archive.zip -d /restore/

# Lister contenu
unzip -l archive.zip

# Test intégrité
unzip -t archive.zip

# Extraire fichier spécifique
unzip archive.zip file.txt

# Extraire avec pattern
unzip archive.zip "*.conf"

# Quiet mode
unzip -q archive.zip

# Overwrite sans demander
unzip -o archive.zip

zipinfo

# Infos détaillées archive
zipinfo archive.zip

# Court format
zipinfo -1 archive.zip

# Avec dates
zipinfo -T archive.zip

7z : Compression Ultime

Installer 7zip

# Debian/Ubuntu
sudo apt install p7zip-full

# RedHat/CentOS/Rocky/AlmaLinux
sudo dnf install epel-release -y
sudo dnf install p7zip p7zip-plugins -y

Créer Archives 7z

# Archive 7z
7z a archive.7z fichiers/

# Compression maximale
7z a -mx=9 archive.7z fichiers/

# Multi-thread
7z a -mmt=4 archive.7z fichiers/

# Mot de passe + chiffrement noms
7z a -p -mhe=on secure.7z fichiers/

# Splitter (100MB)
7z a -v100m archive.7z bigfiles/

# Format ZIP avec 7z
7z a -tzip archive.zip fichiers/

Extraire 7z

# Extraire
7z x archive.7z

# Dans dossier
7z x archive.7z -o/restore/

# Extract sans structure dossiers
7z e archive.7z

# Lister contenu
7z l archive.7z

# Test intégrité
7z t archive.7z

zstd : Moderne et Rapide

Utilisation zstd

# Installer
sudo apt install zstd

# Compresser
zstd file.txt
# Crée : file.txt.zst

# Garder original
zstd -k file.txt

# Décompresser
unzstd file.txt.zst
# Ou
zstd -d file.txt.zst

# Niveaux (1-19, défaut 3)
zstd -1 file.txt  # Rapide
zstd -19 file.txt # Max

# Ultra mode (20-22)
zstd --ultra -22 file.txt

# Multi-thread
zstd -T0 file.txt

# Tar + zstd
tar --zstd -cf archive.tar.zst dossier/
tar --zstd -xf archive.tar.zst

Comparaison Formats

Benchmark Compression

Test sur 1GB fichiers logs :

FormatTailleTempsRatioDécompression
gzip -6250 MB15s75%5s
bzip2 -9200 MB45s80%20s
xz -6180 MB90s82%10s
xz -9170 MB180s83%12s
7z -mx=9165 MB120s83.5%15s
zstd -3260 MB8s74%3s
zstd -19190 MB60s81%4s

Choisir Format

gzip : Standard, rapide, compatible partout

  • Logs quotidiens
  • Backups fréquents
  • Bon compromis vitesse/ratio

bzip2 : Meilleur ratio que gzip

  • Archives moyen terme
  • Moins utilisé maintenant

xz : Meilleure compression

  • Distribution software (Linux kernels)
  • Archives long terme
  • Bande passante limitée

zip : Compatibilité Windows/Mac

  • Partage multi-OS
  • Moins bon que tar.gz

7z : Maximum compression

  • Archives très volumineuses
  • Storage long terme

zstd : Moderne, très rapide

  • Backups temps réel
  • Streaming data
  • Meilleur équilibre vitesse/ratio

Scripts Automatisation

Backup Automatique

#!/bin/bash
# /usr/local/bin/backup.sh

DATE=$(date +%Y%m%d)
BACKUP_DIR="/backup"
SOURCE="/var/www"

# Créer archive
tar -czf "$BACKUP_DIR/www-$DATE.tar.gz" "$SOURCE"

# Garder seulement 7 derniers jours
find "$BACKUP_DIR" -name "www-*.tar.gz" -mtime +7 -delete

# Vérifier taille
SIZE=$(du -h "$BACKUP_DIR/www-$DATE.tar.gz" | cut -f1)
echo "Backup created: www-$DATE.tar.gz ($SIZE)"

Backup Incrémental

#!/bin/bash
# Backup incrémental avec tar

FULL_BACKUP="/backup/full-$(date +%Y%m%d).tar.gz"
SNAPSHOT="/backup/snapshot.snar"

# Full backup si snapshot n'existe pas
if [ ! -f "$SNAPSHOT" ]; then
    tar -czf "$FULL_BACKUP" -g "$SNAPSHOT" /var/www
else
    # Incrémental
    INCR_BACKUP="/backup/incr-$(date +%Y%m%d-%H%M).tar.gz"
    tar -czf "$INCR_BACKUP" -g "$SNAPSHOT" /var/www
fi

Compression Logs Anciens

#!/bin/bash
# Compresser logs > 1 jour

find /var/log -name "*.log" -mtime +1 -exec gzip {} \;

# Supprimer logs compressés > 30 jours
find /var/log -name "*.log.gz" -mtime +30 -delete

Backup Base Données

#!/bin/bash
# Backup MySQL compressé

DATE=$(date +%Y%m%d-%H%M)
DB="mydb"

mysqldump "$DB" | gzip > "/backup/db-$DB-$DATE.sql.gz"

# Rotation 14 jours
find /backup -name "db-$DB-*.sql.gz" -mtime +14 -delete

Extraction Intelligente

Script Extract Universel

#!/bin/bash
# extract.sh - Extraire n'importe quel format

extract() {
    if [ -f "$1" ]; then
        case "$1" in
            *.tar.gz|*.tgz)   tar -xzf "$1"     ;;
            *.tar.bz2|*.tbz2) tar -xjf "$1"     ;;
            *.tar.xz|*.txz)   tar -xJf "$1"     ;;
            *.tar.zst)        tar --zstd -xf "$1" ;;
            *.tar)            tar -xf "$1"      ;;
            *.gz)             gunzip "$1"       ;;
            *.bz2)            bunzip2 "$1"      ;;
            *.xz)             unxz "$1"         ;;
            *.zip)            unzip "$1"        ;;
            *.7z)             7z x "$1"         ;;
            *.rar)            unrar x "$1"      ;;
            *.zst)            unzstd "$1"       ;;
            *)                echo "Format non supporté: $1" ;;
        esac
    else
        echo "Fichier introuvable: $1"
    fi
}

extract "$1"

Alias Bash

# Ajouter dans ~/.bashrc

# Extraction automatique
extract() {
    if [ -f $1 ]; then
        case $1 in
            *.tar.*)  tar -xf $1      ;;
            *.gz)     gunzip $1       ;;
            *.zip)    unzip $1        ;;
            *.7z)     7z x $1         ;;
        esac
    fi
}

# Backup rapide
backup() {
    tar -czf "$1-$(date +%Y%m%d).tar.gz" "$1"
}

Performance et Optimisation

Multi-Threading

# pigz (parallel gzip)
sudo apt install pigz

# Utilise tous cores
pigz file.txt
tar -I pigz -cf archive.tar.gz dossier/

# pbzip2 (parallel bzip2)
sudo apt install pbzip2
pbzip2 file.txt
tar -I pbzip2 -cf archive.tar.bz2 dossier/

# xz multi-thread
xz -T 0 file.txt  # Auto threads

Compression par Blocs

# zstd avec dictionnaire (meilleur ratio)
zstd --train files/*.txt -o dict
zstd -D dict file.txt

Benchmark Custom

#!/bin/bash
# Comparer formats sur fichier

FILE="testfile.bin"
echo "Testing compression on: $FILE"

# gzip
time gzip -k -6 $FILE
ls -lh $FILE.gz

# bzip2
time bzip2 -k -9 $FILE
ls -lh $FILE.bz2

# xz
time xz -k -6 $FILE
ls -lh $FILE.xz

# zstd
time zstd -k $FILE
ls -lh $FILE.zst

# Cleanup
rm $FILE.{gz,bz2,xz,zst}

Troubleshooting

Archive Corrompue

# Tester intégrité
gzip -t file.gz
bzip2 -t file.bz2
xz -t file.xz
unzip -t file.zip
7z t file.7z

# Réparer si possible (zip)
zip -F broken.zip --out fixed.zip

Espace Disque Insuffisant

# Compresser sur place (remplace original)
gzip largefile.log

# Stream vers autre disque
tar -czf - /var/www | ssh remote "cat > backup.tar.gz"

# Split archive
split -b 1G largefile.tar.gz part-
# Reconstituer
cat part-* > largefile.tar.gz

Extraction Lente

# Extraire seulement fichiers nécessaires
tar -xzf backup.tar.gz specific/file.txt

# Paralléliser extraction
unpigz file.gz  # Plus rapide que gunzip

Bonnes Pratiques

Nommage Archives

# Format recommandé :
project-YYYYMMDD.tar.gz
backup-full-20260125.tar.gz
db-incremental-20260125-1430.tar.gz

# Éviter espaces et caractères spéciaux
# Bon : web-backup-20260125.tar.gz
# Mauvais : Web Backup (Jan 25).tar.gz

Checksums

# Créer checksum avec archive
tar -czf backup.tar.gz /data
sha256sum backup.tar.gz > backup.tar.gz.sha256

# Vérifier avant extraction
sha256sum -c backup.tar.gz.sha256

Checklist Backup

□ Format adapté (gzip quotidien, xz long terme)
□ Rotation automatique (7j, 30j, 1an)
□ Test extraction régulier
□ Checksums générés
□ Stockage redondant (local + remote)
□ Monitoring espace disque
□ Documentation procédure restore

Conclusion

La compression Linux offre de nombreux outils :

Usage quotidien :

tar -czf backup.tar.gz /data      # Archive + gzip
tar -xzf backup.tar.gz            # Extraire

Formats par use case :

  • gzip : Standard, rapide, quotidien
  • xz : Distribution, long terme
  • zstd : Moderne, meilleur équilibre
  • zip : Compatibilité Windows
  • 7z : Maximum compression

Automatisation :

# Backup quotidien avec rotation
tar -czf backup-$(date +%Y%m%d).tar.gz /data
find /backup -mtime +7 -delete

Performance :

pigz -k file.txt          # Parallel gzip
xz -T 0 file.txt          # Multi-thread xz
zstd -19 file.txt         # Meilleur ratio rapide

Avec ces outils, vous gérez efficacement compression et archivage sous Linux !

Besoin d'aide sur ce sujet ?

Notre équipe d'experts est là pour vous accompagner dans vos projets.

Contactez-nous

Articles similaires qui pourraient vous intéresser