Wie kann ich die beste Auswahl des Archivformats zum Komprimieren von Dateien bewerten?


24

Im Allgemeinen habe ich Folgendes beobachtet:

  • Linux-y-Dateien oder -Tools verwenden bzip2 oder gzip zum Verteilen von Archiven
  • Windows-y-Dateien oder -Tools verwenden ZIP zum Verteilen von Archiven
  • Viele Benutzer verwenden 7-Zip zum Erstellen und Verteilen ihrer eigenen Archive

Fragen:

  • Was sind die Vor- und Nachteile dieser Formate, die offen zu sein scheinen? Wann / warum sollte ich eine (z. B. 7-Zip) einer anderen (z. B. ZIP) vorziehen?
  • Warum scheint der obige Trend anzuhalten, obwohl dies alles tragbare Formate sind? Gibt es besondere Vorteile bei der Verwendung eines bestimmten Archivformats auf einer bestimmten Plattform?



@Sathya, @Andreas: Danke für die Links, die hilfreich sind und Teile meiner Frage beantworten. :)
Mehrdad

1
Die Komprimierung ist ein ziemlich komplexes Gebiet, und kein Algorithmus kann für alles optimale Ergebnisse liefern. Außerdem können Sie Ressourcen einsetzen, um bessere Ergebnisse zu erzielen, aber auch einen Algorithmus, der in viel kürzerer Zeit fast genauso gut durchgeführt werden kann. Einige Algorithmen konzentrieren sich darauf, schnell und speicherfreundlich zu sein, andere darauf, die kleinstmögliche Datei zu erstellen, unabhängig davon, wie lange dies dauert oder ob Sie dafür 12 GB RAM benötigen (nicht übertreiben).
Phoshi

1
@Phoshi, das sollte eine Antwort sein.
Yitzchak

Antworten:


16

Es stehen eine Vielzahl von Komprimierungsformaten und -methoden zur Verfügung, einige komprimieren überhaupt nicht und speichern eine Reihe von Dateien in einem Archiv. Andere neuere experimentelle Komprimierungsprogramme ( PAQ- basiert) sind so konzipiert, dass sie so aggressiv wie möglich komprimieren. unabhängig von der Zeit, die zur Durchführung dieser Operation benötigt wird.

Sie müssen die Funktionen bewerten, die Sie für Ihre Auswahl der Komprimierungsmethode benötigen, und auch den Kontext berücksichtigen, in dem sie verwendet werden.

Zu den verschiedenen Funktionen und Überlegungen gehören:

  • Komprimierungsfähigkeit - Verkleinert es die Datei erheblich genug?
  • Ease-of-use - Wenn die Datei an einem anderen Benutzer geht, wird das Archiv leicht zu extrahieren oder wird es erfordert mehr Software installiert werden?
  • Passwortschutz und / oder Verschlüsselung - Sind diese Sicherheitsmaßnahmen erforderlich?
  • Unterstützung für mehrere Volumes - Wenn das Zielmedium die Aufteilung der Datei in geeignete Abschnitte erfordert, wird dies vom Format elegant unterstützt. Zum Beispiel 650 MB für eine CD.
  • Reparieren und Wiederherstellen - Wenn die Datei teilweise beschädigt wird, bietet sie einen Wiederherstellungsdatensatz zur Unterstützung der Wiederherstellung von Daten an?
  • Unicode-Unterstützung - Unterstützt der Archivierer internationale Dateinamen oder nur Standard-ASCII?
  • Systemanforderungen - Moderne Kompressoren wie 7-Zip bieten die Möglichkeit, die Komprimierungseffizienz durch Verwendung eines größeren Wörterbuchs zu steigern (ein Wörterbuch ist eine Referenz für häufig wiederholte Daten in einer komprimierten Datei). Dies erhöht jedoch den Speicherverbrauch sowohl bei der Komprimierung als auch Dekomprimierungszeit.
  • Selbstentpackungsunterstützung - Kann das Archiv in eine ausführbare Datei gerollt werden, die jedem, der sie verwenden möchte, eine einfache Verwendung bietet? (Denken Sie auch daran, dass Sie einen Self-Extractor nur für eine einzelne Plattform erstellen können. Im Allgemeinen funktioniert ein Windows-Self-Extractor unter Linux nicht standardmäßig, es sei denn, Sie führen eine Kompatibilitätsebene wie Wine durch.)
  • Dateisystemattribute - Speichert der Kompressor relevante Metadaten und Berechtigungen des Dateisystems, die zum Zeitpunkt der Extraktion möglicherweise erhalten werden sollten?

