7z es un formato de archivo comprimido que admite varios algoritmos de preprocesamiento , cifrado y compresión de datos diferentes . El formato 7z apareció inicialmente como implementado por el archivador 7-Zip . El programa 7-Zip está disponible públicamente bajo los términos de la Licencia Pública General Reducida GNU . El LZMA SDK 4.62 se colocó en el dominio público en diciembre de 2008. La última versión estable de 7-Zip y LZMA SDK es la versión 19.00. [2]
Extensión de nombre de archivo | .7z |
---|---|
Tipo de medio de Internet | aplicación / x-7z-compressed |
Identificador de tipo uniforme (UTI) | org.7-zip.7-zip-archive |
número mágico | '7', 'z', 0xBC, 0xAF, 0x27, 0x1C |
Desarrollado por | Igor Pavlov [1] |
Versión inicial | 1999 [2] |
Tipo de formato | Compresión de datos |
¿ Formato abierto ? | Sí: Licencia pública general reducida GNU / dominio público |
Sitio web | 7-zip |
La especificación del formato de archivo 7z se distribuye con el código fuente de 7-Zip. La especificación se puede encontrar en formato de texto sin formato en el subdirectorio 'doc' de la distribución del código fuente.
Funciones y mejoras
El formato 7z proporciona las siguientes características principales:
- Arquitectura modular abierta que permite apilar cualquier método de compresión, conversión o cifrado.
- Relaciones de compresión elevadas (según el método de compresión utilizado).
- Cifrado AES -256 .
- Soporte de archivos grandes (hasta aproximadamente 16 exbibytes , o 2 64 bytes).
- Nombres de archivos Unicode .
- Soporte para compresión sólida , donde varios archivos del mismo tipo se comprimen dentro de una sola secuencia, para aprovechar la redundancia combinada inherente a archivos similares.
- Compresión y cifrado de encabezados de archivos .
- Soporte para archivos de varias partes: por ejemplo, xxx.7z.001, xxx.7z.002, ... (consulte los elementos del menú contextual Dividir archivo ... para crearlos y Combinar archivos ... para volver a ensamblar un archivo desde un conjunto de archivos de componentes de varias partes).
- Soporte para DLL de complementos de códec personalizados.
La arquitectura abierta del formato permite que se agreguen al estándar métodos de compresión futuros adicionales.
Métodos de compresión
Los siguientes métodos de compresión están definidos actualmente:
- LZMA : una variación del algoritmo LZ77 , que utiliza un diccionario deslizante de hasta 4 GB de longitud para eliminar cadenas duplicadas. A la etapa LZ le sigue la codificación de entropía utilizando un codificador de rango basado en la cadena de Markov y árboles binarios .
- LZMA2 : versión modificada de LZMA que proporciona un mejor soporte de subprocesos múltiples y menos expansión de datos incompresibles. [3]
- Bzip2 : el algoritmo de transformación estándar de Burrows-Wheeler . Bzip2 usa dos transformaciones reversibles; BWT, luego Mover al frente con la codificación Huffman para la reducción de símbolos (el elemento de compresión real).
- PPMd - PPMdH 2002 de Dmitry Shkarin (PPMII / cPPMII) con pequeños cambios: PPMII es una versión mejorada del algoritmo de compresión 1984 PPM (predicción por coincidencia parcial).
- DEFLATE : algoritmo estándar basado en codificación LZ77 y Huffman de 32 kB . Deflate se encuentra en varios formatos de archivo, incluidos ZIP , gzip , PNG y PDF . 7-Zip contiene un codificador DEFLATE desde cero que con frecuencia supera a la versión zlib estándar de facto en tamaño de compresión, pero a expensas del uso de la CPU.
Un conjunto de herramientas de recompresión llamado AdvanceCOMP contiene una copia del codificador DEFLATE de la implementación de 7-Zip; estas utilidades a menudo se pueden utilizar para comprimir aún más el tamaño de los archivos gzip , ZIP , PNG o MNG existentes .
Filtros de preprocesamiento
El LZMA SDK viene con los preprocesadores BCJ y BCJ2 incluidos, de modo que las etapas posteriores puedan lograr una mayor compresión: para los procesadores x86 , ARM , PowerPC (PPC), IA-64 Itanium y ARM Thumb , los objetivos de salto están 'normalizados' [ 3] antes de la compresión cambiando la posición relativa a valores absolutos. Para x86, esto significa que los saltos cercanos, las llamadas y los saltos condicionales (pero no los saltos cortos y los saltos condicionales) se convierten de la notación de estilo "saltar 1655 bytes hacia atrás" del lenguaje de máquina a la notación de estilo normalizada "saltar a la dirección 5554"; todos los saltos a 5554, quizás una subrutina común, se codifican de manera idéntica, lo que los hace más comprimibles.
- BCJ - Convertidor para ejecutables x86 de 32 bits. Normalice las direcciones de destino de los saltos cercanos y las llamadas desde distancias relativas a destinos absolutos.
- BCJ2– Preprocesador para ejecutables x86 de 32 bits. BCJ2 es una mejora en BCJ, que agrega procesamiento adicional de instrucciones de salto / llamada x86. Los objetivos de salto cercano, llamada cercana y condicional de salto cercano se dividen y comprimen por separado en otra secuencia.
- Codificación delta: filtro delta, preprocesador básico para datos multimedia.
En otro software se incluye una tecnología de preprocesamiento ejecutable similar; el compresor RAR presenta compresión de desplazamiento para ejecutables x86 de 32 bits y ejecutables IA-64, y el compresor de archivos ejecutables en tiempo de ejecución UPX incluye soporte para trabajar con valores de 16 bits dentro de archivos binarios DOS .
Cifrado
El formato 7z admite el cifrado con el algoritmo AES con una clave de 256 bits. La clave se genera a partir de una frase de contraseña proporcionada por el usuario mediante un algoritmo basado en la función hash SHA-256 . El SHA-256 se ejecuta 2 18 (262144) veces, [4] lo que provoca un retraso significativo en las PC lentas antes de que comience la compresión o extracción. Esta técnica se denomina estiramiento de claves y se utiliza para dificultar la búsqueda por fuerza bruta de la frase de contraseña. Los ataques de hardware personalizados y basados en GPU actuales limitan la eficacia de este método particular de estiramiento de claves, [5] por lo que sigue siendo importante elegir una contraseña segura. El formato 7z ofrece la opción de cifrar los nombres de archivo de un archivo 7z.
Limitaciones
El formato 7z no almacena los permisos del sistema de archivos (como los permisos de propietario / grupo de UNIX o las ACL de NTFS ) y, por lo tanto, puede ser inadecuado para fines de copia de seguridad / archivo. Una solución alternativa en los sistemas similares a UNIX para esto es convertir los datos en un flujo de bits tar antes de comprimirlos con 7z. Pero vale la pena señalar que GNU tar (común en muchos entornos UNIX) también se puede comprimir con el algoritmo LZMA de forma nativa, sin el uso de 7z, y que en este caso la extensión de archivo [6] sugerida para el archivo es ".tar. lzma "(o simplemente" .tlz "), y no" .tar.7z ". Por otro lado, es importante tener en cuenta que tar no guarda la codificación del sistema de archivos, lo que significa que los nombres de archivos comprimidos en tar pueden volverse ilegibles si se descomprimen en una computadora diferente. También es posible utilizar LZMA2 ejecutándolo a través de la herramienta xz . Las versiones recientes de GNU tar admiten el conmutador, que ejecuta TAR a través de XZ. La extensión del archivo es ".tar.xz" o ".txz". Este método de compresión ha sido adoptado con muchas distribuciones de empaquetado, como Arch, Debian (deb), Fedora (rpm) y Slackware.-J
El formato 7z no permite la extracción de algunos "archivos rotos", es decir (por ejemplo) si uno tiene el primer segmento de una serie de archivos 7z, 7z no puede dar el inicio de los archivos dentro del archivo, debe esperar hasta que todos se descargan los segmentos. El formato 7z también carece de registros de recuperación, lo que lo hace vulnerable a la degradación de datos a menos que se use junto con soluciones externas, como parchives , o dentro de sistemas de archivos con una sólida corrección de errores . A modo de comparación, los archivos zip también carecen de una función de recuperación.
Ver también
- Comparación de formatos de archivo
- Lista de formatos de archivo
- Formato de archivo gratuito
- Formato abierto
Referencias
- ^ "Algunas preguntas para Igor Pavlov" . Boletín de Compresión de Datos del Dr. Dobb . 30 de abril de 2003 . Consultado el 26 de diciembre de 2009 .
- ^ a b Historial de cambios de 7-zip
- ^ a b Collin, Lasse. "lzma_.lzma" . enlaces liblzma . Archivado desde el original el 8 de febrero de 2010 . Consultado el 3 de enero de 2010 .
En comparación con LZMA1, LZMA2 agrega soporte para LZMA_SYNC_FLUSH, fragmentos sin comprimir (expansión más pequeña al intentar comprimir datos no comprimibles), posibilidad de cambiar lc / lp / pb en medio de la codificación y algunas otras mejoras internas.
- ^ Código fuente 7-zip
- ^ Colin Percival. scrypt . Como se presenta en "Derivación de claves más fuerte a través de funciones secuenciales de memoria dura" . presentado en BSDCan'09, mayo de 2009.
- ^ https://www.gnu.org/software/tar/manual/html_section/Compression.html
Otras lecturas
- Salomón, David (2007). Compresión de datos: la referencia completa . Saltador. pag. 241. ISBN 978-1-84628-602-5.
enlaces externos
- Página web oficial
- 7z en SourceForge.net