Commandes Linux : gzip

GZIP

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
pv_gzip_comp1


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
pv_gzip_comp2


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

ex :

# pv sample.tar.gz | gzip -dc > sample.tar
pv_gzip_uncomp1bis


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
pv_gzip_uncomp2


Fermer le menu
%d blogueurs aiment cette page :