코드를 변경하지 않고 가상 애플리케이션이 gzip 파일을 즉시 읽도록 만드는 방법

코드를 변경하지 않고 가상 애플리케이션이 gzip 파일을 즉시 읽도록 만드는 방법

나는 응용 프로그램을 수정하지 않고 런타임에 gz 파일을 원활하게 읽을 수 있도록 운영 체제의 fopen 함수를 재정의할 수 있는 일반 도구/라이브러리를 찾고 있습니다.

세부 정보: 대용량 바이너리 파일을 읽는 오래된 애플리케이션이 있습니다. 이러한 바이너리는 gz뿐만 아니라 압축됩니다. 이러한 바이너리를 압축하고 원본 파일 확장자를 유지하며(레거시 응용 프로그램에서 요구하는 대로) 시스템 호출을 가로채서 재정의하는 라이브러리나 응용 프로그램을 사용하여 응용 프로그램 코드를 변경하지 않고 압축을 완전히 풀지 않고도 압축 파일을 읽을 수 있도록 지원하려고 합니다. . 또한 전체 파일 시스템 압축은 다른 HPC 애플리케이션의 성능을 저하시키므로 적합하지 않습니다. 이전 애플리케이션에서 읽은 특정 바이너리를 압축하고 이러한 애플리케이션에 대한 지원을 추가하면 소스 코드를 변경하지 않고도 이러한 압축 파일을 읽을 수 있습니다.

이런 일을 하기 위해 내가 할 수 있는 일이 없을까? 내 Linux 배포판(RHEL 6)에서 제대로 작동하는 한 이식성은 신경 쓰지 않습니다.

답변1

또 다른 가능성은 특수한 파일 시스템을 사용하는 것입니다. 아마도퓨즈파일 시스템(예:퓨즈BGZIP) 압축을 수행하는 이 작업을 수행할 수 있으며 원하는 소수의 파일만 투명하게 압축하도록 조정할 수 있습니다(예:파일 시스템 덮어쓰기).

당신은 또한 볼 수 있습니다이것문제(ext4의 투명 압축)

답변2

주쿠원하는 바를 이룰 수 있을 것 같습니다. 데비안 패키지의 설명 등은 다음과 같습니다.

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 패키지가 있는지 모르겠습니다.

관련 정보