Estou procurando um formato de compactação que suporte a tail
edição. Significando que você não precisa ler o arquivo inteiro para obter os últimos X bytes descompactados. Isso é possível com qualquer um dos formatos como bzip2, xz, lzma, etc?
Uma vez eu codifiquei algo usando o gzip que poderia fazer isso. Basicamente, em um nível realmente alto, o que ele fez foi agrupar vários blocos gzip juntos, então eu tinha um utilitário que poderia procurar de trás para frente a partir do final do arquivo até quando o último bloco foi iniciado. Esses arquivos foram totalmente legíveis pelos utilitários padrão do gzip, mas espero que exista algo um pouco mais padronizado disponível.
O objetivo final disso é o de arquivos de log que eu posso gravar compactados e, em seguida, poder tail
usá - los (mesmo quando não foram totalmente gravados; por exemplo, streaming) sem ter que esperar que tudo seja lido do disco ou da rede.
fonte
FWIW: Desenvolvi uma ferramenta de linha de comando no código-fonte zran.c do zlib, que cria índices para arquivos gzip: https://github.com/circulosmeos/gztool
Ele pode criar uma cauda contínua de um arquivo gzip com a
-T
opção Ou apenas um final do último conteúdo e pare com-t
(Muitas outras opções disponíveis).Observe que, para qualquer uma dessas ações,
gztool
será criado um arquivo de índice intercalado com essa ação.Os índices podem ser interrompidos a qualquer momento e reutilizados e / ou concluídos posteriormente. E como
gztool
é possível comandar a extração de dados de qualquer lugar no arquivo e criar o índice intercalado com essa ação, nunca há tempo perdido ao usá-lo.fonte