Xz

J’ai découvert il y a quelques temps le format xz suite à cette dépêche : linuxfr.org//2010/11/04/27539.html

C’est un format de compression au même titre que bzip2 ou gnuzip. La différence, c’est qu’il est nettement plus efficace que les deux précédents sur deux points :
[ul]
[li]le taux de compression est plus élevé que bzip2,[/li]
[li]la vitesse de décompression est très faible.[/li][/ul]

Je ne sais pas sous Lenny, mais sous Squeeze vous l’avez déjà installé. Personnellement je m’en sers à travers tar donc pour la compression :

et la décompression :

Si vous utilisé tar en version 1.24 ou superieur vous pouvez décompresser sans spécifier le format :

Je n’ai pas vraiment de chiffre à vous donner parce que ça dépend fortement des fichiers, mais il m’est arrivé de diviser par plus de quatre la taille d’une archive, là où bzip2 n’arrivait pas à gagner grand-chose.

Salut,

C’est d’ailleurs le format de compression retenu par archlinux pour ses paquets .
:114

Logique puisque Slackware l’utilise.

Salut,

[quote]
la vitesse de décompression est très faible.[/quote]

Je pense à un lapsus :slightly_smiling:

Si c’est nettement plus long.

[code]francois@totoche:/tmp$ time tar cJf toto.xz ~/Annee2009
tar: Suppression de « / » au début des noms des membres

real 0m35.257s
user 0m32.938s
sys 0m1.384s
francois@totoche:/tmp$ time tar czf toto.tgz ~/Annee2009
tar: Suppression de « / » au début des noms des membres

real 0m3.917s
user 0m3.388s
sys 0m0.120s
francois@totoche:/tmp$ time tar xJf toto.xz

real 0m4.621s
user 0m4.132s
sys 0m0.248s
francois@totoche:/tmp$ time tar xzf toto.tgz

real 0m0.974s
user 0m0.712s
sys 0m0.200s

francois@totoche:/tmp$ ls -l toto.tgz toto.xz
-rw-r–r-- 1 francois francois 42033089 déc. 27 14:38 toto.tgz
-rw-r–r-- 1 francois francois 40641496 déc. 27 14:38 toto.xz
francois@totoche:/tmp$
[/code]je ne suis pas sûr que ça vaille le coup

Pour 7z, ça donne

[code]francois@totoche:/tmp$ time 7z a toto.tar.7z ~/Annee2009

7-Zip 4.58 beta Copyright © 1999-2008 Igor Pavlov 2008-05-05
[…]
Everything is Ok

real 0m19.128s
user 0m27.874s
sys 0m0.528s

francois@totoche:/tmp$ ls -l toto.*
-rw-r–r-- 1 francois francois 40296502 déc. 27 14:43 toto.tar.7z
-rw-r–r-- 1 francois francois 40641496 déc. 27 14:38 toto.xz
francois@totoche:/tmp$ time 7z x toto.tar.7z

7-Zip 4.58 beta Copyright © 1999-2008 Igor Pavlov 2008-05-05
p7zip Version 4.58 (locale=fr_FR.UTF-8,Utf16=on,HugeFiles=on,2 CPUs)

Processing archive: toto.tar.7z
real 0m5.118s
user 0m4.580s
sys 0m0.192s
francois@totoche:/tmp$

[/code]
Qui me parait mieux.
Il y a un comparatif ici rlwpx.free.fr/WPFF/comploc.htm

Chez moi :

[code]~ % du -sh Projets
195M Projets
~ [2]% time tar cJf Projets.txz Projets
tar cJf Projets.txz Projets 19,45s user 256,21s system 100% cpu 4:34,90 total
~ % time tar cjf Projets.tbz Projets
tar cjf Projets.tbz Projets 241,86s user 2,38s system 99% cpu 4:05,34 total
~ % ls -sh Projets.t*
146M Projets.tbz 123M Projets.txz
~ % cp Projets.t* /tmp
Flags -vtiRP
1/2 - Projets.tbz
2/2 - Projets.txz

2 files copied, 0 failed
~ % /tmp
/tmp % time tar xf Projets.txz
tar xf Projets.txz 18,41s user 2,61s system 102% cpu 20,468 total
/tmp % rm -rf Projets/
/tmp % time tar xf Projets.tbz
tar xf Projets.tbz 58,68s user 4,38s system 99% cpu 1:03,08 total[/code]
La complexité n’est pas beaucoup plus grande. Le taux de compression est superieur et la vitesse de décompression est sans égale.

Tu compare à bz2 qui semble assez mauvais (je ne l’avais pas sélectionné car je ne l’utilise pas vraiment, j’aboutis en gros aux mêmes chiffres), tu as essayé avec gzip et 7z?

(Je viens de lire que xz est le «successeur» de 7z, c’est bizarre ces différences chez moi du coup, tu as les mêmes?)

En vitesse pure, gz coiffe toujours les autres formats au poteau. Ça reste le format le plus avantageux pour des fichiers déjà compressés (images, audio, vidéo) dont on ne peut de toute façon pas réduire sensiblement la taille.

Mais xz arrive à avoir une vitesse de décompression proche de gz à l’usage, tout en ayant un taux de compression supérieur à bz2.

$ du -h everything.log 
1,8M	everything.log

$ time gzip everything.log 

real	0m0.045s
user	0m0.040s
sys	0m0.003s
$ du -h everything.log.gz 
248K	everything.log.gz
$ time gzip -d everything.log.gz 

real	0m0.012s
user	0m0.010s
sys	0m0.000s
$ time bzip2 everything.log 

real	0m0.365s
user	0m0.360s
sys	0m0.003s
$ du -h everything.log.bz2 
180K	everything.log.bz2
$ time bzip2 -d everything.log.bz2 

