AA_cars_thoursie_sxc_1081307.jpg

© Thoursie, sxc.hu

Zip und Zop

Aktuelle Komprimierprogramme in der Übersicht

06.09.2010
Ob fürs Archiv oder für die Webseite zum Download: Alternativen zu Gzip und Bzip2 sparen noch mehr Platz oder arbeiten schneller.

Fast jeder Linux-Anwender stolpert früher oder später über Dateien mit der Endung .gz und .bz2. Gzip und Bzip2 gehören zu den gängigen Programme, um unter Linux eine einzelne Datei zu komprimieren. Dabei spart Bzip2 in der Regel etwas mehr Platz, braucht dafür aber länger. Es gibt jedoch Alternativen: Die parallelen Bzip-Varianten Pbzip, Lbzip2 sowie Neulinge wie Xz, Lzip, Lzma, Lzop und Exoten wie Kgb, Paq8L, Zp, Zpaq oder Lrzip.

Die verlustfreie Datenkompression basiert darauf, die Informationsdichte zu erhöhen und Wiederholungen zusammenzufassen. Die in diesem Artikel verwendeten Komprimier-Programme verwenden dazu unterschiedliche Algorithmen (siehe Tabelle "Verwendete Kompressionsalgorithmen").

Verwendete Kompressionsalgorithmen

Programm Algorithmus Multithreading Mehrere Dateien?
7zip primär LZMA, aber auch viele andere Unix-Port p7zip zumindest für LZMA nein ja, einzeln, mit -ms=on zusammen
Gzip Deflate nein nein
Bzip2 Burrows-Wheeler, Move to Front, Huffman nein nein
Pbzip2, lbzip2 wie Bzip2 ja nein
Xz LZMA2, optional andere nein nein
Zip Deflate, optional auch bzip2 und LZMA nein ja, einzeln
Lzip LZMA nein nein
Lrzip LZMA, optional auch LZO und ZPAQ nein ja, mit lrztar
Lzma LZMA nein nein
Rar LZ und PPM nein ja, zusammen
Kgb PAQ6 nein ja, zusammen
Paq8l PAQ8 nein ja, zusammen
Zp ZPAQ, vorkompiliert nein ja, zusamen und einzeln
Zpaq ZPAQ nein ja, zusammen und einzeln

Kurz und prägnant

Ein typischer deutscher Text besteht aus maximal 26 Klein-, 26 Groß-Buchstaben, ein paar Umlauten und ein paar Satzzeichen. Die Zeichenkodierung Latin 1 verwendet für jedes Zeichen ein Byte, also 8 Bit; das neuere UTF-8 bis zu 4 Byte. Eigentlich reichen für 32 oder 64 Zeichen fünf oder sechs Bits. Ein einfaches Komprimier-Programm könnte also ermitteln, wieviele unterschiedliche Byte-Werte eine Datei enthält, und für diese eine neue Kodierungstabelle mit weniger Bits anlegen.

Die Huffmann-Kodierung arbeitet nach diesem Prinzip, geht aber noch einen Schritt weiter und verwendet abhängig von der Häufigkeit eines Zeichens eine unterschiedlich lange Bitfolge [1]. So kodiert sie den häufig vorkommen Buchstaben E zum Beispiel mit der Bitfolge 10 (eins null), während sie für den selteneren Buchstaben Y vielleicht 11010 (eins eins null eins null) verwendet.

Auch Bzip2 verwendet die Huffman-Kodierung. Es bringt die Daten jedoch vorher blockweise in eine Reihenfolge, in der gleiche Symbole häufiger direkt hintereinanderkommen, und sortiert diese häufigen Symbole an den Anfang, damit diese kleinere Werte erhalten[2]. Die blockbasierte Arbeitsweise eignet sich gut für das Aufteilen in Threads.

Wörterbücher

Anders arbeiten Verfahren, die anhand eines Wörterbuches Sequenzen durch kürzere Sequenzen ersetzen. Die Algorithmen der Lempel-Ziv-Familie wie LZ77, Lempel-Ziv-Storer-Szymanski (LZSS), LZ78, Lempel-Ziv-Welch (LZW), Lempel-Ziv-Markow (LZMA) und Lempel-Ziv-Oberhumer (LZO) arbeiten nach diesem Prinzip.

Das älteste dieser Verfahren, LZ77 kodiert zum Beispiel das Wort "PAPAYA" wie folgt: "P" anhängen und weiter, "A" anhängen und weiter, die letzten beiden Buchstaben nochmal und "Y" anhängen, "A" anhängen [3]. Je größer der Bereich für das Suchen nach Wiederholungen desto effizienter arbeitet der Algorithmus. Allerdings wächst damit die Größe des Wörterbuches, was das Auffinden von Einträgen verlangsamt.

Die anderen Varianten modifizieren den Algorithmus, um unter anderem mit größeren Wörterbüchern höhere Informationsdichten zu erzielen – bis auf LZO, das auf hohe Geschwindigkeiten beim Packen und vor allem beim Entpacken optimiert ist. Die Verfahren LZ78 und das im GIF-Bildformat verwendete LZW waren bis zum Jahre 2004 in einigen Ländern patentiert und kamen daher in freier Software selten zum Einsatz.

