문제

PDF 아카이브에 대한이 질문 마스터 템플릿 (레터 헤드) 위에 본질적으로 작은 변경 사항 인 많은 파일을 압축하려면 궁금해졌습니다.

표준 압축/아카이빙 형식이이를 지원합니까? Afaik, 모든 인기있는 형식은 각 단일 파일 압축에 중점을 둡니다.

도움이 되었습니까?

해결책

여러 형식은 파일 간 압축을합니다.

가장 오래된 예는 .tar.gz; a .TAR에는 압축이 없지만 각 파일 앞에 헤더와 함께 모든 파일을 함께 연결하고 .gz는 하나의 파일 만 압축 할 수 있습니다. 둘 다 순서대로 적용되며 유닉스 월드의 전통적인 형식입니다. .TAR.BZ2는 동일하며 GZIP 대신 BZIP2에서만 동일합니다.

보다 최근의 예는 선택적 "고체"압축 (예 : RAR 및 7-ZIP)이있는 형식이며, 명령 줄 플래그 또는 GUI 옵션으로 활성화 된 경우 압축하기 전에 모든 파일을 내부적으로 연결할 수 있습니다.

다른 팁

Google의 Open-VCDiff를 살펴보십시오.

http://code.google.com/p/open-vcdiff/

작은 압축 델타를 계산하도록 설계되었으며 RFC 3284를 구현합니다.

http://www.ietf.org/rfc/rfc3284.txt

Microsoft에는 비슷한 일을하는 API가 있으며 표준의 유사성이 있습니다.

일반적으로 귀하가 찾고있는 알고리즘은 Bentley/McIlroy를 기반으로합니다.

http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.11.8470

특히 템플릿의 크기가 GZIP 또는 BZIP2에서 사용하는 블록 크기 (100-900K)가 사용하는 창 크기 (~ 32K)보다 큰 경우 이러한 알고리즘이 승리됩니다.

이들은 Google에서 내부적으로 Bigtable 구현의 내부에서 사용하여 압축 웹 페이지를 저장하여 원하는 이유와 거의 같은 이유로 사용합니다.

LZW 압축 (거의 모두 사용하는)에는 스키마와 같이 반복적 인 문자 테이블을 구축하는 것이 포함되기 때문에 전체 아카이브를 한 번에 압축 해제 해야하는 것을 제한합니다.

이것이 귀하의 상황에서 허용되는 경우, 압축하기 전에 파일을 하나의 큰 파일로 결합하는 메소드를 구현하는 것이 더 간단 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top