real	0m0.053s
user	0m0.043s
sys	0m0.007s
$ time xz everything.log 

real	0m0.600s
user	0m0.550s
sys	0m0.027s
$ du -h everything.log.xz 
156K	everything.log.xz
$ time xz -d everything.log.xz 

real	0m0.022s
user	0m0.013s
sys	0m0.007s

En reprenant un exemple avec 480 fichiers Tex, xz s’en sort mieux et c’est vrai qu’il est nettement mieux que bz2. Pour le taux de compression, cette fois, il n’y a pas photo. Il faudrait faire plusieurs essais, visiblement ça dépend. Par contre visiblement, il est peu solide à une altération de l’archive (seul gz s’en tire bien là dessus) donc soit il faut utiliser par2 soit c’est à proscrire pour le backup.

[code]francois@totoche:~/Tex$ time tar cJf /tmp/ar.txz *.lyx

real 0m6.323s
user 0m5.868s
sys 0m0.180s
francois@totoche:~/Tex$ time tar czf /tmp/ar.tgz *.lyx

real 0m0.630s
user 0m0.484s
sys 0m0.040s
francois@totoche:~/Tex$ time tar cjf /tmp/ar.tar.bz2 *.lyx

real 0m3.389s
user 0m3.176s
sys 0m0.072s
francois@totoche:~/Tex$ time 7z a /tmp/ar.7z *.lyx

real 0m4.800s
user 0m4.060s
sys 0m0.240s
francois@totoche:~/Tex$ cd /tmp
francois@totoche:/tmp$ ls -l ar.*
-rw-r–r-- 1 francois francois 633399 déc. 28 09:37 ar.7z
-rw-r–r-- 1 francois francois 784647 déc. 28 09:37 ar.tar.bz2
-rw-r–r-- 1 francois francois 1371478 déc. 28 09:37 ar.tgz
-rw-r–r-- 1 francois francois 591968 déc. 28 09:36 ar.txz
francois@totoche:/tmp$ time 7z x ar.7z

Everything is Ok

Files: 480
Size: 9769898
Compressed: 633399

real 0m0.614s
user 0m0.224s
sys 0m0.088s
francois@totoche:/tmp$ time tar xjf ar.tar.bz2

real 0m0.789s
user 0m0.552s
sys 0m0.100s
francois@totoche:/tmp$ time tar xzf ar.tgz

real 0m0.254s
user 0m0.100s
sys 0m0.088s
francois@totoche:/tmp$ time tar xJf ar.txz

real 0m0.482s
user 0m0.144s
sys 0m0.092s
francois@totoche:/tmp$
[/code]

De toute manière par définition la compression c’est pas terrible pour le backup. Ce qui est le plus fréquent est codé de manière plus petite si une alteration arrive sur cette petite partie, l’archive est bousillée.

Moi xz m’a permis d’envoyer par mail des pièces jointes qui au départ faisaient 40Mio (environ 5Mio après compression).

C’est difficile à juger car le taux de compression dépend de l’entropie des données.

Après test avec des fichiers images, c’est une victoire de gzip pour ma part :
Il est vraiment plus rapide à la compression(facteur 10 avec XZ et 7Z, 4 avec bunzip qui compresse moins bien), idem à la décompression (facteur 4 avec XZ et 7Z), il compresse juste moins bien (mais la différence est pas énorme)

[code]glorf@debian-papa-desktop:~/Images$ time tar cJf /tmp/images/ar.txz *.png

real 0m24.164s
user 0m23.905s
sys 0m0.376s
glorf@debian-papa-desktop:~/Images$ time tar czf /tmp/images/ar.tgz *.png

real 0m2.320s
user 0m2.236s
sys 0m0.124s
glorf@debian-papa-desktop:~/Images$ time tar cjf /tmp/images/ar.tar.bz2 *.png

real 0m9.625s
user 0m9.513s
sys 0m0.156s
glorf@debian-papa-desktop:~/Images$ time 7z a /tmp/ar.7z .png
real 0m12.675s
user 0m25.466s
sys 0m0.496s
glorf@debian-papa-desktop:~/Images$ cd /tmp/images/
glorf@debian-papa-desktop:/tmp/images$ ls -l ar.

-rw-r–r-- 1 glorf glorf 41637104 28 déc. 14:46 ar.7z
-rw-r–r-- 1 glorf glorf 42088107 28 déc. 14:45 ar.tar.bz2
-rw-r–r-- 1 glorf glorf 41919611 28 déc. 14:45 ar.tgz
-rw-r–r-- 1 glorf glorf 41676480 28 déc. 14:45 ar.txz
glorf@debian-papa-desktop:/tmp/images$ time 7z x ar.7z
Everything is Ok

Files: 82
Size: 42329344
Compressed: 41637104

real 0m4.358s
user 0m4.280s
sys 0m0.072s
glorf@debian-papa-desktop:/tmp/images$ time tar xjf ar.tar.bz2

real 0m4.143s
user 0m4.076s
sys 0m0.196s
glorf@debian-papa-desktop:/tmp/images$ time tar xzf ar.tgz

real 0m0.427s
user 0m0.364s
sys 0m0.188s
glorf@debian-papa-desktop:/tmp/images$ time tar xJf ar.txz

real 0m1.483s
user 0m1.428s
sys 0m0.172s[/code]

sujet fort intéressant ! pour ma part je cherche aussi le meilleur compresseur pour des fichier de la taille de 10 a 15 GO (fichier texte, extraction SQL (base de données))

Une idée ?

Merci

As tu des impératifs de délais dans la décompression et la compression, en tout cas apparement c’est entre xz et gz suivant cette contrainte.

L’option XZ est même intégré au kernel 2.6.38-rc1, pour compresser l’image.