私は、アプリケーションを変更せずに実行時にgzファイルをシームレスに読み取ることができるように、オペレーティングシステムのfopen関数をオーバーライドできる一般的なツール/ライブラリを探しています。
詳細:大容量バイナリファイルを読み取る古いアプリケーションがあります。これらのバイナリはgzだけでなく圧縮されます。これらのバイナリを圧縮し、元のファイル拡張子を保持し(レガシーアプリケーションで要求されるように)、システムコールを傍受してオーバーライドするライブラリまたはアプリケーションを使用して、アプリケーションコードを変更せずに解凍することなく圧縮ファイルを読み取るできるようにサポートしようとしています。 。さらに、ファイルシステム全体の圧縮は他のHPCアプリケーションのパフォーマンスを低下させるため、適切ではありません。以前のアプリケーションから読み込んだ特定のバイナリを圧縮し、これらのアプリケーションのサポートを追加すると、ソースコードを変更することなくこれらの圧縮ファイルを読み取ることができます。
このようなことをするために私ができることはないでしょうか?私のLinuxディストリビューション(RHEL 6)でうまく機能する限り、移植性は気にしません。
答え1
もう一つの可能性は、特別なファイルシステムを使用することです。おそらくヒューズファイルシステム(例:ヒューズBGZIP)圧縮を実行するこれを行うことができ、必要な少数のファイルのみを透過的に圧縮するように調整できます。ファイルシステムの上書き)。
また、見ることができますこれ問題(ext4の透明圧縮)
答え2
宿欲しいものを達成できるようです。 Debian パッケージの説明などは次のとおりです。
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/
それがどれほどうまく機能しているのか、それでもメンテナンスされているのか、それともRHEL6パッケージがあるのかわかりません。