Besonders effizient arbeitet das neuere LZMA, das Wahrscheinlichkeiten für zukünftige Bitfolgen ermittelt und große Wörterbücher unterstützt. Das PNG-Format verwendet wie Zip das Deflate-Verfahren, das auch für OpenDocument-Dokumente, wie sie OpenOffice.org erstellt, zum Einsatz kommt. Es kombiniert die LZ77-Variante LZSS mit der Huffman-Kodierung.

Rar verwendet Prediction by Partial Matching (PPM), um einzelne Bits vorherzusagen. Die Verfahren der PAQ-Familie verwenden dafür an verschiedene Dateitypen wie Text, Bildformate, Tabelle und ausführbare Programme angepasste Verfahren [5]. Sie arbeiten symmetrisch, benötigen also für Kompression und Dekompression etwa die gleiche Zeit.

Die Verfahren der PAQ8-Familie treiben den Aufwand mit dem Einsatz eines neuronales Netzes auf die Spitze [6],[6],[7]. Der schnellere Nachfolger Zpaq schreibt eine Beschreibung des Algorithmus in die Ausgabe-Datei, um das Problem mit der Vielzahl unterschiedlicher, zueinander inkompatibler PAQ-Versionen zu lösen.

Einige Pack-Programme bieten Multithreading oder fassen mehrere Dateien in einem Archiv zusammen. Während Zip dabei jede Datei einzeln komprimiert, verwenden Programme wie Rar und auf Wunsch auch 7-Zip für alle Dateien ein gemeinsames Wörterbuch, um eine höhere Packdichte zu erzielen.

Ein Archivierer wie Tar ergänzt Komprimier-Programme, die nur einzelne Dateien unterstützen, um diese Funktion. So fasst tar -cvf texte.tar *.txt alle Dateien mit der Endung .txt in das Archiv texte.tar zusammen, das gzip texte.tar als texte.tar.gz komprimiert. Mit der entsprechenden Option leitet Tar die zusammengefügten Dateien automatisch an Gzip, Bzip2, Xz, Lzop, Lzip oder Lzma weiter (Tabelle "Tar-Optionen").

Tar-Optionen

Programm Kurze Option Lange Option Tar-Version
Gzip -z --gzip ab 1.11.2, März 1993
Bzip2 -j --bzip2 ab 1.13.6, August 1999, als -j ab 1.13.18, Januar 2001
Xz --J --xz ab 1.22.90, Mai 2009
Lzip - --lzip ab 1.23, März 2010
Lzop - --lzop ab 1.20.90, Juni 2006
Lzma - --lzma ab 1.19.1, Oktober 2007

Über die Option -I beziehungsweise --use-compress-program verwenden Sie ein anderes Komprimierprogramm an. Mit der ab Version 1.19.1 verfügbaren Option -a oder --auto-compress ermittelt Tar das Format anhand des Archivnamens automatisch. Beim Entpacken erledigen das aktuelle Tar-Versionen ohne diese Option. Mehr zum Zusammenfassen mehrerer Dateien liefert Howto im Web [8].

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Gut verpackt
    Archivierungsprogramme gibt es wie Sand am Meer; die schnellsten Vertreter ihrer Art nutzen Sie auf der Kommandozeile: Mit kurzen Befehlen packen Sie Ihre Daten zusammen und wieder aus oder archivieren ganze Verzeichnishierarchien.
  • Mit Z Archive einfacher packen und entpacken
  • Suche in komprimierten Dateien und Archiven
    Über die Kommandozeile flink in komprimierten Dateien und Archiven zu suchen, spart viel Zeit. Die richtigen Tools dazu bringt praktisch jedes Linux-System von Haus aus mit.
  • gzip, bzip2 und tar
    Archivierungsprogramme gibt es wie Sand am Meer; die schnellsten Vertreter ihrer Art nutzen Sie auf der Kommandozeile: Mit kurzen Befehlen packen Sie Ihre Daten zusammen und wieder aus oder archivieren ganze Verzeichnishierarchien.
  • K-tools
    In den K-splittern dieser Ausgabe stellen wir Ihnen mit Kleandisk ein Tool vor, mit dem Sie sich wieder ein wenig Platz auf Ihrer übervollen Platte verschaffen können. Doch wieso sollte man es überhaupt so weit kommen lassen? Da das Vollschreiben der Platte nicht nötig ist, gehört dieser Artikel ganz einem Programm namens Karchiver, das Ihnen dabei hilft, liebgewordene Daten und Dateien einfach zu komprimieren.
Kommentare

Infos zur Publikation

title_2014_09

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 4 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...
o2 surfstick software für ubuntu?
daniel soltek, 15.07.2014 18:27, 1 Antworten
hallo zusammen, habe mir einen o2 surfstick huawei bestellt und gerade festgestellt, das der nic...