Im Allgemeinen ist ZIP das allgegenwärtigste Format, aber Größen über 4 GB werden im Allgemeinen (wenn überhaupt) nicht unterstützt, die Sicherheitsunterstützung wird im Allgemeinen als unzureichend angesehen (das Standardkennwort kann durch einen Nur-Text-Angriff gefährdet werden, und eine weitere Verschlüsselung ist möglich im Allgemeinen als inoffizielle Ableitung des Formats von kommerziellen ZIP-Softwareanbietern implementiert).

Abgesehen davon bieten die meisten anderen gängigen Formate Unterstützung für alle Betriebssysteme, indem mehr Software installiert wird.

Meine persönliche Wahl ist 7-Zip , da es eine großartige und flexible Komprimierung bietet. Trotzdem mit einer eigenartigen Benutzeroberfläche unter Windows. Es gibt Dekomprimierungsprogramme für Linux und Mac OS X (obwohl standardmäßig keine grafische Benutzeroberfläche verwendet wird).


3
Wenn das Archiv für die Verteilung bestimmt ist, ist es auch wichtig, Ihre Zielgruppe zu berücksichtigen und ein Format zu verwenden, das standardmäßig auf ihrer Plattform unterstützt wird. Die Zugänglichkeit kann in diesem Fall wichtiger sein als die anderen Überlegungen.
Hammar

+1 danke für die Information, obwohl es noch besser gewesen wäre zu erwähnen, welche Formate diese Aufzählungspunkte unterstützen. :)
Mehrdad

Ich war versucht, aber es gibt eine Vielzahl von verfügbaren Formaten, deren Auflistung lange dauern würde. Wikipedia hat eine gute Feature-Matrix mit Komprimierungsformaten, die helfen kann: en.wikipedia.org/wiki/Comparison_of_archive_formats
Ruairi Fullam

1
Die Geschichte lehrt eine wichtige Lektion, wenn es um selbstextrahierende Archivdateien geht. Es gibt selbstextrahierende Archive von vor zwei Jahrzehnten, die nicht mehr selbstextrahiert werden können, weil auf ihren Computern keine MS / PC-DOS-Programme ausgeführt werden können oder weil die Selbstextrahierungsprogramme aufgrund von Prozessoränderungen abstürzen oder weil die selbstextrahierenden Programme Extraktoren beschweren sich, dass Discs voll sind, wenn sie nicht voll sind, da sie nicht erwarten, dass Discs so groß sind, oder ...
JdeBP

Dieser Punkt ist sicherlich umstritten, ich bin auf dieses spezielle Problem nicht gestoßen, aber ich kann sehen, dass es auftritt; Ich nehme an, es ist alles eine Frage des Endziels der Erstellung des Archivs und der erwarteten Langlebigkeit der verwendeten Dateien. Wenn Sie ein altes Archiv haben, das sich nur schwer aus der DOS-Ära extrahieren lässt, können Sie DOSBox verwenden oder bei Bedarf sogar eine VM erstellen.
Ruairi Fullam

8

Eines fällt mir ein (zweijähriger) Blogbeitrag von Jeff Atwood ein: Dateikomprimierung im Multi-Core-Zeitalter . In diesem Artikel findet er, dass bzip2 7-zip übertrifft, wenn mehr als zwei Kerne ausgeführt werden.


+1 omg! Ich wusste das nicht. Das Kompressionsverhältnis scheint sich jedoch nicht zu lohnen. :)
Mehrdad

2
Dieser Beitrag ist mehr als 2 Jahre alt. Funktioniert 7-zip jetzt nicht besser mit mehr als zwei Kernen?
Cregox

