xz pour une meilleure compression de ses fichiers

"Bell system technical journal"Aujourd'hui, causons un peu compression. Habituellement, dans le monde Unix, on a tendance à utiliser Gzip. Ce format de compression a le mérite, aujourd'hui, d'être assez rapide, mais il est loin d'être le plus efficace. Une alternative a vu le jour, il s'agit de bzip2. Si ce dernier est bien plus efficace, il est hélas beaucoup plus lent. Comme on cherche toujours à avoir le beurre et l'argent du beurre, d'autres formats de compression ont vu le jour plus récemment, comme XZ, utilisant actuellement l'algorithme LZMA 2.

Pour utiliser le format de compression xz, il suffit d'utiliser les outils xz et unxz. Ils sont généralement disponibles sur toutes les distributions Linux, voire même par défaut depuis longtemps. Les systèmes BSD ne sont pas en reste, puisque NetBSD 7 dispose de xz dans le système de base (une version plus récente est disponible dans pkgsrc). Enfin, seul macOS ne semble pas en disposer nativement, mais cela peut être corrigé grâce à pkgsrc, macports ou Homebrew. Selon les systèmes, en plus des outils de compression et décompression, xz vient avec des outils fichiers "classique" qui décompressent à la volée, comme xzcat, xzgrep, xzless ou xzdiff.

Quelques exemples d'utilisation, à commencer par la compression d'un fichier, ici en mode verbeux et avec un taux de compression maximum :

nils@shell2:~/irclogs/freenode$ xz -v -9 \\#gcu.2017-11-30.log
#gcu.2017-11-30.log (1/1)
  100 % 8?020 B / 23,2 KiB = 0,338

Soyons fous, recherchons une chaîne de caractères :

nils@shell2:~/irclogs/freenode$ xzgrep -i -m 1 pinpin \\#gcu.2017-11-30.log.xz                                                                                                                                                           
01:26 < pinpin> olivier__ runne irssi v1.0.5 - running on FreeBSD amd64

Et bien entendu, la décompression :

nils@shell2:~/irclogs/freenode$ unxz -v \\#gcu.2017-11-30.log.xz 
#gcu.2017-11-30.log.xz (1/1)
  100 % 8?020 B / 23,2 KiB = 0,338

Crédit photo : Internet Archive Book Images - Image from page 1351 of "The Bell System technical journal" (1922).