Como fazer um aplicativo fictício ler arquivos gzip (on-the-fly) sem alterações de código

3

Estou procurando uma ferramenta / biblioteca geral que substitua a função fopen do sistema operacional para ler arquivos gz sem problemas durante a execução sem modificação em um aplicativo.

Detalhes: Eu tenho um aplicativo legado que lê arquivos binários grandes. Esses binários compactam muito bem como gz. Eu estava pensando em compactar esses arquivos binários e manter a extensão de arquivos original (conforme exigido pelo aplicativo legado) e usar uma biblioteca ou um aplicativo que intercepta e substitui as chamadas de sistema para oferecer suporte à leitura de arquivos compactados sem quaisquer alterações no código do aplicativo e sem fazer a descompactação completa. Além disso, a compactação geral do sistema de arquivos não é aplicável, pois isso eliminaria o desempenho de outros aplicativos HPC. Eu só preciso compactar arquivos binários específicos que são lidos por aplicativos legados e adicionar suporte para esses aplicativos para ler esses arquivos compactados sem qualquer alteração no código-fonte.

Existe algo disponível para fazer isso? Eu não me importo com a portabilidade, desde que funcione bem na minha distribuição Linux (RHEL 6)

    
por Aziz 23.07.2017 / 08:00

2 respostas

5

Outra possibilidade pode ser usar algum sistema de arquivos especializado. Talvez um sistema de arquivos FUSE (por exemplo, FUSE-BGZIP ) que está fazendo a compressão poderia fazer o truque, e você poderia adaptá-lo para compactar apenas de forma transparente os poucos arquivos que você quer (por exemplo, com alguns overlayfs ).

Veja também esta questão (compactação transparente para ext4).

    
por 23.07.2017 / 10:18
3

zlibc parece que pode fazer o que você quiser. Aqui está a descrição etc do pacote debian dele:

Package: zlibc
Version: 0.9k-4.3
Depends: libc6 (>= 2.2.5)
Description-en: An on-fly auto-uncompressing C library
 Zlibc is a preloadable shared library that allows executables to
 uncompress the data files that they need on the fly. No kernel patch,
 no recompilation of these executables and no recompilation of the
 libraries is needed.
Homepage: http://zlibc.linux.lu/

Eu não tenho ideia de como isso funciona, ou se ainda está sendo mantido, ou se há um pacote RHEL6 dele.

    
por 23.07.2017 / 09:58

Tags