sebsauvage.net

Ce site n'est pas le site officiel.
C'est un blog automatisé qui réplique les articles automatiquement

ZPAQ

Saturday 30 April 2022 at 09:15

Par un certain hasard, je reporte à nouveau mon attention sur ZPAQ (un logiciel de compression que Pierre Z. m'avait signalé en 2014 : https://sebsauvage.net/links/?5Ql3qg)
Je viens de refaire des essais avec zpaq, et c'est intéressant. C'est un logiciel de compression/archivage/backup qui à mes yeux peut avoir deux utilisations :
- Compresser fortement de gros ensembles de données (>2 Go) mieux que 7-Zip.
- Faire des backups incrémentaux (à la manière de borg) en mode "append only".

Compresser des données, c'est repérer des répétitions. Tous les logiciels de compression utilisent une "fenêtre" de compression à travers laquelle ils "regardent" les données à compresser. Si des répétitions sont vues dans cette fenêtre, on gagne de la place. Pour obtenir une meilleure compression, en plus d'un bon algorithme, il faut donc une grande fenêtre de compression (et donc consommer plus de mémoire).

C'est pour cela que 7-zip est plus efficace que la majorité de ses concurrents (zip, rar, zstd...) car il a non seulement d'excellents algorithmes (dont lzma) mais il utilise une plus grande fenêtre (et donc consomme plus de mémoire à la compression, par exemple si vous utilisez le mode "ultra" (-mx=9)). Il ajoute à cela une "astuce" : il trie les fichiers par extensions et nom. Avec cette astuce, il a donc plus de chance d'avoir dans sa fenêtre des fichiers avec du contenu similaire.

ZPAQ va plus loin: Il n'est pas limité à une fenêtre, mais peut repérer des répétitions sur l'ensemble des données (déduplication). Dans mes essais, zpaq (avec l'option -m4) donne de meilleurs résultats pour un ensemble de données de plusieurs Giga-octets. (Typiquement, il n'y a généralement pas de gain pour un ensemble de données inférieur à 2 Go).

ZPAQ est donc intéressant pour obtenir de meilleurs taux de compression que 7z pour toute donnée supérieure à 2 Go.

Mais ce n'est pas tout: Il possède un mode de fonctionnement très similaire à Borg afin de faire des backups incrémentaux. Le premier archivage/backup est long (puisqu'il compresse toutes les données), et les backups suivants sont plus rapide car il ne sauvegarde que les données modifiées. Avec déduplication et compression, il est très efficace.
On peut ainsi garder plusieurs versions des fichiers dans l'archive.
Tout comme Borg, ZPAQ permet de supprimer les derniers backups ajoutés. Par contre il ne sait pas supprimer d'anciens backups. L'archive ne peut donc que grossir. (C'est pour cette raison que pour un usage "backup", je continue à préférer borg: On peut purger les backups les plus anciens).
En utilisant un taux de compression moins fort (-m1,2 ou 3) il est très rapide pour les backups.

Si on résume :
- Pour compresser mieux que 7-Zip de gros ensembles de données, utilisez l'option -m4 de ZPAQ (L'option -m5 est beaucoup, beaucoup trop lente).
- Si vous utilisez ZPAQ pour des backups, les options -m1 à -m3 conviennent très bien (compression rapide).
(Astuce : l'option -m du taux de compression doit se mettre en *fin* de ligne de commande.)

ZPAQ est un Logiciel Libre, bien documenté, solide et qui existe sous toutes les plateformes (y compris Windows). L'auteur semble porter grand soin à bien documenter son format et à le rendre pérenne.
Sous Linux, vous trouverez zpaq dans vos dépôts.
(Permalink)

Source: http://mattmahoney.net/dc/zpaq.html