Rzip
# Rzip

Die freie Software rzip ist ein Programm zur Datenkompression, welche durch eine extreme Fenstergröße auffällt, nämlich 900 MiB. Sie wurde von Andrew Tridgell im Rahmen seiner Dissertation programmiert. Mit lrzip wurde das Grundprinzip von rzip sogar noch massiv ausgebaut, und Linux-typische Anwendungsmöglichkeiten wie Pipelining wurden hinzugefügt.

## Hintergrund

Das bekannte gzip beispielsweise arbeitet mit Fenstern von 32 KiB. Dies ist für reine Textdateien noch sehr geeignet. Andere Software wie bzip2 arbeiten mit Blöcken von 100 bis 900 KiB und erreichen so deutlich bessere Kompressionsraten. rzip verbessert diesen Umstand um mehrere Größenordnungen.

rzip sucht innerhalb von 900 MiB großen Fenstern nach Daten-Sequenzen, die mehrfach vorkommen, und komprimiert diese nach einer Wörterbuchmethode. Diese aufbereiteten Daten werden nachher mit bzip2 verarbeitet, mit der herkömmlichen Blockgröße von 900 KiB:

* Burrows-Wheeler-Transformation
* Move-to-front-Algorithmus
* Huffman-Kodierung

Trotz dieser Verkettung von rzip und bzip2 läuft die Kompression viel schneller ab – das langsamere bzip2, dessen erster und zweiter Schritt sowieso keine Kompression durchführt, muss nämlich kaum noch redundante Daten verarbeiten.

Ein Vorteil von rzip liegt darin, zum Beispiel PDF-Dateien deutlich besser komprimieren zu können. Kommen in einer PDF-Datei mehrere identische eingefügte Bilder vor, wird eine Software wie gzip wegen seiner recht geringen Fenstergröße diese nicht komprimieren können, da sie zu weit auseinander liegen. Ein Nachteil besteht darin, dass rzip sehr viel Arbeitsspeicher benötigt und etwa ohne Pipelining nicht so vielseitig eingesetzt werden kann.

### Anwendungsbeispiel

Die Komprimierung einer Datei wird beispielsweise mit

durchgeführt. "-k" sorgt für das Behalten der unkomprimierten Datei, "-v" gibt weitere Informationen an, "-P" zeigt den Fortschritt in Prozent an, und "-9" sorgt für die beste, aber dafür langsamste Kompression. Beliebige Optionen können aber auch weggelassen werden.

Entpacken der komprimierten Datei findet mit

statt.

## Weiterentwicklungen

### lrzip

lrzip ist eine Weiterentwicklung von rzip, programmiert von Con Kolivas unter Verwendung des rzip-Programmcodes. Sie bietet mehr Kompressionsverfahren, eine optionale Verschlüsselung der Daten, Pipelining und eine Wörterbuchgröße, die nicht einmal durch den vorhandenen Arbeitsspeicher begrenzt ist – lrzip kann also mit der Verwendung von immer größeren Arbeitsspeichern stets Schritt halten. Das Dateiformat von lrzip ist allerdings nicht mit rzip kompatibel.

Zunächst benutzt lrzip das gleiche Verfahren wie rzip – nämlich die Reduktion redundanter Daten mit einer Wörterbuchmethode. Diese bereinigten Daten werden dann aber nicht mit Bzip2, sondern LZMA weiter komprimiert.

**Anwendungsbeispiel**

-b sorgt für die Kompression mit Bzip2, -U hebt jede Beschränkung der Wörterbuchgröße auf, und -e verschlüsselt die Datei. Anstelle '-b' können auch die Optionen

* -g für gzip oder -l für LZO (schnell, dafür schlechte Kompression)
* -z für ZPAQ (langsam, dafür hohe Kompression)
* -n für keine weitere Kompression

angewendet werden. Wird keine Kompressionsmethode festgelegt, wird LZMA verwendet. Beliebige Optionen können auch weggelassen werden. Mit unbeschränkter Wörterbuchgröße kann zwar die Kompressionsrate bei sehr großen Dateien (vor allem Dateien, die größer sind als der verfügbare Arbeitsspeicher) verbessert werden, aber gleichzeitig kann dies zu einer deutlichen Verlangsamung führen. Die Verschlüsselung findet mit AES-128 und Cipher Block Chaining statt.

Dekompression erfolgt mit

### rzip64

rzip64 verwendet mehrere Prozessorkerne gleichzeitig, und die Datenkompression kann jederzeit unterbrochen werden. Dabei gehen bereits komprimierte Daten auch dann nicht verloren, wenn der Rechner abgeschaltet und neu gestartet wird. Dies erleichtert die Kompression massiver Datenmengen, da der Computer jederzeit für wichtigere Arbeiten verwendet werden kann.

