Ich habe mehrere Ordner mit einer Größe von etwa 8 GB. Zusammen enthalten diese Ordner etwa 60 GB Daten. Ich kann diese Ordner auf zwei Arten komprimieren: entweder einzeln, indem ich für jeden ein komprimiertes Archiv erstelle, oder alle zusammen in einem einzigen großen komprimierten Archiv.
Allgemein gesagt,vorausgesetzt, dass alle zu komprimierenden Daten vom gleichen Typ sind und der verwendete Komprimierungsalgorithmus derselbe ist (und dass mir auch die zum Dekomprimieren der größeren Datei benötigte Zeit egal ist), wird dann die eine oder andere Methode zu einer besseren Komprimierung führen als die andere, oder wird die Gesamtgröße der komprimierten Dateien in den beiden Szenarien tendenziell gleich sein?
Antwort1
Ist die Komprimierung in einem großen Archiv besser als die Komprimierung einzelner Ordner?Nicht unbedingt.
Nur wenn das Archivsolide Kompression. Ein nicht-solides Archiv (wie ein Zip-Archiv) komprimiert Dateien einzeln. Dadurch können Sie einzelne Dateien problemlos aus dem Archiv dekomprimieren. Außerdem können Sie Dateien zum Archiv hinzufügen, ohne alles erneut komprimieren zu müssen.
Bei soliden Archiven ist das alles viel schwieriger: Um eine Datei ganz am Ende des Streams zu dekomprimieren, muss alles dekomprimiert werden (obwohl es nicht unbedingt auf die Festplatte geschrieben werden muss). Beim Hinzufügen einer Datei muss der Algorithmus auch alles durchgehen.
Es gibt jedoch einen Mittelweg: die Verwendung von „festen Blöcken“. Dadurch muss der Archivierer nicht immer die gesamte Datei verarbeiten, sondern nur einen Teil davon.
In der 7-Zip-GUI ist es diese Option:
Ohne Berücksichtigung der zu komprimierenden Daten ist es ganz einfach:
- Nicht solide: Schneller interaktiver Zugriff, schlechteste Komprimierung
- Feste Blöcke: Etwas effizienter interaktiver Zugriff, bessere Komprimierung
- Solide: Kein interaktiver Zugriff, beste Komprimierung
Abhängig vom zu erwartenden Zugriffsverhalten sollte eine geeignete Variante ausgewählt werden.
Antwort2
Obwohl es unmöglich ist, dies mit absoluter Sicherheit zu sagen, sollte ein größeres Archiv theoretisch zu einer kleineren Archivgröße führen, da mehr Datenblöcke als repetitiv gefunden werden können. Dies setzt voraus, dass die Daten so homogen sind, wie Sie sagen.
Es ist jedoch durchaus möglich, dass bestimmte Ordner Dateien mit mehr ähnlichen Datenblöcken enthalten und sich daher als eigenes Archiv besser komprimieren lassen.
Der einzige Weg, um herauszufinden, welche Methode die beste ist, besteht darin, beide Methoden auszuprobieren.
Antwort3
Das einzelne Archiv wird fast immer kleiner sein, allerdings nicht aus dem Grund, den Sie denken.
Einfach ausgedrückt: Wenn Sie nur ein Archiv haben, verschwenden Sie keinen Platz mit mehreren Archivdatei-Headern. Es gibt einen Mindestbetrag an Speicherplatz, den eine Archivdatei benötigt, um ein gültiges Archiv zu sein, und Sie benötigen letztendlich mit jedem Archiv, das Sie erstellen, so viel Speicherplatz. Die einzige weit verbreitete Ausnahme hiervon ist das cpio
Format, das keinen Header für das Archiv selbst hat, sondern nur Header pro Datei.
Realistischer wäre es,normalerweiseSie erhalten eine mindestens genauso gute Komprimierungsrate, wenn Sie nur ein Archiv statt mehrerer verwenden, und mit einigen Archivern kann sie sogar noch besser sein (zum Beispiel zpaq
funktioniert Deduplizierunginnerhalbdas Archiv, daher kann es viel Platz sparen, wenn viele Daten dupliziert sind).
Bevor Sie sich jedoch dazu entscheiden, müssen Sie sich noch eine weitere Frage stellen: Ist der Mehraufwand, der durch die Verwaltung eines einzigen großen Archivs anstelle mehrerer kleinerer entsteht, die Platzersparnis wert? Je nachdem, wo Sie die Daten speichern, kann es wirtschaftlicher sein, nur die kleineren Archive zu verwenden, insbesondere wenn Sie wahrscheinlich immer nur einen der Ordner gleichzeitig benötigen.
Insgesamt hat Keltari jedoch recht. Der einzige Weg, dies sicher herauszufinden, besteht darin, es zu testen.