테일 연산을 지원하는 압축 형식이 있습니까?


12

tailed 를 지원하는 압축 형식을 찾고 있습니다. 마지막 X 비 압축 바이트를 얻기 위해 전체 파일을 읽을 필요는 없습니다. bzip2, xz, lzma 등과 같은 형식으로 가능합니까?

한 번 gzip을 사용하여 무언가를 코딩했습니다. 기본적으로 정말 높은 수준에서 여러 개의 gzip 블록을 함께 묶은 것이었고, 마지막 블록이 시작될 때까지 파일 끝에서 뒤로 탐색 할 수있는 유틸리티가있었습니다. 이 파일들은 표준 gzip 유틸리티로 완전히 읽을 수 있지만 좀 더 표준화 된 것을 원합니다.

이를위한 궁극적 인 목적은 압축 된 상태로 기록한 다음 tail디스크 나 네트워크에서 전체 내용을 읽을 때까지 기다릴 필요없이 완전히 기록되지 않은 스트리밍 파일 일 수있는 로그 파일입니다 .

답변:


5

gzip에는 --rsyncable 옵션이 있으며 이는 본질적으로 동일 합니다. 비표준 부분은 gzip-block-aware "ztail"유틸리티이지만, 이미 처리 한 것처럼 보입니다.


2
물론이 옵션은 -9를 지정하더라도 -0.5 압축 수준으로 효과적으로 제한합니다.
psusi

이것을 지원하는 gzip 버전은 어디서 구할 수 있습니까? 이 옵션이 한 시점이면 제거 된 것으로 보입니다.
Patrick

데비안 기반 배포판에는 우분투 10.04가 있습니다 : root @ backup1 : ~ # gzip -V gzip 1.3.12 root @ backup1 : ~ # gzip -h | egrep rsync --rsyncable rsync 친화적 인 아카이브 만들기
the-wabbit

분명히 다른 배포자 (예 : Fedora)도 패치를 포함하고있는 것 같습니다. 그리고 오래된 gzip에 대한 패치가 있습니다 : samba.org/netfilter/diary/gzip.rsync.patch . 만약 당신이 정말로 자기 컴파일이 필요하다면 약간의 수정으로 최신 버전에 적용될 수 있습니다.
the-wabbit

BTW의 논의에 따르면 특정 데이터 세트의 마일리지는 다를 수 있지만 압축에 대한 영향은 무시할 만합니다 (2-3 % 이내). deflate와 같은 적응 형 알고리즘을 사용하여 "맞춤형"압축이 필요한 경우 알고리즘을 재설정하는 방법은 거의 없습니다. 물론 압축 효율이 떨어질 수 있습니다.
the-wabbit

0

FWIW : gzip 파일에 대한 색인을 생성 하는 zlib의 zran.c 소스 코드 에서 명령 행 도구를 개발했습니다 . https://github.com/circulosmeos/gztool

-T옵션 으로 gzip 파일의 연속 꼬리를 만들 수 있습니다 . 또는 -t(많은 다른 옵션 사용 가능)을 사용 하여 마지막 내용의 꼬리 만 멈 춥니 다 .

이러한 작업 중 하나에 대해 gztool해당 작업에 인터리브 된 인덱스 파일이 생성됩니다.

색인은 언제든지 중단되고 나중에 재사용 및 / 또는 완료 될 수 있습니다. 로 그리고 gztool단지 파일의 모든 곳에서 데이터를 추출에 명령 할 수 있으며, 해당 작업과 인터리브 인덱스를 만들 것이다, 그것을 사용하는 경우 손실 시간이 결코 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.