Estoy buscando un formato de compresión que admita ser tail
editado. Lo que significa que no tiene que leer todo el archivo para obtener los últimos X bytes sin comprimir. ¿Es esto posible con alguno de los formatos como bzip2, xz, lzma, etc.?
Una vez codifiqué algo usando gzip que podría hacer esto. Básicamente, en un nivel realmente alto, lo que hizo fue juntar múltiples bloques gzip, luego tuve una utilidad que podía buscar hacia atrás desde el final del archivo hasta cuando comenzó el último bloque. Estas utilidades estándar de gzip pueden leer completamente estos archivos, pero espero que haya algo un poco más estandarizado disponible.
El propósito final de esto es para los archivos de registro que puedo escribir comprimidos y luego poder acceder a tail
ellos (incluso cuando no se han escrito completamente; es decir, la transmisión) sin tener que esperar a que todo se lea desde el disco o la red.
fuente
FWIW: he desarrollado una herramienta de línea de comando sobre el código fuente zran.c de zlib que crea índices para archivos gzip: https://github.com/circulosmeos/gztool
Puede hacer una cola continua de un archivo gzip con la
-T
opción. O simplemente una cola de los últimos contenidos y detente, con-t
(Muchas otras opciones disponibles).Tenga en cuenta que para cualquiera de estas acciones
gztool
creará un archivo de índice intercalado con esa acción.Los índices pueden interrumpirse en cualquier momento y reutilizarse y / o completarse más tarde. Y como
gztool
se puede ordenar que extraiga datos de cualquier lugar del archivo, y creará el índice intercalado con esa acción, nunca se pierde tiempo al usarlo.fuente