Gzip
| Fiche express | |
|---|---|
| Domaine | Compression de fichiers |
| Commandes | gzip, gunzip, zcat
|
| Extension | .gz
|
| Voir aussi | Tar (archivage + comparatif gzip/bzip2/xz) |
gzip compresse un fichier individuel (algorithme DEFLATE) — il ne sait pas regrouper plusieurs fichiers dans une même archive, contrairement à tar auquel il est le plus souvent associé. Par défaut, gzip remplace le fichier d'origine par sa version compressée .gz.
Commandes de base
gzip fichier # compresse fichier -> fichier.gz (supprime l'original)
gzip -k fichier # -k : conserve le fichier d'origine en plus du .gz
gzip -d fichier.gz # décompresse (équivalent à gunzip)
gunzip fichier.gz # idem, commande dédiée
zcat fichier.gz # affiche le contenu décompressé sans écrire de fichier
gzip -l fichier.gz # taille compressée/originale et taux de compression
gzip -t fichier.gz # teste l'intégrité de l'archive sans l'extraire
gzip -r repertoire/ # compresse récursivement chaque fichier du répertoire
Niveau de compression
De -1 (le plus rapide, taux le plus faible) à -9 (le plus lent, taux le plus élevé) — le niveau par défaut est -6, un bon compromis pour un usage courant.
gzip -9 fichier # compression maximale
gzip -1 fichier # compression la plus rapide
Pour choisir entre gzip, bzip2 et xz selon le cas d'usage (vitesse vs taux de compression), voir le comparatif sur la page Tar.
Avec tar
gzip ne sait compresser qu'un seul fichier à la fois : pour une archive de plusieurs fichiers ou d'un répertoire, on la crée d'abord avec tar puis on la compresse (tar peut le faire en une seule commande via -z, voir Tar) :
tar -czvf archive.tar.gz /chemin/a/sauvegarder # créer + compresser en une commande
tar -xzvf archive.tar.gz # décompresser + extraire en une commande
# Équivalent en deux étapes explicites, utile pour insérer une option gzip spécifique
gzip -cd archive.tar.gz | tar xvf -
-c envoie le résultat sur la sortie standard, -d décompresse : la sortie de gzip alimente directement l'entrée de tar sans fichier intermédiaire.
Extraire d'autres formats d'archive
Fonction shell pratique à placer dans ~/.bashrc pour extraire n'importe quel format d'archive courant avec une seule commande, sans se souvenir des options de chaque outil :
extract () {
if [ -f "$1" ] ; then
case "$1" in
*.tar.bz2) tar xvjf "$1" && cd "$(basename "$1" .tar.bz2)" ;;
*.tar.gz) tar xvzf "$1" && cd "$(basename "$1" .tar.gz)" ;;
*.tar.xz) tar Jxvf "$1" && cd "$(basename "$1" .tar.xz)" ;;
*.tbz2) tar xvjf "$1" && cd "$(basename "$1" .tbz2)" ;;
*.tgz) tar xvzf "$1" && cd "$(basename "$1" .tgz)" ;;
*.bz2) bunzip2 "$1" ;;
*.gz) gunzip "$1" ;;
*.tar) tar xvf "$1" && cd "$(basename "$1" .tar)" ;;
*.zip) unzip "$1" ;;
*.rar) unrar x "$1" ;;
*.7z) 7z x "$1" ;;
*.Z) uncompress "$1" ;;
*) echo "Format non reconnu pour '$1'" ;;
esac
else
echo "'$1' n'est pas un fichier valide"
fi
}
Voir aussi
- Tar — archivage, combinaison avec gzip/bzip2/xz et comparatif des algorithmes de compression