PAX (Pre-Allocate eXtension) est un format d'archive compressée open source développé par Microsoft comme une alternative moderne aux formats existants tels que ZIP, RAR et tar. Il a été conçu pour répondre aux limites et améliorer la compression, les performances, la sécurité et la fonctionnalité de la gestion des archives sur les systèmes et appareils modernes.
Les principales caractéristiques distinctives du format PAX incluent une compression améliorée à l'aide d'algorithmes modernes, un accès aléatoire efficace aux fichiers dans les archives, une prise en charge native du multithreading, des métadonnées extensibles, un chiffrement intégré et une vérification d'intégrité, ainsi qu'une spécification ouverte documentée pour encourager une large adoption et une interopérabilité.
Les archives PAX utilisent l'extension de fichier .pax et ont une structure interne en plusieurs parties comprenant un en-tête, un répertoire central, des blocs de données compressées et un pied de page. Cela permet de stocker séparément les informations clés telles que le contenu de l'archive, les paramètres de compression et les hachages d'intégrité des données de fichier compressées réelles.
L'en-tête PAX commence par un nombre magique de 4 octets (50 41 58 00 en hexadécimal) pour l'identification. Il contient ensuite des champs pour la version PAX, la méthode de compression, la méthode de chiffrement, la méthode de hachage, la taille du bloc, le nombre de threads de compression parallèles et divers indicateurs. L'en-tête se termine par des métadonnées XML extensibles fournissant des détails sur l'archive.
Après l'en-tête se trouve le répertoire central PAX. Il contient une entrée pour chaque fichier/dossier compressé dans l'archive, stockant le chemin complet, les attributs, les tailles, les décalages de bloc et les hachages. Le fait d'avoir cela en un seul endroit permet de répertorier efficacement le contenu de l'archive et d'accéder aléatoirement à des fichiers individuels sans avoir à analyser les données compressées.
La majeure partie d'une archive PAX est une série de blocs de données compressées. Chaque bloc a un petit en-tête indiquant la taille décompressée et compressée, suivi d'un morceau de données de fichier compressé avec l'algorithme configuré. La taille par défaut des blocs est de 1 Mo, mais cela peut être réglé dans l'en-tête de l'archive.
Les blocs de données compressées sont éventuellement chiffrés si une méthode de chiffrement est spécifiée. PAX prend en charge les schémas de chiffrement modernes tels que AES-256. Le mot de passe de l'archive est utilisé pour dériver une clé qui chiffre chaque bloc indépendamment, permettant un accès aléatoire efficace. Pour l'authentification, PAX hache les mots de passe avec un KDF sécurisé.
Pour la compression, PAX prend en charge une variété de codecs modernes à usage général optimisés pour une décompression rapide : LZMA, LZ4, Brotli, Zstandard, etc. Il permet également des préprocesseurs pour une réduction de taille supplémentaire sur des types de fichiers spécifiques (par exemple, encodage Delta sur les EXE/DLL, encodage E8E9 sur le code x86). Les codecs et les préprocesseurs sont appliqués dans un pipeline.
Pour permettre une compression multithread efficace, les fichiers sont partitionnés en blocs compressés indépendamment qui peuvent être traités par des instances de codec parallèles. Le compresseur PAX s'adapte automatiquement pour utiliser tous les cœurs de processeur disponibles. Un partitionnement similaire permet une décompression parallèle pour une extraction plus rapide.
PAX fournit l'intégrité des données et la détection des altérations en stockant les hachages des données originales et compressées. Les archives portent un hachage d'en-tête pour détecter la troncature. Le répertoire central est également haché pour empêcher toute altération des métadonnées du fichier. La détérioration des bits dans les données compressées est détectée en hachant chaque bloc.
À la fin d'une archive PAX se trouve le pied de page. Il contient une copie des champs d'en-tête, le décalage/la taille du répertoire central et un hachage de l'archive entière. Le pied de page est de taille fixe et toujours à la fin du fichier, ce qui permet de localiser et de vérifier facilement les archives PAX.
Les archives PAX peuvent être efficacement mises à jour en modifiant le répertoire central et en ajoutant des blocs de données modifiés, plutôt que de réécrire des archives entières comme ZIP. Des fichiers entiers peuvent être insérés, supprimés ou remplacés en mettant à jour les métadonnées et en ajoutant/supprimant les blocs pertinents. Les archives peuvent également être rapidement ajoutées.
Pour atténuer les vulnérabilités de zip-slip, PAX requiert des chemins explicites (pas de traversée ../) et empêche l'écriture en dehors de la racine d'extraction. Les longs champs de métadonnées ZIP qui permettaient le déni de service sont restreints. Les bombes de compression sont atténuées via des limites sur le taux de compression et l'utilisation de la mémoire.
Les horodatages des fichiers dans les archives PAX utilisent un format standard de 64 bits couvrant une large gamme de dates avec une précision d'une seconde. Les attributs pour les autorisations POSIX et les ACL Windows sont pris en charge. PAX peut stocker des flux de données alternatifs NTFS et des forks de ressources. Les liens symboliques et les liens physiques sont également représentables.
Le SDK PAX open source fournit des API simples pour créer, extraire, mettre à jour et vérifier des archives PAX par programmation. Il gère tous les détails de bas niveau du format PAX. Le SDK est disponible dans plusieurs langages, notamment C, C++, C#, Java, Python, JavaScript, Go et Rust.
En résumé, le format d'archive PAX s'appuie sur les fondations de formats éprouvés comme ZIP tout en introduisant des fonctionnalités et des optimisations modernes - compression efficace, multithreading, accès aléatoire, sécurité et une spécification ouverte. Cela rend PAX idéal pour un large éventail de scénarios d'archivage sur les systèmes actuels.
La compression de fichiers est un processus qui réduit la taille des fichiers de données pour un stockage ou une transmission efficaces. Elle utilise divers algorithmes pour condenser les données en identifiant et en éliminant les redondances, ce qui peut souvent diminuer substantiellement la taille des données sans perdre les informations originales.
Il existe deux types principaux de compression de fichiers : sans perte et avec perte. La compression sans perte permet de reconstituer parfaitement les données originales à partir des données compressées, ce qui est idéal pour les fichiers où chaque bit de données est important, comme les fichiers de texte ou de base de données. Des exemples courants incluent les formats de fichiers ZIP et RAR. D'un autre côté, la compression avec perte élimine les données moins importantes pour réduire la taille du fichier de manière plus significative, souvent utilisée dans les fichiers audio, vidéo et image. Les JPEG et MP3 sont des exemples où une certaine perte de données ne dégrade pas substantiellement la qualité perceptive du contenu.
La compression de fichiers est bénéfique de plusieurs façons. Elle économise de l'espace de stockage sur les appareils et les serveurs, réduisant les coûts et améliorant l'efficacité. Elle accélère également les temps de transfert de fichiers sur les réseaux, y compris sur Internet, ce qui est particulièrement précieux pour les grands fichiers. De plus, les fichiers compressés peuvent être regroupés en un seul fichier d'archive, aidant à l'organisation et au transport plus facile de plusieurs fichiers.
Cependant, la compression de fichiers présente certains inconvénients. Le processus de compression et de décompression nécessite des ressources informatiques, ce qui pourrait ralentir les performances du système, en particulier pour les fichiers plus volumineux. De plus, dans le cas de la compression avec perte, certaines données originales sont perdues lors de la compression, et la qualité résultante peut ne pas être acceptable pour toutes les utilisations, en particulier les applications professionnelles qui exigent une haute qualité.
La compression de fichiers est un outil essentiel dans le monde numérique d'aujourd'hui. Elle améliore l'efficacité, économise de l'espace de stockage et diminue les temps de téléchargement et de mise en ligne. Néanmoins, elle présente son propre ensemble d'inconvénients en termes de performances du système et de risque de dégradation de la qualité. Par conséquent, il est essentiel de tenir compte de ces facteurs pour choisir la bonne technique de compression pour des besoins de données spécifiques.
La compression de fichiers est un processus qui réduit la taille d'un fichier ou de fichiers, généralement pour économiser de l'espace de stockage ou accélérer la transmission sur un réseau.
La compression de fichiers fonctionne en identifiant et en supprimant les redondances dans les données. Elle utilise des algorithmes pour encoder les données originales dans un espace plus petit.
Les deux types principaux de compression de fichiers sont la compression sans perte et la compression avec pertes. La compression sans perte permet de restaurer parfaitement le fichier original, tandis que la compression avec pertes permet une réduction de taille plus significative au détriment de la perte de qualité des données.
Un exemple populaire d'un outil de compression de fichiers est WinZip, qui prend en charge de multiples formats de compression dont ZIP et RAR.
Avec la compression sans perte, la qualité reste inchangée. Cependant, avec la compression avec pertes, il peut y avoir une diminution notable de la qualité car elle élimine les données moins importantes pour réduire de manière plus significative la taille du fichier.
Oui, la compression de fichiers est sûre en termes d'intégrité des données, surtout avec la compression sans perte. Cependant, comme tout fichier, les fichiers compressés peuvent être ciblés par des logiciels malveillants ou des virus, il est donc toujours important d'avoir un logiciel de sécurité de confiance en place.
Presque tous les types de fichiers peuvent être compressés, y compris les fichiers texte, images, audio, vidéo, et les fichiers logiciels. Cependant, le niveau de compression réalisable peut varier considérablement selon les types de fichiers.
Un fichier ZIP est un type de format de fichier qui utilise la compression sans perte pour réduire la taille d'un ou de plusieurs fichiers. Plusieurs fichiers dans un fichier ZIP sont effectivement regroupés en un seul fichier, ce qui facilite également le partage.
Techniquement, oui, bien que la réduction de taille supplémentaire puisse être minime voire contre-productive. Compresser un fichier déjà compressé peut parfois augmenter sa taille en raison des métadonnées ajoutées par l'algorithme de compression.
Pour décompresser un fichier, il vous faut généralement un outil de décompression ou de dézippage, comme WinZip ou 7-Zip. Ces outils peuvent extraire les fichiers originaux à partir du format compressé.