Vergleiche die Komprimierung: gzipping einzelner Dateien gegenüber gzipping tar derselben Dateien

319
arifogel

Stellen Sie sich ein hypothetisches Archivformat vor, das unter den Umschlägen Folgendes ausführt, wenn eine Liste der zu packenden Dateien angegeben wird:

  1. gzip jede Datei einzeln
  2. Tar die gzips zusammen

Vergleichen Sie dies mit traditionellem Teer, gefolgt von GZIP.

Unter welchen Umständen führt die erste Methode zu einer besseren Komprimierung als die letztere?

Eine benutzerfreundliche Implementierung der früheren Methode würde einen schnelleren Zugriff auf einzelne gepackte Dateien sowie einen sofortigen Zugriff auf den Index ermöglichen. Ich wundere mich daher über die Bedingungen, unter denen diese Vorteile durch eine mögliche Verringerung der Kompression ausgeglichen werden, da der Inhalt nicht als Ganzes betrachtet wird.

0

1 Antwort auf die Frage

0
cybernard
  1. Einzelne komprimierte Dateien haben jeweils eigene Header und reduzieren so die Komprimierung, indem sie die Anzahl der Header erhöhen. Jeder Header ist klein, vielleicht einige hundert Bytes, aber sie summieren sich.

  2. Bei Komprimierungstechniken werden Wörterbücher verwendet. Das Platzieren von Wörterbüchern in jeder Datei erhöht auch den Aufwand. Mehrere Dateien verwenden Teile des gleichen Wörterbuchs, um die Gesamtdateigröße zu reduzieren.

  3. Daten, die entweder nicht komprimiert werden können oder die einen sehr geringen Anteil haben, haben einen vernachlässigbaren Effekt, wenn sie einzeln komprimiert werden.

  4. Die Zeit, die zum Komprimieren erforderlich ist, dauert etwas länger, da das Programm angehalten werden muss, alles auf die Festplatte geschrieben und eine neue Datei (neuer Header, Wörterbuch usw.) für jede Datei erstellt werden muss, statt nur Daten an eine Datei anzuhängen.

  5. Eine große Anzahl ähnlicher Dateien, z. B. Wochen, in denen Protokolldateien komprimiert wurden, teilen Wörterbücher und sparen Platz.

  6. Jedes Dateisystem verwendet Speichereinheiten gleicher Größe, in vielen Fällen 4k, und ein Teil dieser 4k wird für jede Datei verschwendet.

Bis Sie sich mit Tausenden oder Zehntausenden von Dateien befassen, sind die gesparten oder verloren gegangenen Beträge bei beiden Verfahren nicht viel.