GZIP 합병이 두 개의 GZIP 파일을 압축하지 않고 병합하는 GZIP 합병이 있습니까?

StackOverflow https://stackoverflow.com/questions/274185

  •  07-07-2019
  •  | 
  •  

문제

A.GZ와 B.GZ가 있다고 가정 해 봅시다.

$ gzip_merge a.gz b.gz -output c.gz

이 프로그램을 갖고 싶습니다. 물론,

$ cat A.GZ B.GZ> C.GZ

작동하지 않습니다. A.GZ의 최종 디플레이트 블록에는 Bfinal과 B.GZ의 GZIP 헤더가 있기 때문입니다. (RFC1951, RFC1952 참조) 그러나 BFINAL을 설정하지 않으면 두 번째 GZIP 헤더를 버리고 두 번째 GZIP 파일의 바이트 경계를 통과하면 병합 할 수 있습니다.

사실, 나는이 문제에 대한 오픈 소스 프로그램을 작성하는 것을 생각했지만 그것을 게시하는 방법을 몰랐습니다. 그래서 나는 Joel에게 나의 프로그램 관리자가 되라고 요청했고, 나는 내 설명과 방어를 통해 그를 걸어 갔다. 그는 마침내 내가하고 싶은 일을 이해했지만 너무 바쁘다고 말했다. :(

물론, 나는 직접 글을 쓰고 그것을 출판 할 길을 시도 할 수있었습니다. 그러나 내 하루 일과는 고용주의 재산에 속하기 때문에 혼자서 할 수 없습니다.

자원 봉사자가 있습니까? 우리는 프로그래머 (ME), 게시자 (You) 또는 프로그래머 (귀하), 게시자 (ME)로 일할 수 있습니다. 내가 필요한 것은 신용입니다. 한때 RFC3320에 설명 된 범용 압축 압력기 가상 머신을 구현했습니다. 그래서 나는 이것이 가능하다는 것을 알고 있습니다.

또는 그 프로그램을 지적 할 수 있습니다. 365 (Day) Gzipped 로그 파일을 하나로 합병하는 것과 같은 로그 파일을 관리하는 데 매우 유용합니다. ;)

감사.

도움이 되었습니까?

해결책

물론 Cat A.GZ B.GZ> C.GZ는 작동하지 않습니다.

사실, 그것은 잘 작동합니다. 방금 테스트했습니다. GZIP 맨 페이지에 문서화되어 있습니다.

   Multiple  compressed  files  can  be concatenated. In this case, gunzip
   will extract all members at once. For example:

         gzip -c file1  > foo.gz
         gzip -c file2 >> foo.gz

   Then

         gunzip -c foo

   is equivalent to

         cat file1 file2

다른 팁

당신은 또한 :

zcat a.gz b.gz > c.txt && gzip c.txt

Linux/UNIX 배포판이 ZCAT가 내장되어있는 한 대부분의 경우 (그리고 그렇지 않은 것들을 위해 설치할 수 있습니다.)

대안으로 :

zcat a.gz b.gz | gzip -c > c.txt.gz
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top