BZIP2 komprimiert effizienter über mehrere Kerne, da es in Blöcke von 100-900 KB komprimiert und somit Blöcke über separate Kerne verteilen kann. Die Komprimierungseffizienz geht jedoch verloren, da diese Blöcke als voneinander verschieden angesehen werden.
Ruairi Fullam

4

Für Ihre erste Frage ist 7-Zip ein Archivierungsprogramm, das viele Algorithmen zum Komprimieren und Dekomprimieren von Daten verwenden kann.

Stellen Sie bei Ihrer zweiten Frage sicher, dass die Plattform Tools unterstützt, die das angegebene Format unterstützen. Zum Beispiel würde ich vermeiden, RAR auf einem Mac zu verwenden. Es ist zwar möglich, kostenlose Hilfsprogramme zu verwenden, es fehlt ihnen jedoch die wesentlich umfangreichere Oberfläche, über die Windows-Hilfsprogramme, die RAR unterstützen, verfügen (meiner Erfahrung nach).


Ich persönlich hasse die grafischen rar-Programme und benutze immer die Kommandozeile, auch unter Windows.
CarlF

4

Wie bereits erwähnt, hängt die Auswahl eines bestimmten Komprimierungsformats stark von der Verwendung und dem beabsichtigten Publikum ab.

  • Die Archive .tar.gz und tar.bz2 eignen sich ideal für die Verwendung auf Linux-Systemen (und als Erweiterung für die gemeinsame Nutzung von Dateien mit Linux-Benutzern), da die Tools tar, gzip und bzip2 auf der Plattform weitgehend allgegenwärtig sind und das Format .tar voll ist Unterstützung für Unix-Berechtigungen und andere plattformspezifische Eigenschaften. Die Wahl zwischen gzip und bzip2 zur Komprimierung des Tar-Archivs ist hauptsächlich eine Entscheidung über das Verhältnis von Geschwindigkeit zu Komprimierung, wobei bzip2 kleinere Dateien liefert, aber mit einer viel langsameren Komprimierungsgeschwindigkeit. Zu den Nachteilen dieser Formate gehört die geringere Kompatibilität mit Windows und die (potenzielle) Notwendigkeit, das gesamte Archiv zu dekomprimieren, um eine einzelne Datei zu extrahieren.

  • ZIP-Archive können auf den meisten Plattformen mit nativen Tools extrahiert werden. Daher ist dies eine ideale Wahl, um ein Archiv an einen nicht-technischen Benutzer zu senden, der mit der Installation von Archivierungssoftware von Drittanbietern wie 7-Zip nicht zufrieden ist. Die Komprimierungsstufe ist nicht so gut wie bei fortgeschrittenen Algorithmen und unterstützt keine Unix-Berechtigungen. Sie ist jedoch ein hervorragendes Format, wenn Sie beispielsweise ein Archiv mit Urlaubsfotos an Ihre Großmutter senden möchten. ZIP bietet auch einen grundlegenden Kennwortschutz und kann eine Datei schnell von einer beliebigen Stelle im Archiv extrahieren.

  • 7-Zip ist gut, wenn Sie die bestmöglichen Komprimierungsverhältnisse wünschen. Wie ZIP unterstützt es keine Unix-Dateiberechtigungen oder -Eigentumsrechte und wird auch nicht standardmäßig auf den meisten Plattformen installiert, wodurch die Verwendung etwas aufwändiger wird. Unter Windows kann es sich jedoch lohnen, wenn die Komprimierungsrate wichtig ist. In einer Linux-Umgebung ist es besser, die Komprimierungstools "xz" oder "lzma" zusammen mit "tar" zu verwenden, die genau wie "gzip" und "bzip2" funktionieren, aber den fortgeschritteneren LZMA-Algorithmus wie 7 verwenden -Postleitzahl.


2

