El formato de archivo ISO, también conocido como ISO 9660, es un estándar de sistema de archivos publicado por la Organización Internacional de Normalización (ISO) en 1988. Fue diseñado como un sistema de archivos multiplataforma para medios de disco óptico, como CD-ROM. El objetivo era proporcionar un método unificado para que diferentes sistemas operativos leyeran datos de discos ópticos, asegurando la interoperabilidad y la compatibilidad.
ISO 9660 define una estructura de sistema de archivos jerárquica, similar a los sistemas de archivos utilizados por la mayoría de los sistemas operativos. Organiza los datos en directorios y archivos, y cada directorio puede contener subdirectorios y archivos. El estándar especifica el formato de los descriptores de volumen y directorio, así como la tabla de rutas, que se utiliza para acceder rápidamente a los directorios.
Una de las características clave del formato ISO 9660 es su simplicidad y compatibilidad. El estándar impone restricciones en los nombres de archivo, las estructuras de directorio y los metadatos para garantizar que los discos puedan ser leídos por una amplia gama de sistemas. Los nombres de archivo están limitados a 8 caracteres, seguidos de una extensión de 3 caracteres (formato 8.3), y solo pueden contener letras mayúsculas, dígitos y guiones bajos. Los nombres de directorio están restringidos de manera similar, con una profundidad máxima de 8 niveles.
Para dar cabida a nombres de archivo más largos y metadatos adicionales, el estándar ISO 9660 se ha ampliado mediante varias especificaciones. Una de esas extensiones es Joliet, introducida por Microsoft en 1995. Joliet permite nombres de archivo más largos (hasta 64 caracteres Unicode) y admite la distinción entre mayúsculas y minúsculas. Lo logra incluyendo un conjunto adicional de registros de directorio utilizando la codificación UCS-2, que es leída por sistemas que admiten la extensión Joliet.
Otra notable extensión de ISO 9660 es Rock Ridge, que fue desarrollada para sistemas UNIX. Rock Ridge agrega semántica del sistema de archivos POSIX, como permisos de archivo, propiedad y enlaces simbólicos, al formato ISO 9660. Esta extensión permite la preservación de atributos de archivo específicos de UNIX al crear imágenes ISO desde sistemas de archivos UNIX.
El formato ISO 9660 divide el disco en bloques lógicos, cada uno de los cuales suele tener un tamaño de 2048 bytes. Los primeros 16 bloques están reservados para uso del sistema y contienen los descriptores de volumen, que proporcionan información sobre la estructura y el contenido del disco. El descriptor de volumen principal es obligatorio e incluye detalles como el identificador de volumen del disco, el tamaño de los bloques lógicos y el registro del directorio raíz.
Después de los descriptores de volumen, la tabla de rutas se almacena en el disco. La tabla de rutas contiene información sobre la ubicación de cada directorio en el disco, lo que permite un recorrido rápido de la jerarquía de directorios. Consiste en una tabla de rutas L (Little-Endian) y una tabla de rutas M (Big-Endian) para admitir diferentes ordenaciones de bytes utilizadas por varios sistemas.
Los directorios y archivos se almacenan en los bloques posteriores del disco. Cada directorio está representado por un registro de directorio, que contiene información como el nombre del directorio, su directorio principal y la ubicación de sus archivos y subdirectorios asociados. Los archivos se almacenan como secuencias contiguas de bloques lógicos, con su ubicación y tamaño especificados en el registro de identificador de archivo correspondiente dentro del directorio.
Al crear una imagen ISO, el sistema de archivos se organiza primero de acuerdo con los requisitos del estándar ISO 9660. Esto incluye garantizar que los nombres de archivo y directorio cumplan con el formato 8.3, limitar la profundidad del directorio y convertir los nombres de archivo a mayúsculas. Una vez que se prepara el sistema de archivos, se escribe en un archivo de imagen con la extensión `.iso`, que luego se puede grabar en un disco óptico o utilizar como una imagen de disco virtual.
Para leer un disco formateado ISO 9660, el sistema operativo o una aplicación de software dedicada comienza examinando los descriptores de volumen para determinar la estructura y las características del disco. Luego utiliza la tabla de rutas y los registros de directorio para navegar por la jerarquía del sistema de archivos y localizar archivos o directorios específicos. Cuando se accede a un archivo, el sistema lee los bloques lógicos apropiados del disco basándose en la información proporcionada en el registro de identificador de archivo.
El formato ISO 9660 ha sido ampliamente adoptado y todavía se utiliza comúnmente para distribuir software, contenido multimedia y datos de archivo en discos ópticos. Su simplicidad, compatibilidad y robustez han contribuido a su longevidad, incluso cuando han surgido nuevos formatos de discos ópticos y sistemas de archivos.
A pesar de su antigüedad, el estándar ISO 9660 sigue siendo relevante en la informática moderna. Muchas aplicaciones de software y sistemas operativos, incluidos Windows, macOS y Linux, continúan admitiendo el formato de forma nativa. Además, las imágenes ISO se utilizan con frecuencia para distribuir archivos de instalación del sistema operativo, paquetes de software e imágenes de disco de máquinas virtuales, ya que proporcionan un método conveniente e independiente de la plataforma para almacenar y transferir datos.
En conclusión, el formato ISO 9660 ha desempeñado un papel crucial en la estandarización de la estructura del sistema de archivos para discos ópticos, permitiendo la compatibilidad multiplataforma y facilitando la distribución de contenido digital. Sus extensiones, como Joliet y Rock Ridge, han agregado soporte para nombres de archivo más largos, metadatos adicionales y atributos específicos de UNIX. Aunque los discos ópticos han sido reemplazados en gran medida por otros medios de almacenamiento y métodos de distribución basados en redes, el formato ISO 9660 sigue siendo un estándar confiable y ampliamente compatible para archivar e intercambiar datos.
A medida que la tecnología continúa evolucionando, el formato ISO 9660 eventualmente puede ser reemplazado por sistemas de archivos más nuevos y avanzados diseñados para discos ópticos de alta capacidad u otros medios de almacenamiento. Sin embargo, su impacto en la historia de la computación y su papel en el establecimiento de un enfoque estandarizado para el intercambio de datos multiplataforma no se olvidarán. El formato ISO 9660 sirve como testimonio de la importancia de la interoperabilidad y los beneficios de la colaboración en toda la industria en el desarrollo y la adopción de estándares.
La compresión de archivos reduce la redundancia para que la misma información ocupe menos bits. El límite superior de hasta dónde se puede llegar está gobernado por la teoría de la información: para la compresión sin pérdidas, el límite es la entropía de la fuente (véase el teorema de codificación de fuente y su artículo original de 1948 “Una teoría matemática de la comunicación”). Para la compresión con pérdidas, el equilibrio entre la tasa y la calidad se captura mediante la teoría de la tasa-distorsión.
La mayoría de los compresores tienen dos etapas. Primero, un modelo predice o expone la estructura de los datos. Segundo, un codificador convierte esas predicciones en patrones de bits casi óptimos. Una familia clásica de modelado es Lempel-Ziv: LZ77 (1977) y LZ78 (1978) detectan subcadenas repetidas y emiten referencias en lugar de bytes sin procesar. En el lado de la codificación, la codificación de Huffman (véase el artículo original de 1952) asigna códigos más cortos a los símbolos más probables. La codificación aritmética y la codificación por rangos son alternativas más detalladas que se acercan más al límite de la entropía, mientras que los modernos Sistemas Numéricos Asimétricos (ANS) logran una compresión similar con implementaciones rápidas basadas en tablas.
DEFLATE (utilizado por gzip, zlib y ZIP) combina LZ77 con la codificación de Huffman. Sus especificaciones son públicas: DEFLATE RFC 1951, envoltura zlib RFC 1950, y formato de archivo gzip RFC 1952. Gzip está diseñado para la transmisión y explícitamente no intenta proporcionar acceso aleatorio. Las imágenes PNG estandarizan DEFLATE como su único método de compresión (con una ventana máxima de 32 KiB), según la especificación de PNG “Método de compresión 0… deflate/inflate… como máximo 32768 bytes” y W3C/ISO PNG 2ª Edición.
Zstandard (zstd): un compresor de propósito general más nuevo diseñado para altas relaciones de compresión con una descompresión muy rápida. El formato está documentado en RFC 8878 (también espejo HTML) y la especificación de referencia en GitHub. Al igual que gzip, el marco básico no tiene como objetivo el acceso aleatorio. Uno de los superpoderes de zstd son los diccionarios: pequeñas muestras de su corpus que mejoran drásticamente la compresión en muchos archivos pequeños o similares (véase documentación del diccionario python-zstandard y el ejemplo práctico de Nigel Tao). Las implementaciones aceptan diccionarios tanto “no estructurados” como “estructurados” (discusión).
Brotli: optimizado para contenido web (por ejemplo, fuentes WOFF2, HTTP). Mezcla un diccionario estático con un núcleo de entropía+LZ similar a DEFLATE. La especificación es RFC 7932, que también señala una ventana deslizante de 2WBITS−16 con WBITS en [10, 24] (1 KiB−16 B hasta 16 MiB−16 B) y que no intenta el acceso aleatorio. Brotli a menudo supera a gzip en texto web mientras se decodifica rápidamente.
Contenedor ZIP: ZIP es un archivo de ficheros que puede almacenar entradas con varios métodos de compresión (deflate, store, zstd, etc.). El estándar de facto es la APPNOTE de PKWARE (véase APPNOTE portal, una copia alojada, y resúmenes de LC Formato de archivo ZIP (PKWARE) / ZIP 6.3.3).
LZ4 se centra en la velocidad bruta con relaciones modestas. Véase su página del proyecto („compresión extremadamente rápida“) y formato de trama. Es ideal para cachés en memoria, telemetría o rutas calientes donde la descompresión debe ser cercana a la velocidad de la RAM.
XZ / LZMA buscan la densidad (grandes relaciones) con una compresión relativamente lenta. XZ es un contenedor; el trabajo pesado lo realiza normalmente LZMA/LZMA2 (modelado tipo LZ77 + codificación por rangos). Véase formato de archivo .xz, la especificación de LZMA (Pavlov), y las notas del kernel de Linux sobre XZ Embedded. XZ suele comprimir más que gzip y a menudo compite con los códecs modernos de alta relación, pero con tiempos de codificación más lentos.
bzip2 aplica la Transformada de Burrows-Wheeler (BWT), move-to-front, RLE y codificación de Huffman. Suele ser más pequeño que gzip pero más lento; véase el manual oficial y las páginas del manual (Linux).
El „tamaño de la ventana“ importa. Las referencias de DEFLATE solo pueden mirar hacia atrás 32 KiB (RFC 1951 y el límite de 32 KiB de PNG señalado aquí). La ventana de Brotli varía de aproximadamente 1 KiB a 16 MiB (RFC 7932). Zstd ajusta la ventana y la profundidad de búsqueda por nivel (RFC 8878). Los flujos básicos de gzip/zstd/brotli están diseñados para la decodificación secuencial; los formatos base no prometen acceso aleatorio, aunque los contenedores (por ejemplo, índices tar, tramas fragmentadas o índices específicos del formato) pueden superponerlo.
Los formatos anteriores son sin pérdidas: se pueden reconstruir los bytes exactos. Los códecs de medios suelen ser con pérdidas: descartan detalles imperceptibles para alcanzar tasas de bits más bajas. En imágenes, el JPEG clásico (DCT, cuantificación, codificación de entropía) está estandarizado en ITU-T T.81 / ISO/IEC 10918-1. En audio, MP3 (MPEG-1 Layer III) y AAC (MPEG-2/4) se basan en modelos perceptuales y transformadas MDCT (véase ISO/IEC 11172-3, ISO/IEC 13818-7, y un resumen de MDCT aquí). Con y sin pérdidas pueden coexistir (por ejemplo, PNG para activos de interfaz de usuario; códecs web para imágenes/vídeo/audio).
Teoría: Shannon 1948 · Tasa-distorsión · Codificación: Huffman 1952 · Codificación aritmética · Codificación por rangos · ANS. Formatos: DEFLATE · zlib · gzip · Zstandard · Brotli · Trama LZ4 · Formato XZ. Pila BWT: Burrows–Wheeler (1994) · manual de bzip2. Medios: JPEG T.81 · MP3 ISO/IEC 11172-3 · AAC ISO/IEC 13818-7 · MDCT.
En resumen: elija un compresor que se ajuste a sus datos y restricciones, mida con entradas reales y no olvide las ganancias de los diccionarios y el entramado inteligente. Con la combinación adecuada, puede obtener archivos más pequeños, transferencias más rápidas y aplicaciones más ágiles, sin sacrificar la corrección o la portabilidad.
La compresión de archivos es un proceso que reduce el tamaño de un archivo o archivos, típicamente para ahorrar espacio de almacenamiento o acelerar la transmisión a través de una red.
La compresión de archivos funciona identificando y eliminando la redundancia en los datos. Utiliza algoritmos para codificar los datos originales en un espacio menor.
Los dos tipos principales de compresión de archivos son la compresión sin pérdida y la compresión con pérdida. La compresión sin pérdida permite restaurar perfectamente el archivo original, mientras que la compresión con pérdida permite una reducción de tamaño más significativa a costa de alguna pérdida en la calidad de los datos.
Un ejemplo popular de una herramienta de compresión de archivos es WinZip, que admite varios formatos de compresión incluyendo ZIP y RAR.
Con la compresión sin pérdida, la calidad permanece sin cambios. Sin embargo, con la compresión con pérdida, puede haber una disminución notable en la calidad, ya que elimina datos menos importantes para reducir de manera más significativa el tamaño del archivo.
Sí, la compresión de archivos es segura en términos de integridad de datos, especialmente con la compresión sin pérdida. Sin embargo, como en todos los archivos, los archivos comprimidos pueden ser objeto de malware o virus, por lo que siempre es importante tener un software de seguridad de confianza en funcionamiento.
Casi todos los tipos de archivos se pueden comprimir, incluyendo archivos de texto, imágenes, audio, video y archivos de software. Sin embargo, el nivel de compresión alcanzable puede variar significativamente entre los tipos de archivos.
Un archivo ZIP es un tipo de formato de archivo que utiliza compresión sin pérdida para reducir el tamaño de uno o varios archivos. Varios archivos en un archivo ZIP se agrupan efectivamente en un solo archivo, lo que también facilita la compartición.
Técnicamente, sí, aunque la reducción de tamaño adicional podría ser mínima o incluso contraproducente. Comprimir un archivo ya comprimido a veces aumenta su tamaño debido a los metadatos agregados por el algoritmo de compresión.
Para descomprimir un archivo, generalmente necesitas una herramienta de descompresión, como WinZip o 7-Zip. Estas herramientas pueden extraer los archivos originales del formato comprimido.