Cookies de statistiques et de publicité
Nous utilisons des cookies de statistiques et de publicité, tous deux destinés à Google. Si vous refusez, rien ne change visiblement pour vous.Aller à la page de confidentialité
XZ
Le plus puissant des compresseurs Unix courants. Le standard pour télécharger du code source et des paquets.
XZ
XZ est un format de flux, écrit et lu du début à la fin. Il est utilisé pour l’archivage.
L’extension est .xz et le nom complet XZ Archive. L’un et l’autre comptent moins que ce que le fichier peut contenir, et c’est le sujet du reste de cette page.
Il remonte à 2009.
L’âge est utile à connaître pour une raison pratique : plus un format est ancien, plus les programmes ont eu le temps de l’apprendre.
Elle est publiée intégralement : n’importe qui peut l’implémenter à partir du document plutôt qu’en l’observant, et c’est pourquoi ce format apparaît dans tant de programmes et pourquoi des fichiers écrits il y a vingt ans s’ouvrent encore. Une spécification publiée n’est pas pour autant libre de redevances : quand un format enveloppe un codec, les brevets sont une question à part, que la norme ne tranche pas.
XZ enregistre son contenu à l’identique. Le réenregistrer ne change rien : vous pouvez l’ouvrir, le modifier et le réenregistrer autant de fois que vous voulez sans accumuler de dégâts, et c’est ce qui en fait un format de travail plutôt qu’un format de livraison.
XZ compresse un seul flux et n’a aucune notion de nom de fichier ni de dossier. C’est pourquoi on le voit si souvent accompagné de TAR, qui apporte la structure qui lui manque.
Il travaille par tranches de 8 Mo : pour être compressée, une répétition doit tenir tout entière dans cette étendue.
Ce seul nombre explique l’essentiel de l’écart entre un format d’archive et un autre. Une étendue plus grande trouve plus de répétitions et met plus de temps et plus de mémoire à le faire : voilà tout le compromis.
XZ porte une somme de contrôle, pour qu’un fichier abîmé soit détecté au lieu d’être mal lu en silence.
Une somme de contrôle ne répare rien. Elle vous dit que le fichier est abîmé, ce qui fait la différence entre l’apprendre maintenant et l’apprendre de la personne à qui vous l’avez envoyé.
xz, 7-Zip et Keka le lisent, comme la plupart des programmes du même genre.
Quand un fichier ne s’ouvre pas, le format est rarement en cause : le plus souvent, c’est le programme qui est plus ancien que lui. Convertir vers quelque chose de plus ancien est le contournement fiable, et c’est à cela que sert le reste de ce site.
Aucun navigateur ne le lit.
C’est de loin la raison la plus fréquente de le convertir : non pas que le format soit mauvais, mais que l’endroit où vous voulez montrer le fichier ne sache pas le lire.
XZ est fait pour être transmis, pas pour travailler dedans. Modifier un tel fichier est possible et rarement agréable ; la voie raisonnable passe par la source et un nouvel export.
Les reproches qui reviennent : il porte un seul flux et ne sait pas décrire un dossier.
Rien de tout cela n’est une raison d’éviter le format. Ce sont les choses à connaître avant que l’une d’elles vous surprenne, ce qui est une affirmation différente et plus utile.
C’est toute la distinction avec 7z et cela explique tout le reste. Un fichier xz contient exactement un flux compressé. Il n’a pas de répertoire, pas de liste de noms, pas la notion de plusieurs fichiers. Compressez report.txt et vous obtenez report.txt.xz ; il n’y a rien d’autre dedans.
C’est pourquoi .tar.xz est la forme normale. tar regroupe l’arborescence en un seul flux et xz compresse ce flux, ce qui est la même division du travail que .tar.gz. Un .7z n’a pas besoin de tar parce que 7z est lui-même un format d’archive, et un .xz en a besoin parce qu’il ne l’est pas.
Les deux utilisent LZMA2, donc sur les mêmes données ils produisent des tailles très similaires. xz bat en général gzip de trente pour cent ou plus sur du texte, du code source et des journaux — la marge qui transforme un téléchargement de 100 Mo en un de 65.
Cela s’achète avec du temps et de la mémoire. Compresser aux préréglages les plus élevés peut prendre plusieurs fois plus longtemps que gzip et vouloir plusieurs centaines de mégaoctets de mémoire de travail. La décompression est rapide et peu coûteuse quoi qu’il arrive, ce qui est la forme correcte pour quelque chose compressé une fois et téléchargé de très nombreuses fois.
Le noyau Linux est distribué en .tar.xz. Il en va de même pour la plupart des archives de paquets de distributions et une large part des publications de code source. L’arithmétique est simple : un fichier téléchargé des millions de fois justifie à peu près n’importe quel effort de compression, puisque le coût est payé une fois et l’économie multipliée par chaque téléchargement. Le passage de bzip2 à xz pour le noyau a raccourci l’archive d’environ un quart et le temps de téléchargement total qui en découle à l’échelle du monde dépasse probablement la somme de tous les efforts de compression additionnels.
C’est aussi pourquoi vous rencontrez xz surtout en allant chercher du logiciel plutôt que lorsqu’on vous envoie un fichier. C’est un format de distribution, pas un format de partage, et la différence se voit dans les outils qui l’entourent : les distributions, les gestionnaires de paquets, les scripts de build, alors qu’aucun client de messagerie, aucune plateforme de transfert grand public et presque aucun système d’exploitation pour poste de travail ne le propose en première ligne.
En mars 2024, une porte dérobée a été découverte dans le logiciel xz-utils — versions 5.6.0 et 5.6.1, suivie comme CVE-2024-3094. Elle avait été introduite délibérément par un contributeur qui avait passé environ deux ans à bâtir la confiance dans le projet, et elle visait le démon SSH sur les systèmes où une bibliothèque liée à xz y était chargée.
Elle a été repérée par Andres Freund, un développeur qui a remarqué que les connexions SSH prenaient environ une demi-seconde de plus que prévu et qui a suivi l’anomalie plutôt que de hausser les épaules. Les versions concernées étaient dans des branches de test et avaient à peine atteint les distributions stables, de sorte que l’exposition réelle a été faible.
Rien dans le format de fichier n’a été compromis. La porte dérobée se trouvait dans une version particulière d’un programme particulier, elle n’a pas modifié la façon dont les fichiers xz sont structurés, et un .xz créé avant, pendant ou après cette période est un flux compressé ordinaire. Il n’y a pas moyen pour un simple fichier xz de porter l’exploit.
La signification durable concerne la façon dont le logiciel open source est maintenu plutôt que la compression. Cela reste la chose la plus lourde qui soit arrivée à ce format, et cela mérite d’être connu avec précision plutôt que comme une rumeur selon laquelle xz ne serait pas sûr.
xz stocke une somme de contrôle — CRC32, CRC64 ou SHA-256 — et la vérifie à la décompression. Si un octet a été modifié en transit ou sur un disque défaillant, l’extraction échoue avec une erreur explicite plutôt que de produire en silence une sortie fausse. C’est une propriété que les formats de distribution prennent au sérieux parce qu’une archive silencieusement corrompue est pire qu’une archive qui refuse : elle s’installe, et la panne arrive plus loin, plus difficile à diagnostiquer.
C’est un avantage réel sur un gzip simple, dont la vérification est plus faible, et cela fait partie des raisons pour lesquelles les distributions lui font confiance pour la livraison de logiciel. Cela détecte les dégâts ; cela ne les répare pas, ce qui est la seule chose que fait l’enregistrement de récupération de RAR que rien d’autre ici n’offre. Pour de la longue conservation, signer le fichier en plus et vérifier la signature après décompression reste la seule façon de s’assurer que personne ne l’a remplacé en route.
Zstandard, publié par Facebook en 2016, compresse presque aussi bien que xz à des vitesses proches de gzip. Pour tout ce où le temps de compression compte — construction de paquets, sauvegardes nocturnes, données écrites en continu — cette combinaison est difficile à contester, et plusieurs distributions ont migré leur format de paquet vers lui.
xz gagne encore en pur ratio à ses réglages les plus élevés, ce qui le maintient en place pour les publications de source et les archives du noyau où le fichier est construit une fois. Les deux ne se concurrencent pas vraiment pour le même travail.
Toute distribution Linux gère xz en ligne de commande. macOS de base ne livre pas de binaire xz — Homebrew ou MacPorts en fournit un — mais son tar adossé à libarchive déballe un .tar.xz sans aide, ce qui couvre la plupart de ce qui arrive. Windows a eu besoin d’un utilitaire comme 7-Zip, qui le lit sans difficulté. Décompresser un .tar.xz tient en deux étapes que la plupart des outils présentent comme une seule : défaire la compression, puis déballer le tar.
N’attendez pas un dossier en décompressant un simple .xz. Vous récupérez exactement un fichier — ce qui a été compressé — parce que c’est tout ce que le format a jamais contenu. Si vous attendiez une arborescence, l’archive que vous vouliez était le .tar à l’intérieur. C’est aussi pourquoi xz est rarement le bon format pour envoyer quelque chose à une personne : ZIP est ce que son ordinateur ouvre sans aide, et la différence de taille sur un transfert isolé vaut rarement la friction d’expliquer ce qu’est un .xz et comment l’ouvrir. Utilisez xz quand quelque chose est compressé une fois et récupéré de nombreuses fois : une publication, un téléchargement, une archive allant dans du stockage de longue durée où chaque gigaoctet se paye. Les minutes supplémentaires à la compression sont alors amorties sur chaque récupération.
| Extension | .xz |
|---|---|
| Type de média | application/x-xz |
| Première publication | 2009 |