saberla recuperar que puede guardado fue descomprimir cómo contraseña con comprimir comprimido como archivo abrir algorithm compression

algorithm - recuperar - ¿Cómo puedo rastrear un archivo comprimido sin leer todo su contenido?



winrar (6)

BGZF se utiliza para crear archivos comprimidos BAM index gzip creados por Samtools. Estos son accesibles al azar.

http://samtools.sourceforge.net/

Quiero emular la funcionalidad de gzcat | cola -n.

Esto sería útil para los momentos en que hay archivos enormes (de algunos GB más o menos). ¿Puedo alinear las últimas líneas de dicho archivo sin leerlo desde el principio? Dudo que esto no sea posible ya que supongo que para gzip, la codificación dependerá de todo el texto anterior.

Pero aún me gustaría saber si alguien ha intentado hacer algo similar, tal vez investigando sobre un algoritmo de compresión que podría proporcionar esa característica.


No, no puedes. El algoritmo de compresión funciona en transmisiones y adapta sus codificaciones internas a lo que contiene la transmisión para lograr su alta relación de compresión.

Sin saber cuál es el contenido de la secuencia antes de cierto punto, es imposible saber cómo proceder a la descompresión a partir de ese momento.

Cualquier algoritmo que le permita descomprimir partes arbitrarias requerirá múltiples pasadas sobre los datos para comprimirlo.


Si es una opción, entonces bzip2 podría ser un mejor algoritmo de compresión para usar para este propósito.

Bzip2 usa un esquema de compresión de bloques. Como tal, si toma un trozo del final de su archivo que está seguro es lo suficientemente grande como para contener todo el último trozo, puede recuperarlo con bzip2recover.

El tamaño del bloque se puede seleccionar en el momento en que se escribe el archivo. De hecho, eso es lo que sucede cuando configura -1 (o --fast) a -9 (o --best) como opciones de compresión, que corresponden a tamaños de bloque de 100k a 900k. El valor predeterminado es 900k.

Las herramientas de la línea de comandos bzip2 no te dan una buena manera amigable de hacer esto con una canalización, pero dado que bzip2 no está orientado a la transmisión, quizás eso no sea sorprendente.


Si tiene control sobre lo que entra en el archivo en primer lugar, si se trata de un archivo ZIP, puede almacenar trozos de tamaño predeterminado con nombres de archivo en orden numérico creciente y luego descomprimir el último fragmento / archivo.


Un ejemplo de un formato de acceso pseudoaleatorio totalmente compatible con gzip es dictzip :

Para la compresión, el archivo se divide en "fragmentos" de datos, cada fragmento tiene menos de 64 KB. [...]

Para realizar un acceso aleatorio a los datos, el desplazamiento y la longitud de los datos se proporcionan a las rutinas de la biblioteca. Estas rutinas determinan el fragmento en el que comienzan los datos deseados y descomprime ese fragmento. Los trozos consecutivos se descomprimen según sea necesario ".