Digamos que tengo un archivo bzip2 (más de 5GB), y quiero descomprimir solo el bloque #x, porque allí están mis datos (el bloqueo es diferente cada vez). ¿Cómo haría esto?Descomprimir solo un bloque bzip2 específico
Pensé en hacer un índice de dónde están todos los bloques, luego cortar el bloque que necesito del archivo y aplicarle bzip2recover.
También pensé en comprimir digamos 1MB a la vez, luego anexar esto a un archivo (y registrar la ubicación), y simplemente tomar el archivo cuando lo necesito, pero prefiero mantener el archivo original bzip2 intacto.
Mi idioma preferido es Ruby, pero la solución de cualquier idioma está bien para mí (siempre que entienda el principio).
sic! el inicio de bloque no puede ser un límite de bytes :(Hay un programa bzip-table incluido en "seek-bzip2" para obtener una lista de desplazamiento de bits y tamaños de tamaños de bloques de datos originales. – osgx
desafortunadamente, "bzip-table" es casi el mismo velocidad como descompresión real :(. Hace un ciclo de descompresión casi completo, pero no verifica el CRC. – osgx
Además, echa un vistazo a los bzips paralelos, como pbzip2 de Jeff Gilchrist. En descompresión paralela necesita buscar los encabezados de un bloque. http://www.google.com/codesearch/p?hl=en#calSvFpbfuI/trunk/trunk/demo/pbzip2-1.0.2/pbzip2.cpp&q=pbzip2&sa=N&cd=2&ct=rc&l=3 función 'productor_decompresión' – osgx