Nur als Beispiel verwende ich die genannten Formate in diesen Fällen:

  • Textdateien (insbesondere Protokolle): bz2
  • Sammlung der zu verteilenden Dateien (zB Quellcode): gz (tar.gz really).
  • Verschiedene Dateien: 7zip. Ich kann fast alles sehr effizient komprimieren. Plattformübergreifende, quelloffene, stabile, schlanke Datei- (Header- und Daten-) Verschlüsselung, ... Können Sie noch etwas verlangen? :)

Ich vermeide RAR vollständig und wenn ich eine RAR-Datei von jemandem erhalte, den ich kenne, fordere ich ihn / sie auf, dieses Format nicht mehr zu verwenden, da es proprietär ist und er / sie möglicherweise nicht lizenzierte Software verwendet (die meisten Leute laden die Testversion von WinRAR herunter und verwenden sie weiterhin) es für immer).

PS: Ich verwende Ubuntu (hauptsächlich) und Windows (sowohl Dual Boot als auch VirtualBox).


1

Es gibt mindestens vier verschiedene Jobs, die oft miteinander verwechselt werden, weil sie von gängigen Tools integriert werden:

  1. Archivierung: Die Möglichkeit, mehrere Dateien (einschließlich Metadaten) zu einer einzigen Datei zu kombinieren und dabei so viele Dinge wie möglich zu bewahren. In der Linux / Unix-Welt erfolgt die Archivierung traditionell im TAR-Dateiformat.
  2. Komprimierung: Die Möglichkeit, die Größe eines Binärdatenstroms verlustfrei zu minimieren. In der Linux / Unix-Welt wird dies traditionell von GZip und BZip2 durchgeführt.
  3. Verschlüsselung: Die Fähigkeit, Daten mit Schlüsseln zu verschlüsseln
  4. Prüfsumme: Die Fähigkeit, Fehler zu erkennen (und möglicherweise zu korrigieren).

Die Allgegenwart von .tar.gz und .tar.bz entspricht der Unix-Philosophie, dass kleine Werkzeuge einen einzigen Job gut erledigen und nur ein einziges Werkzeug, das alles erledigt. Das TAR-Dateiformat unterstützt keine Komprimierung oder Verschlüsselung, kann jedoch von jedem Komprimierer (einschließlich .tar.zip oder .tar.7z) weiter komprimiert werden. Die Aufgabe von GZip und BZip2 besteht einfach darin, einen Dateistream in einen anderen Dateistream zu komprimieren. Die Komprimierungsebene muss sich nicht darum kümmern, wie Metadaten, Verschlüsselung oder Prüfsumme erhalten bleiben. Im Laufe der Zeit wurden jedoch einige Abkürzungen im tarProgramm vorgenommen, um die Arbeit mit einem Kompressor bequemer zu gestalten.

Im zip- und 7z-Dateiformat werden diese separaten Jobs von einem einzigen Programm in einem einzigen Super-Dateiformat ausgeführt.

Warum scheint der obige Trend anzuhalten, obwohl dies alles tragbare Formate sind? Gibt es besondere Vorteile bei der Verwendung eines bestimmten Archivformats auf einer bestimmten Plattform?

Da dies so gemacht wurde, werden Programmquellcodes traditionell als .tar.gz oder .tar.bz2 verteilt, da das Beibehalten von Dateiberechtigungen, Änderungszeiten usw. für verschiedene zum Programmieren verwendete Tools (z. B. make) wichtig ist.

Der separate Archivierungs- und Komprimierungsschritt funktioniert seit Jahren sehr gut, hat den klaren Vorteil, dass Archivierung und Komprimierung frei kombiniert werden können, und sein Nachteil (ein zweistufiger Komprimierungsprozess) kann durch die Entwicklung intelligenterer Tools leicht umgangen werden ( Das modernste Linux-Komprimierungsprogramm komprimiert direkt nach .tar.gz oder .tar.bz2, wobei der Zwischenschritt ausgeblendet wird.

Es gibt keinen triftigen Grund, zu anderen Dateiformaten zu wechseln, neuere Kompressoren haben keine wesentlich bessere Kompressionsrate, um einen Bruch der Tradition zu rechtfertigen, und Teer kann alles gut genug bewahren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.