El formato de archivo V7 es un formato de archivo utilizado para archivar y comprimir datos. Fue introducido en 1999 como una mejora sobre el formato V6 anterior. Los archivos V7 proporcionan una compresión eficiente, acceso aleatorio rápido a los archivos y soporte para archivos y archivos grandes.
Un archivo V7 consta de una serie de bloques. Cada bloque contiene datos de archivo o metadatos de archivo. Los bloques tienen un tamaño variable, con un tamaño máximo de 4 GB. El archivo comienza con un bloque de encabezado que contiene información sobre la versión del formato de archivo, el número de bloques y un directorio de los archivos archivados.
Después del encabezado hay uno o más bloques de datos de archivo. Cada archivo se almacena en una serie contigua de bloques de datos. Los archivos se pueden comprimir utilizando varios algoritmos de compresión, como LZMA, BZip2 o PPMd. El método de compresión específico utilizado para cada archivo se especifica en los metadatos del archivo.
Intercalados entre los bloques de datos de archivo hay bloques de metadatos que contienen información sobre los archivos archivados. Esto incluye el nombre del archivo, los atributos, las marcas de tiempo, el método de compresión y la ubicación de los bloques de datos del archivo dentro del archivo. Los metadatos se almacenan en un formato binario optimizado para un acceso aleatorio rápido.
Una característica clave del formato V7 es su capacidad para manejar eficientemente archivos y archivos grandes. Utiliza un esquema de direccionamiento de 64 bits, lo que le permite admitir archivos y archivos de hasta 16 exabytes de tamaño. La estructura de bloque de tamaño variable también permite un acceso aleatorio eficiente a archivos individuales sin necesidad de descomprimir todo el archivo.
Los archivos V7 admiten múltiples métodos de compresión por archivo. Esto permite flexibilidad para equilibrar la relación de compresión y la velocidad. Los algoritmos de compresión disponibles incluyen:
- LZMA: Un algoritmo de alta compresión que proporciona excelentes relaciones de compresión pero es relativamente lento. Más adecuado para archivar datos a los que no se accederá con frecuencia.
- BZip2: Un algoritmo de compresión de propósito general con un buen equilibrio entre velocidad y relación de compresión. Se comprime más lentamente en comparación con LZMA pero se descomprime más rápido.
- PPMd: Un algoritmo de compresión estadística adaptativa que puede lograr relaciones de compresión muy altas para ciertos tipos de datos, particularmente texto. Sin embargo, tiene un alto uso de memoria y velocidades de compresión más lentas.
- Deflate: Un algoritmo de compresión ampliamente utilizado que proporciona velocidades de compresión y descompresión rápidas con relaciones de compresión razonables. Se basa en la codificación LZ77 y Huffman.
- Sin compresión: Los archivos también se pueden almacenar sin comprimir si se desea.
Los archivos V7 también incluyen comprobaciones de integridad para detectar daños en los datos. Cada bloque incluye una suma de comprobación CRC-32 que se verifica al leer el bloque. Además, el encabezado del archivo incluye un hash SHA-256 de todo el contenido del archivo para la verificación de la integridad de todo el archivo.
Para la resistencia a errores, los archivos V7 pueden incluir opcionalmente registros de recuperación. Estos son bloques especiales intercalados en todo el archivo que contienen copias redundantes de los metadatos del archivo. Si un bloque de metadatos se corrompe, se puede reconstruir a partir de un registro de recuperación cercano, evitando que todo el archivo se vuelva ilegible debido a un error localizado.
El formato V7 también admite el cifrado a nivel de archivo. Todo el archivo se puede cifrar utilizando AES-256 en modo CBC. La clave de cifrado se deriva de una frase de contraseña proporcionada por el usuario mediante una función de derivación de clave (KDF). Al cifrar, se genera una sal aleatoria de 256 bits y se almacena en el encabezado del archivo para su uso en el KDF.
Acceder a un archivo V7 cifrado requiere proporcionar la frase de contraseña correcta. La frase de contraseña se ejecuta a través del KDF junto con la sal del encabezado del archivo para volver a derivar la clave de cifrado. Esta clave se utiliza luego para descifrar el contenido del archivo sobre la marcha según sea necesario.
Los archivos V7 se pueden actualizar de manera eficiente modificando solo las partes relevantes del archivo. Agregar, eliminar o actualizar archivos en un archivo implica reescribir los bloques de datos afectados y actualizar los metadatos y los registros de recuperación según sea necesario. El resto del archivo permanece sin cambios, lo que hace que las actualizaciones sean relativamente rápidas.
El formato V7 también admite el archivo sólido. Con el archivo sólido, varios archivos se comprimen juntos como un solo bloque continuo, lo que permite mejores relaciones de compresión al aprovechar las similitudes entre los archivos. Sin embargo, esto puede afectar el rendimiento del acceso aleatorio y la capacidad de actualizar archivos individuales.
Varias herramientas de archivo populares admiten el formato V7, incluidas WinRAR, PowerArchiver y 7-Zip. Estas herramientas proporcionan interfaces gráficas para crear, extraer y administrar archivos V7. Muchos lenguajes de programación también tienen bibliotecas disponibles para trabajar con archivos V7 mediante programación.
En resumen, el formato de archivo V7 es una opción potente y flexible para archivar y comprimir datos. Sus características clave incluyen compresión eficiente, acceso aleatorio rápido, soporte para archivos y archivos grandes, múltiples algoritmos de compresión, verificación de integridad, resistencia a errores y cifrado. Estas capacidades hacen que V7 sea muy adecuado para una amplia gama de necesidades de archivo.
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.