이 기사에서는 9 개의 zip 파일 레이어를 언급하므로 여러 개의 0을 압축하는 단순한 사례는 아닙니다. 왜 9, 왜 각각에 10 개의 파일이 있습니까?
우선, Wikipedia 기사는 현재 16 개의 파일이있는 5 개의 레이어를 말합니다. 불일치가 어디에서 왔는지 확실하지 않지만 그게 전부가 아닙니다. 진짜 질문은 왜 처음부터 중첩을 사용 하는가입니다.
압축 파일 *에 대해 유일하게 지원되는 압축 방법 인 DEFLATE는 최대 압축률이 1032입니다. 이는 1-3 바이트의 모든 반복 시퀀스에 대해 무조건 달성 할 수 있습니다. 압축 파일에 대해 수행하는 작업에 관계없이 DEFLATE 만 사용하는 한 압축 해제 된 크기는 원래 압축 파일 크기의 최대 1032 배입니다.
따라서 중첩 된 zip 파일을 사용하여 엄청나게 큰 압축 비율을 달성해야합니다. 압축 레이어가 2 개인 경우 최대 비율은 1032 ^ 2 = 1065024가됩니다. 3의 경우 1099104768 등입니다. 42.zip에 사용 된 5 개 계층의 경우 이론상 최대 압축 비율은 1170572956434432입니다. 실제로 볼 수 있듯이 실제 42.zip은 해당 레벨과는 거리가 멀습니다. 그중 일부는 zip 형식의 오버 헤드이며 일부는 방금 신경 쓰지 않았습니다.
추측해야한다면 42.zip은 큰 빈 파일을 만들고 반복적으로 압축하여 복사하여 형성되었다고 말할 수 있습니다. 형식의 한계를 뛰어 넘거나 압축 등을 극대화하려는 시도는 없습니다. 레이어 당 16 개의 사본을 임의로 선택했습니다. 요점은 많은 노력없이 큰 페이로드를 만드는 것이 었습니다.
참고 : bzip2와 같은 다른 압축 형식은 훨씬 더 큰 최대 압축 비율을 제공합니다. 그러나 대부분의 zip 파서는 허용하지 않습니다.
추신 : zip 파일을 만들어서 사본 자체의 압축을 풀 수 있습니다 (quiine). 또한 여러 개의 사본을 압축 해제 할 수도 있습니다. 따라서 파일을 영원히 재귀 적으로 압축 해제하면 가능한 최대 크기는 무한대입니다. 유일한 제한 사항은 각 반복마다 최대 1032까지 증가 할 수 있다는 것입니다.
PPS 1032 그림은 zip의 파일 데이터가 분리되어 있다고 가정합니다. zip 파일 형식의 단점 중 하나는 아카이브의 파일을 나열하고 파일 데이터로 오프셋하는 중앙 디렉토리가 있다는 것입니다. 동일한 데이터를 가리키는 파일 항목을 여러 개 만들면 중첩 없이도 압축률이 훨씬 높아지지만 파서는 이러한 zip 파일을 거부 할 수 있습니다.