Installé avec le paquet gzip
Voir aussi : gunzip, xz, unxz, bzip2, bunzip2, zip, unzip, tar et cpio
Mais aussi : zcat, zless, zmore, zgrep, zcmp et zdiff
Remarques
Gzip signifie GNU Zip.
Comparatif des formats xz, gzip et bzip2
On utilisera ici un fichier référence appelé sample.tar d’une taille de 100Mo.
Le tableau ci-dessous synthétise les résultats de compression, pour chaque format et chaque niveau de compression.
Le temps de compression affiché est en secondes et la taille du fichier résultant est en Mo (ou pourcentage du fichier original).
Format → | XZ | GZIP | BZIP2 | |||
Compression ↓ | Temps | Mo/% | Temps | Mo/% | Temps | Mo/% |
0 | 5.487 | 19 | – | – | – | – |
1 | 7.563 | 17 | 1.796 | 25 | 10.008 | 19 |
2 | 11.358 | 16 | 1.883 | 24 | 10.262 | 18 |
3 | 18.924 | 16 | 2.038 | 23 | 10.412 | 17 |
4 | 31.184 | 15 | 2.135 | 21 | 10.575 | 17 |
5 | 46.370 | 14 | 2.628 | 21 | 11.126 | 17 |
6 | 54.609 | 14 | 3.320 | 20 | 11.214 | 17 |
7 | 59.790 | 14 | 3.917 | 20 | 11.295 | 17 |
8 | 71.670 | 14 | 5.537 | 20 | 11.347 | 16 |
9 | 164.387 | 13 | 6.088 | 20 | 11.485 | 16 |
Le meilleur compromis selon moi, du point de vue du rapport temps/taille finale d’une part, et consommation de RAM et CPU (directement liés au niveau de compression utilisé) d’autre part, apparait en rouge pour chaque format, soit :
- XZ : niveau 1 (niveau par défaut : 6)
- GZIP : niveau 6 (niveau par défaut : 6)
- BZIP2 : niveau 9 (niveau par défaut : 9)
Afficher la version de gzip
gzip --version
ou
apt-cache policy gzip
Compresser une archive ou un fichier au format gzip
gzip filename
Le fichier est alors compressé au format gz avec le niveau de compression 6 (niveau par défaut).
Toutefois, le fichier original n’est pas conservé.
Le fichier résultant sera nommé, par défaut, filename.gz.
gzip -k filename
Le fichier est alors compressé au format gz avec le niveau de compression 6 (niveau par défaut).
Le fichier original est conservé (option -k pour keep).
Le fichier résultant sera nommé, par défaut, filename.gz.
ex :
# du sample_3420.tar 3420 sample_3420.tar # gzip -k sample_3420.tar # du sample_3420.tar.gz 1000 sample_3420.tar.gz
gzip -k9 filename
Le fichier est alors compressé au format gz avec le niveau de compression 9, c’est-à-dire le niveau maximal.
Le fichier original est conservé (option -k pour keep).
Le fichier résultant sera nommé, par défaut, filename.gz.
gzip -c6 filename > outputfilename.gz
Le fichier est alors compressé au format gz avec le niveau de compression 6 (meilleur compromis et niveau par défaut).
Le fichier original est conservé (option -c pour spécifier un fichier de sortie).
Le fichier résultant sera outputfilename.gz
ex :
# gzip -c6 sample.tar > result.tar.gz
Le niveau peut être défini avec une valeur allant de 1 à 9 (cette dernière étant la valeur de compression maximale).
Plus le niveau de compression est élevé, plus la RAM et le CPU seront sollicités, d’une part, mais aussi le temps de compression augmentera, d’autre part.
Décompresser un fichier compressé au format gz
gzip -d filename.gz
Le fichier original est décompressé mais n’est pas conservé.
Le fichier résultant sera filename.
Equivaut à :
gunzip filename.gz
gzip -dk filename.gz
Le fichier original est décompressé et conservé (option -k pour keep).
Le fichier résultant sera filename.
Equivaut à :
gunzip -k filename.gz
gzip -dc filename.gz > outputfilename
Le fichier original est décompressé et conservé (option -c pour spécifier un fichier de sortie).
Le fichier résultant sera outputfilename.
Equivaut à :
gunzip -c filename.gz > outputfilename
Mode verbeux
gzip -v [...]
Affichera le taux de compression/décompression.
ex :
# gzip -c6v sample.tar > result.tar.gz
sample.tar: 70.9%
Tester l’intégrité d’un fichier compressé au format gz
gzip -t filename.gz
ex :
# gzip -t test.tar.gz
gzip: test.tar.gz: unexpected end of file
Afficher les caractéristiques d’un fichier compressé au format gz
gzip -l filename.gz
Seront alors affichés notamment : les tailles du fichier compressé et décompressé, le ratio compression/décompression et le nom du fichier décompressé.
gzip -lvv filename.gz
Affichera un niveau de détails maximal.
ex :
# gzip -l *.gz
compressed uncompressed ratio uncompressed_name
35077112 104867840 66.6% sample1.tar
34071586 104867840 67.5% sample2.tar
33313591 104867840 68.2% sample3.tar
31885091 104867840 69.6% sample4.tar
30967355 104867840 70.5% sample5.tar
30550108 104867840 70.9% sample6.tar
30317874 104867840 71.1% sample7.tar
30013523 104867840 71.4% sample8.tar
29954587 104867840 71.4% sample9.tar
286150827 943810560 69.7% (totals)
Concaténer des fichiers à un fichier gz existant
gzip -c filename1 > outputfilename.gz
gzip -c filename2 >> outputfilename.gz
Equivalent de :
gzip -c filename1 filename2 > outputfilename.gz
Equivaut à :
cat filename1 filename2 | gzip > outputfilename.gz
Utile pour ajouter des logs à un fichier de logs central.
ex :
# gzip -c logfile1.txt > fulllogs.gz # gzip -c logfile2.txt >> fulllogs.gz
Améliorer le taux de compression d’un fichier gz existant
gzip -cd filename.gz | gzip -9 > newfilename.gz
Compresser/décompresser récursivement tous les fichiers d’une arborescence
Pour la compression
gzip -r dossier/
ex :
# tree source/ source/ ├── dir1 │ └── file2.txt ├── dir2 │ └── file3.txt └── file1.txt 2 directories, 3 files # gzip -rv source/ source//dir2/file3.txt: 70.9% -- replaced with source//dir2/file3.txt.gz source//file1.txt: 70.9% -- replaced with source//file1.txt.gz source//dir1/file2.txt: 70.9% -- replaced with source//dir1/file2.txt.gz # tree source/ source/ ├── dir1 │ └── file2.txt.gz ├── dir2 │ └── file3.txt.gz └── file1.txt.gz 2 directories, 3 files
Pour la décompression
gzip -dr dossier/
Equivaut à :
gunzip -r dossier
ex :
# tree source/ source/ ├── dir1 │ └── file2.txt.gz ├── dir2 │ └── file3.txt.gz └── file1.txt.gz 2 directories, 3 files # gzip -drv source/ source//dir2/file3.txt.gz: 70.9% -- replaced with source//dir2/file3.txt source//dir1/file2.txt.gz: 70.9% -- replaced with source//dir1/file2.txt source//file1.txt.gz: 70.9% -- replaced with source//file1.txt # tree source/ source/ ├── dir1 │ └── file2.txt ├── dir2 │ └── file3.txt └── file1.txt 2 directories, 3 files
Créer un fichier compressé gz récursivement à partir d’un dossier
gzip -cr dossier/ > outputfilename.gz
Le fichier généré sera équivalent à la concaténation des fichiers du dossier et récursivement, le tout compressé.
Une décompression produira donc un unique fichier.
Afficher la progression d’une compression ou décompression
Compression : Progression non graphique
pv archive.tar | gzip -c6 > archive.tar.gz
ex :
# pv sample.tar | gzip -c6 > sample.tar.gz

Compression : Progression graphique
(pv -n archive.tar | gzip -c6 > archive.tar.gz) 2>&1 | dialog --gauge "text" height width
ex :
# (pv -n sample.tar | gzip -c6 > sample.tar.gz) 2>&1 | dialog --gauge "Progression..." 7 50

Décompression : Progression non graphique
pv archive.tar.gz | gzip -dc > archive.tar
ex :
# pv sample.tar.gz | gzip -dc > sample.tar

Décompression : Progression graphique
(pv -n archive.tar.gz | gzip -dc > archive.tar) 2>&1 | dialog --gauge "text" height width
ex :
# (pv -n sample.tar.gz | gzip -dc > sample.tar) 2>&1 | dialog --gauge "Progression..." 7 50
