Der Artikel erwähnt 9 Ebenen von Zip-Dateien, daher ist es nicht einfach, eine Reihe von Nullen zu komprimieren. Warum 9, warum 10 Dateien in jeder?
Zunächst einmal sagt der Wikipedia-Artikel derzeit 5 Ebenen mit jeweils 16 Dateien. Ich bin mir nicht sicher, woher die Diskrepanz kommt, aber es ist nicht so relevant. Die eigentliche Frage ist, warum überhaupt die Verschachtelung verwendet wird.
DEFLATE, die einzige allgemein unterstützte Komprimierungsmethode für Zip-Dateien *, hat ein maximales Komprimierungsverhältnis von 1032. Dies kann asymptotisch für jede sich wiederholende Sequenz von 1-3 Bytes erreicht werden. Unabhängig davon, was Sie mit einer Zip-Datei tun, solange sie nur DEFLATE verwendet, beträgt die entpackte Größe höchstens das 1032-fache der Größe der ursprünglichen Zip-Datei.
Daher ist es notwendig, verschachtelte Zip-Dateien zu verwenden, um wirklich unverschämte Komprimierungsverhältnisse zu erzielen. Wenn Sie zwei Komprimierungsschichten haben, beträgt das maximale Verhältnis 1032 ^ 2 = 1065024. Für 3 ist es 1099104768 und so weiter. Für die 5 in 42.zip verwendeten Ebenen beträgt das theoretische maximale Komprimierungsverhältnis 1170572956434432. Wie Sie sehen können, ist das tatsächliche 42.zip weit von dieser Stufe entfernt. Ein Teil davon ist der Overhead des Zip-Formats, und ein Teil davon ist, dass es ihnen einfach egal war.
Wenn ich raten müsste, würde ich sagen, dass 42.zip gebildet wurde, indem einfach eine große leere Datei erstellt und wiederholt gezippt und kopiert wurde. Es wird nicht versucht, die Grenzen des Formats zu überschreiten oder die Komprimierung zu maximieren oder so - sie haben nur willkürlich 16 Kopien pro Ebene ausgewählt. Es ging darum, ohne großen Aufwand eine große Nutzlast zu erzeugen.
Hinweis: Andere Komprimierungsformate wie bzip2 bieten viel, viel, viel größere maximale Komprimierungsverhältnisse. Die meisten Zip-Parser akzeptieren sie jedoch nicht.
PS Es ist möglich, eine Zip-Datei zu erstellen, die in eine Kopie von sich selbst (eine Quine) entpackt wird. Sie können auch eine erstellen, die in mehrere Kopien von sich selbst entpackt wird. Wenn Sie eine Datei für immer rekursiv entpacken, ist die maximal mögliche Größe daher unendlich. Die einzige Einschränkung besteht darin, dass sie bei jeder Iteration um höchstens 1032 erhöht werden kann.
PPS In der Abbildung 1032 wird davon ausgegangen, dass die Dateidaten in der Zip-Datei nicht zusammenhängend sind. Eine Besonderheit des Zip-Dateiformats besteht darin, dass es ein zentrales Verzeichnis hat, in dem die Dateien im Archiv aufgelistet und zu den Dateidaten versetzt werden. Wenn Sie mehrere Dateieinträge erstellen, die auf dieselben Daten verweisen, können Sie auch ohne Verschachtelung viel höhere Komprimierungsraten erzielen. Eine solche Zip-Datei wird jedoch wahrscheinlich von Parsern abgelehnt.