En informática , la compresión sólida es un método de compresión de datos de varios archivos, en el que todos los archivos sin comprimir se concatenan y se tratan como un único bloque de datos. Este tipo de archivo se denomina archivo sólido. Se utiliza de forma nativa en los formatos 7z [1] y RAR [2] , así como indirectamente enalquitrán- formatos basados en.tar.gzy.tar.bz2Por el contrario, el formato ZIP no es sólido porque almacena archivos comprimidos por separado (aunque la compresión sólida se puede emular para archivos pequeños combinando los archivos en un archivo descomprimido y luego comprimiendo ese archivo dentro de un segundo archivo ZIP comprimido). [3] [4]
Los formatos de archivos comprimidos suelen incluir tanto compresión (almacenamiento de datos en un espacio pequeño) como archivado (almacenamiento de varios archivos y metadatos en un solo archivo). Se pueden combinar de dos formas naturales:
El orden importa (estas operaciones no conmutan ) y esta última es una compresión sólida.
En Unix, la compresión y el archivado son operaciones tradicionalmente separadas, lo que permite comprender esta distinción:
En este ejemplo, tres archivos tienen cada uno una parte común con la misma información, una parte única con información que no está en los otros archivos y una parte "aérea" con información de baja entropía y, por lo tanto, bien comprimible.
archivo original A
archivo original B
archivo original C
archivo no sólido:
archivo sólido:
La compresión sólida permite obtener tasas de compresión mucho mejores cuando todos los archivos son similares, lo que suele suceder si tienen el mismo formato de archivo . También puede resultar eficaz cuando se archiva una gran cantidad de archivos pequeños.
Por otro lado, para obtener un solo archivo de un archivo sólido es necesario procesar todos los archivos anteriores, por lo que modificar archivos sólidos puede resultar lento e inconveniente. En formatos más nuevos, como 7-zip, existe una opción de tamaño de bloque sólido que permite dividir el bloque de datos concatenado en bloques más pequeños comprimidos individualmente, de modo que solo se debe procesar una cantidad limitada de datos en el bloque para extraer un archivo. Los parámetros controlan el tamaño máximo de la ventana del bloque sólido, la cantidad de archivos en un bloque y si los bloques están separados por extensión de archivo. [5]
Además, si el archivo se daña incluso levemente, algunos de los datos (a veces incluso todos los datos) después de la parte dañada en el bloque pueden quedar inutilizables (dependiendo del formato de compresión y archivo), mientras que en un formato de archivo no sólido, normalmente solo un archivo queda inutilizable y los archivos subsiguientes normalmente aún se pueden extraer.
=on[:] archivo sólido en