Commandes Linux : xz

XZ

Installé avec le paquet xz-utils
Voir aussi : unxz, xzcat, xzgrep, tar, gzip, gunzip, bzip2, bunzip2, zip, unzip et cpio
 

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 la commande xz

xz --version

ou

apt-cache policy xz-utils

 

Compresser une archive ou un fichier au format xz

xz filename

Le fichier est alors compressé au format xz 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.xz.

xz -k filename

Le fichier est alors compressé au format xz 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.xz.
ex :

# du sample_3420.tar
3420	sample_3420.txt
# xz -k sample_3420.tar
# du sample_3420.tar.xz 
684	sample_3424.tar.xz
xz -k9 filename

Le fichier est alors compressé au format xz 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.xz.

xz -c1 filename > outputfilename.xz

Le fichier est alors compressé au format xz avec le niveau de compression 1 (meilleur compromis).
Le fichier original est conservé (option -c pour spécifier un fichier de sortie).
Le fichier résultant sera outputfilename.xz
ex :

# xz -c1 sample.tar > result.tar.xz

Le niveau peut être défini avec une valeur allant de 0 à 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 considérablement, d’autre part.

 

Décompresser un fichier compressé au format xz

xz -d filename.xz

Le fichier original est décompressé mais n’est pas conservé.
Le fichier résultant sera filename.
Equivaut à :
unxz filename.xz

xz -dk filename.xz

Le fichier original est décompressé et conservé (option -k pour keep).
Le fichier résultant sera filename.
Equivaut à :
unxz -k filename.xz

xz -dc filename.xz > 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 à :
unxz -c filename.xz > outputfilename

 

Mode verbeux

xz -v [...]

Affichera l’état d’avancement de la compression/décompression et le ratio final.
ex :
xz

 

Tester l’intégrité d’un fichier compressé au format xz

xz -t filename.xz

Calculera le CRC64 par défaut.
ex :

# xz -t test.tar.xz
xz : test.tar.xz: Fin des données inattendue

 

Afficher les caractéristiques d’un fichier compressé au format xz

xz -l filename.xz

Seront alors affichés notamment : les tailles du fichier compressé et décompressé, le ratio compression/décompression, le type de CRC et le nom du fichier.

xz -lvv filename.xz

Affichera un niveau de détails maximal.
ex :

# xz -l *.xz
Flux    Blocs    Compressé  Décompressé  Ratio  Vérif   Nom de fichier
    1       1     18,4 MiB    100,0 MiB  0,184  CRC64   sample0.tar.xz
    1       1     16,6 MiB    100,0 MiB  0,166  CRC64   sample1.tar.xz
    1       1     15,9 MiB    100,0 MiB  0,159  CRC64   sample2.tar.xz
    1       1     15,6 MiB    100,0 MiB  0,156  CRC64   sample3.tar.xz
    1       1     14,9 MiB    100,0 MiB  0,149  CRC64   sample4.tar.xz
    1       1     13,8 MiB    100,0 MiB  0,138  CRC64   sample5.tar.xz
    1       1     13,5 MiB    100,0 MiB  0,135  CRC64   sample6.tar.xz
    1       1     13,3 MiB    100,0 MiB  0,133  CRC64   sample7.tar.xz
    1       1     13,1 MiB    100,0 MiB  0,131  CRC64   sample8.tar.xz
    1       1     13,0 MiB    100,0 MiB  0,130  CRC64   sample9.tar.xz
-------------------------------------------------------------------------------
   10      10    148,1 MiB  1 000,0 MiB  0,148  CRC64   10 fichiers

On a, ci-dessus, l’exemple de 10 fichiers au format xz compressés du niveau 0 au niveau 9.

 

Concaténer des fichiers à un fichier xz existant

xz -c filename1 > outputfilename.xz
xz -c filename2 >> outputfilename.xz

Equivalent de :

xz -c filename1 filename2 > outputfilename.xz

Equivaut à :
cat filename1 filename2 | xz > outputfilename.gz
Utile pour ajouter des logs à un fichier de logs central.
ex :

# xz -c logfile1.txt > fulllogs.xz
# xz -c logfile2.txt >> fulllogs.xz

 

Améliorer le taux de compression d’un fichier xz existant

xz -cd filename.xz | xz -9 > newfilename.xz

 

Afficher la progression d’une compression ou décompression

Compression : Progression non graphique
pv archive.tar | xz -c1 > archive.tar.xz

ex :

# pv sample.tar | xz -c1 > sample.tar.xz
xz_nograph1


Compression : Progression graphique
(pv -n archive.tar | xz -c1 > archive.tar.xz) 2>&1 | dialog --gauge "text" height width

ex :

# (pv -n sample.tar | xz -c1 > sample.tar.xz) 2>&1 | dialog --gauge "Progression..." 7 50
xz_graph1


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

ex :

# pv sample.tar.xz | xz -dc > sample.tar
xz_nograph2


Décompression : Progression graphique
(pv -n archive.tar.xz | xz -dc > archive.tar) 2>&1 | dialog --gauge "text" height width

ex :

# (pv -n sample.tar.xz | xz -dc > sample.tar) 2>&1 | dialog --gauge "Progression..." 7 50
xz_graph2


Fermer le menu
%d blogueurs aiment cette page :