Login
Newsletter
Werbung

So, 21. November 2004, 00:00

Zip kann einpacken

Das Kompressionsformat 7-Zip

Das Kompressionsformat 7-Zip ist das derzeit wohl beste allgemeine Kompressionsformat. Es übertrifft alle konkurrierenden Formate wie ZIP, ACE und RAR bei weitem und hat noch einen weiteren grundlegenden Vorteil: Dateiformat und Implementierung sind frei.

ZIP ist obsolet

7-Zip Logo

Hans-Joachim Baader (hjb)

7-Zip Logo

Es begann mit einem Zip-Archiv, das ich mit WinZip erstellt hatte. Als ich das Archiv unter Linux lesen wollte, mußte ich feststellen, daß dieses Archiv mit seiner Größe von 3 GB mit den gängigen Programmen nicht lesbar war. Nicht einmal das Inhaltsverzeichnis wurde angezeigt.

Letztlich basieren fast alle Tools zur Bearbeitung von Zip-Dateien unter Linux auf der freien Info-Zip-Implementierung. Diese ist zu dem von PkWare dereinst entwickelten Zip-Format weitgehend kompatibel, aber nicht ganz: Eine Erweiterung des Formates, die Dateigrößen über 2 GB zuläßt, ist in Info-Zip noch nicht implementiert. Diese Erweiterung ist nach Meinung der Verantwortlichen von Info-Zip (siehe FAQ) nur ein übler Hack und löst die grundlegenden Probleme des Zip-Formates nicht. Einige dieser Probleme sind:

  • Die letzte Datei im Zip-Archiv muß einen Offset kleiner als 4 GB haben; dies beschränkt die praktisch nutzbare Größe des Archivs, dazu können manche Implementierungen weitere Einschränkungen haben
  • Die Kompressionsrate ist schlecht im Vergleich zu moderneren Verfahren
  • Zu schwache Verschlüsselung
  • Schlecht designte Unterstützung von »Extra-Feldern« und anderem
  • Zeitstempel werden lediglich mit einer Auflösung von 2s gespeichert
  • Mittelmäßige Robustheit

Ergo, das Zip-Format ist obsolet, doch was sind die Alternativen?

Familienbande

Die Archivierung von Dateien und deren Komprimierung kann prinzipiell in einem Programm vereint oder auf zwei Programme aufgeteilt sein. Letzteres ist unter Unix und Linux durch komprimierte tar-Archive sehr populär, in der DOS- und Windowswelt dagegen eher unbekannt. Historisch hatten Unix und Linux aber auch immer gute Unterstützung für Packprogramme, die Archivierung und Komprimierung in einem erledigten. Ich nenne hier nur die Formate zoo, arc und lha als Beispiele, die aber allesamt obsolet sind.

Wie gesagt, verwendet man unter Linux meistens tar, was wegen der fehlenden Robustheit des Archivformates ein Fehler ist. cpio ist prinzipiell die bessere Wahl, besonders mit der Option -H crc. Hier hat man die nötige Robustheit durch eine Checksumme über das Archiv. Eine dazu kompatible Alternative ist pax. Eine weitere Alternative, die ich gelegentlich benutzt habe, ist afio. Bei afio werden alle Dateien einzeln gepackt, so daß im Falle eines Datenfehlers nur eine Datei verloren ist.

Das aus tar, cpio oder pax resultierende Archiv muß dann noch gepackt werden, wozu eigentlich nur zwei Alternativen zur Verfügung stehen: gzip mit seiner mäßigen, mit zip vergleichbaren Kompression oder bzip2, das zwar etwas besser komprimiert, aber auch gleich mindestens dreimal so lang wie gzip braucht.

Andere Programme, die eine einzelne Datei komprimieren, braucht man hier nicht in Betracht zu ziehen:

  • squeeze: obsolet
  • compress und ncompress: schlechte Kompression, obsolet
  • bzip: Vorläufer von bzip2, sehr langsam und obsolet
  • lzop: Sehr schnell, aber keine so gute Kompression

Somit wäre eigentlich cpio.bz2 das Format der Wahl, Eilige würden stattdessen cpio.gz verwenden. Doch wie sieht es mit der Portabilität aus? Windows unterstützt von Haus aus bestenfalls mal ZIP. Das populäre WinZip kennt Archive mit tar, cpio jedoch nicht, und bei bzip2 gibt es den Geist ganz auf.

Hier kommt vielleicht die Rettung: 7-Zip.

7-Zip, Aufzucht und Pflege

7-Zip wurde wohl zuerst für Windows geschrieben. Es verfügt aber, im Gegensatz beispielsweise zu WinZip, nicht über ein eigene Packer-Shell. Stattdessen klinkt es sich in den Dateimanager, also den Explorer oder den eigenen 7-Zip Dateimanager, ein. Dort stehen dann Kontextmenüs zum Erstellen oder Bearbeiten von Archiven zur Verfügung. Für uns Linux-Benutzer ist das uninteressant bis auf die Möglichkeit, daß es unter KDE, GNOME usw. genauso funktionieren könnte. Wenn dereinst entsprechende Unterstützung dafür vorhanden ist...

Features

7-Zip ist modular aufgebaut, d.h. es unterstützt verschiedene Datei- und Kompressionsformate durch Plugins. Das eigene, innovative Format von 7-Zip nennt sich LZMA und stellt eine Weiterentwicklung und Verbesserung des bekannten LZ77-Algorithmus dar. Nach Angaben auf der Homepage komprimiert dieses Format bis zu 70% besser als andere Formate und selbst bei Verwendung des ZIP-Formates holt es noch 2-10% mehr heraus.

Die Homepage nennt außerdem folgende weitere Features von 7-Zip:

  • Verschlüsselung mit AES-256
  • Maximale Dateigröße irgendwo bei 16000000000 GB
  • Kompression der Archiv-Header
  • Dateinamen in Unicode
  • Das Entpacken von LZMA-Archiven benötigt nur 5 KB Code und wenig Speicher und unterstützt Multithreading

Versionen

Für Linux gibt es eine separate Kommandozeilenversion, die offenbar von einem unabhängigen Programmierer geschrieben wurde und auf SourceForge zu finden ist. Die nachfolgenden Ausführungen beziehen sich auf Version 0.91.

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung