두 개 이상의 gzip 스트림을 재 압축하지 않고 연결하려고합니다.두 개 이상의 gzip 파일/스트림을 연결하는 방법
나는 A를 A.gz로, B를 B.gz로 압축 했으므로 C 또는 C++을 사용하여 다시 압축하지 않고 단일 gzip (A + B) .gz로 압축하려고합니다.
몇 가지주의 사항 :
- 비록 당신이 두 파일과 gunzip을 CONCAT 그들과 거래를하는 방법을 알게 될 것입니다 수 있습니다, 대부분의 프로그램은 두 덩어리를 처리 할 수 없습니다.
- 나는 한 번 파일을 압축 해제 한 다음 원본을 조작하고이 재빨리 정상적인 재 압축을 수행하는 코드 예를 보았지만 여전히 O (n) CPU 작업이 필요합니다.
- 유감스럽게도 한 번 발견 한이 사례를 발견 할 수 없습니다 (감압 만 사용하는 연결). 누군가가 지적하면 좋을 것 같습니다.
참고 : 제안 된 솔루션이 내 요구에 맞지 않기 때문에 this과 중복되지 않습니다.
Clearification 편집 "인코딩 수락 : : gzip을"을, respnse "콘텐츠 인코딩 :
나는 몇 가지 압축 된 HTML의 PICES을 concate과 요청에 따라, 하나의 페이지로 브라우저로 보낼 GZIP을 "
스트림이 cat a.gz b.gz >ab.gz
과 같이 간단하게 연결되면 Gecko (firefox) 및 KHTML 웹 엔진은 첫 번째 부분 (a) 만 가져옵니다. IE6는 아무것도 표시하지 않고 Google 크롬은 첫 번째 부분 (a)을 제대로 표시하고 두 번째 부분 (b)는 쓰레기로 표시합니다 (전혀 압축을 풀지 않음).
오페라에서만이 기능을 잘 처리합니다.
그래서 단일 청크의 gzip 스트림을 만들어 다시 압축하지 않고 보내야합니다.
업데이트 : zlib의 예에서 gzjoin.c을 찾았습니다. 압축 해제 만 사용합니다. 문제는 감압이 여전히 느리다는 것입니다. memcpy
.
4 배 빠른 gzip 압축은 여전히 빠릅니다. 그러나 그것은 충분하지 않습니다.
내가 필요한 것은 압축 해제 절차를 실행하지 않기 위해 gzip 파일과 함께 저장해야하는 데이터를 찾고 압축 중에이 데이터를 찾는 방법입니다. 를 보내고 것은 밖으로 질문하지 tar
경우
정말로 압축할까요, 아니면 같은 파일에 연결하고 싶습니까? –
두 개의 다른 gzip 압축 파일/스트림/메모리 청크 중 하나의 gzip 압축 파일/stream/memory-chunk를 압축 해제하지 않고 연결하고 다시 압축해야합니다. – Artyom
수정 사항을 참조하십시오. – Artyom