Le format d'archive ISO, également connu sous le nom d'ISO 9660, est une norme de système de fichiers publiée par l'Organisation internationale de normalisation (ISO) en 1988. Il a été conçu comme un système de fichiers multiplateforme pour les supports de disques optiques, tels que les CD-ROM. L'objectif était de fournir une méthode unifiée permettant à différents systèmes d'exploitation de lire les données à partir de disques optiques, garantissant ainsi l'interopérabilité et la compatibilité.
ISO 9660 définit une structure de système de fichiers hiérarchique, similaire aux systèmes de fichiers utilisés par la plupart des systèmes d'exploitation. Il organise les données en répertoires et fichiers, chaque répertoire pouvant contenir des sous-répertoires et des fichiers. La norme spécifie le format des descripteurs de volume et de répertoire, ainsi que la table des chemins, qui est utilisée pour un accès rapide aux répertoires.
L'une des principales caractéristiques du format ISO 9660 est sa simplicité et sa compatibilité. La norme impose des restrictions sur les noms de fichiers, les structures de répertoires et les métadonnées afin de garantir que les disques puissent être lus par un large éventail de systèmes. Les noms de fichiers sont limités à 8 caractères, suivis d'une extension de 3 caractères (format 8.3), et ne peuvent contenir que des lettres majuscules, des chiffres et des traits de soulignement. Les noms de répertoires sont également limités, avec une profondeur maximale de 8 niveaux.
Pour prendre en charge des noms de fichiers plus longs et des métadonnées supplémentaires, la norme ISO 9660 a été étendue par le biais de diverses spécifications. L'une de ces extensions est Joliet, introduite par Microsoft en 1995. Joliet permet des noms de fichiers plus longs (jusqu'à 64 caractères Unicode) et prend en charge la sensibilité à la casse. Il y parvient en incluant un ensemble supplémentaire d'enregistrements de répertoire utilisant l'encodage UCS-2, qui est lu par les systèmes prenant en charge l'extension Joliet.
Une autre extension notable d'ISO 9660 est Rock Ridge, qui a été développée pour les systèmes UNIX. Rock Ridge ajoute la sémantique du système de fichiers POSIX, telle que les autorisations de fichiers, la propriété et les liens symboliques, au format ISO 9660. Cette extension permet de préserver les attributs de fichiers spécifiques à UNIX lors de la création d'images ISO à partir de systèmes de fichiers UNIX.
Le format ISO 9660 divise le disque en blocs logiques, chacun ayant généralement une taille de 2 048 octets. Les 16 premiers blocs sont réservés à l'utilisation du système et contiennent les descripteurs de volume, qui fournissent des informations sur la structure et le contenu du disque. Le descripteur de volume principal est obligatoire et comprend des détails tels que l'identifiant de volume du disque, la taille des blocs logiques et l'enregistrement du répertoire racine.
Après les descripteurs de volume, la table des chemins est stockée sur le disque. La table des chemins contient des informations sur l'emplacement de chaque répertoire sur le disque, permettant une traversée rapide de la hiérarchie des répertoires. Elle se compose d'une table des chemins L (Little-Endian) et d'une table des chemins M (Big-Endian) pour prendre en charge les différents ordres d'octets utilisés par divers systèmes.
Les répertoires et les fichiers sont stockés dans les blocs suivants du disque. Chaque répertoire est représenté par un enregistrement de répertoire, qui contient des informations telles que le nom du répertoire, son répertoire parent et l'emplacement de ses fichiers et sous-répertoires associés. Les fichiers sont stockés sous forme de séquences contiguës de blocs logiques, leur emplacement et leur taille étant spécifiés dans l'enregistrement d'identification de fichier correspondant dans le répertoire.
Lors de la création d'une image ISO, le système de fichiers est d'abord organisé conformément aux exigences de la norme ISO 9660. Cela implique de s'assurer que les noms de fichiers et de répertoires sont conformes au format 8.3, de limiter la profondeur du répertoire et de convertir les noms de fichiers en majuscules. Une fois le système de fichiers préparé, il est écrit dans un fichier image avec l'extension « .iso », qui peut ensuite être gravé sur un disque optique ou utilisé comme une image de disque virtuelle.
Pour lire un disque formaté ISO 9660, le système d'exploitation ou une application logicielle dédiée commence par examiner les descripteurs de volume pour déterminer la structure et les caractéristiques du disque. Il utilise ensuite la table des chemins et les enregistrements de répertoire pour naviguer dans la hiérarchie du système de fichiers et localiser des fichiers ou des répertoires spécifiques. Lorsqu'un fichier est accédé, le système lit les blocs logiques appropriés à partir du disque en fonction des informations fournies dans l'enregistrement d'identification de fichier.
Le format ISO 9660 a été largement adopté et est encore couramment utilisé pour distribuer des logiciels, du contenu multimédia et des données d'archivage sur des disques optiques. Sa simplicité, sa compatibilité et sa robustesse ont contribué à sa longévité, même si de nouveaux formats de disques optiques et systèmes de fichiers ont émergé.
Malgré son âge, la norme ISO 9660 reste pertinente dans l'informatique moderne. De nombreuses applications logicielles et systèmes d'exploitation, notamment Windows, macOS et Linux, continuent de prendre en charge le format de manière native. De plus, les images ISO sont fréquemment utilisées pour distribuer des fichiers d'installation de système d'exploitation, des progiciels et des images de disque de machine virtuelle, car elles fournissent une méthode pratique et indépendante de la plateforme pour stocker et transférer des données.
En conclusion, le format ISO 9660 a joué un rôle crucial dans la standardisation de la structure du système de fichiers pour les disques optiques, permettant une compatibilité multiplateforme et facilitant la distribution de contenu numérique. Ses extensions, telles que Joliet et Rock Ridge, ont ajouté la prise en charge de noms de fichiers plus longs, de métadonnées supplémentaires et d'attributs spécifiques à UNIX. Bien que les disques optiques aient été largement remplacés par d'autres supports de stockage et des méthodes de distribution basées sur le réseau, le format ISO 9660 reste une norme fiable et largement prise en charge pour l'archivage et l'échange de données.
À mesure que la technologie continue d'évoluer, le format ISO 9660 pourrait éventuellement être remplacé par des systèmes de fichiers plus récents et plus avancés conçus pour des disques optiques de grande capacité ou d'autres supports de stockage. Cependant, son impact sur l'histoire de l'informatique et son rôle dans l'établissement d'une approche standardisée de l'échange de données multiplateforme ne seront pas oubliés. Le format ISO 9660 témoigne de l'importance de l'interopérabilité et des avantages de la collaboration à l'échelle de l'industrie dans le développement et l'adoption de normes.
La compression de fichiers réduit la redondance afin que la même information prenne moins de bits. La limite supérieure de ce que vous pouvez faire est régie par la théorie de l'information : pour la compression sans perte, la limite est l'entropie de la source (voir le théorème de codage de source et son article original de 1948 « Une théorie mathématique de la communication »). Pour la compression avec perte, le compromis entre le débit et la qualité est capturé par la théorie du débit-distorsion.
La plupart des compresseurs ont deux étapes. Premièrement, un modèle prédit ou expose la structure des données. Deuxièmement, un codeur transforme ces prédictions en modèles de bits quasi optimaux. Une famille de modélisation classique est Lempel-Ziv : LZ77 (1977) et LZ78 (1978) détectent les sous-chaînes répétées et émettent des références au lieu d'octets bruts. Du côté du codage, le codage de Huffman (voir l'article original de 1952) attribue des codes plus courts aux symboles les plus probables. Le codage arithmétique et le codage par plage sont des alternatives plus fines qui se rapprochent de la limite de l'entropie, tandis que les systèmes de numération asymétriques (ANS) modernes permettent une compression similaire avec des implémentations rapides basées sur des tables.
DEFLATE (utilisé par gzip, zlib et ZIP) combine LZ77 avec le codage de Huffman. Ses spécifications sont publiques : DEFLATE RFC 1951, wrapper zlib RFC 1950, et format de fichier gzip RFC 1952. Gzip est conçu pour le streaming et explicitement ne tente pas de fournir un accès aléatoire. Les images PNG normalisent DEFLATE comme leur seule méthode de compression (avec une fenêtre maximale de 32 Kio), conformément à la spécification PNG « Méthode de compression 0… dégonfler/gonfler… au plus 32768 octets » et W3C/ISO PNG 2e édition.
Zstandard (zstd) : un compresseur polyvalent plus récent conçu pour des taux de compression élevés avec une décompression très rapide. Le format est documenté dans la RFC 8878 (également miroir HTML) et la spécification de référence sur GitHub. Comme gzip, la trame de base ne vise pas l'accès aléatoire. L'un des superpouvoirs de zstd réside dans les dictionnaires : de petits échantillons de votre corpus qui améliorent considérablement la compression sur de nombreux fichiers minuscules ou similaires (voir la documentation du dictionnaire python-zstandard et l'exemple pratique de Nigel Tao). Les implémentations acceptent à la fois les dictionnaires « non structurés » et « structurés » (discussion).
Brotli : optimisé pour le contenu Web (par exemple, les polices WOFF2, HTTP). Il mélange un dictionnaire statique avec un noyau d'entropie+LZ de type DEFLATE. La spécification est la RFC 7932, qui note également une fenêtre glissante de 2WBITS−16 avec WBITS dans [10, 24] (1 Kio−16 B jusqu'à 16 Mio−16 B) et qu'il ne tente pas d'accès aléatoire. Brotli surpasse souvent gzip sur le texte Web tout en décodant rapidement.
Conteneur ZIP : ZIP est une archive de fichiers qui peut stocker des entrées avec diverses méthodes de compression (deflate, store, zstd, etc.). La norme de facto est l'APPNOTE de PKWARE (voir le portail APPNOTE, une copie hébergée, et les aperçus de la LC Format de fichier ZIP (PKWARE) / ZIP 6.3.3).
LZ4 vise la vitesse brute avec des ratios modestes. Voir sa page de projet (« compression extrêmement rapide ») et son format de trame. Il est idéal pour les caches en mémoire, la télémétrie ou les chemins d'accès très sollicités où la décompression doit être proche de la vitesse de la RAM.
XZ / LZMA visent la densité (excellents ratios) avec une compression relativement lente. XZ est un conteneur ; le gros du travail est généralement effectué par LZMA/LZMA2 (modélisation de type LZ77 + codage par plage). Voir le format de fichier .xz, la spécification LZMA (Pavlov), et les notes du noyau Linux sur XZ Embedded. XZ surcompresse généralement gzip et rivalise souvent avec les codecs modernes à haut ratio, mais avec des temps d'encodage plus lents.
bzip2 applique la transformée de Burrows-Wheeler (BWT), move-to-front, RLE et le codage de Huffman. Il est généralement plus petit que gzip mais plus lent ; voir le manuel officiel et les pages de manuel (Linux).
La « taille de la fenêtre » est importante. Les références DEFLATE ne peuvent remonter que de 32 Kio (RFC 1951 et la limite de 32 Kio de PNG notée ici). La fenêtre de Brotli va d'environ 1 Kio à 16 Mio (RFC 7932). Zstd ajuste la fenêtre et la profondeur de recherche par niveau (RFC 8878). Les flux de base gzip/zstd/brotli sont conçus pour un décodage séquentiel ; les formats de base ne promettent pas d'accès aléatoire, bien que des conteneurs (par exemple, des index tar, un tramage en morceaux ou des index spécifiques au format) puissent l'ajouter.
Les formats ci-dessus sont sans perte : vous pouvez reconstruire les octets exacts. Les codecs multimédias sont souvent avec perte : ils suppriment les détails imperceptibles pour atteindre des débits binaires inférieurs. Dans les images, le JPEG classique (DCT, quantification, codage entropique) est normalisé dans ITU-T T.81 / ISO/IEC 10918-1. En audio, MP3 (MPEG-1 Layer III) et AAC (MPEG-2/4) reposent sur des modèles perceptuels et des transformées MDCT (voir ISO/IEC 11172-3, ISO/IEC 13818-7, et un aperçu de la MDCT ici). Avec et sans perte peuvent coexister (par exemple, PNG pour les ressources de l'interface utilisateur ; codecs Web pour les images/vidéo/audio).
Théorie : Shannon 1948 · Débit-distorsion · Codage : Huffman 1952 · Codage arithmétique · Codage par plage · ANS. Formats : DEFLATE · zlib · gzip · Zstandard · Brotli · Trame LZ4 · Format XZ. Pile BWT : Burrows–Wheeler (1994) · manuel bzip2. Médias : JPEG T.81 · MP3 ISO/IEC 11172-3 · AAC ISO/IEC 13818-7 · MDCT.
Conclusion : choisissez un compresseur qui correspond à vos données et à vos contraintes, mesurez sur des entrées réelles et n'oubliez pas les gains des dictionnaires et du tramage intelligent. Avec la bonne combinaison, vous pouvez obtenir des fichiers plus petits, des transferts plus rapides et des applications plus réactives, sans sacrifier la correction ou la portabilité.
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é.