Compress - LinkFang.de





Compress


compress (/usr/bin/compress) ist ein Packprogramm unter UNIXen und UNIX-ähnlichen Betriebssystemen. Seine Funktion wie auch sein Verhalten ist im POSIX-Standard (und damit auch in der Single UNIX Specification und der Norm IEEE 1003.1) festgelegt.[1] Es bildet mit seinem Gegenstück uncompress (/usr/bin/uncompress) die übliche Methode, Archive platzsparend abzulegen.

Arbeitsweise

Auf Systemen, die den Lempel-Ziv-Algorithmus nicht unterstützen, verändert compress die - als Argument übergebenen - Dateien nicht, sondern bricht mit einem Error Level größer 2 ab. Ebenfalls zu einem Abbruch mit Fehlermeldung kommt es, wenn die Dateierweiterung .Z die durch die Kernel-Konstante NAME_MAX festgelegte maximale Namenslänge überschreiten lassen würde.

Auf allen anderen Systemen werden die Dateien gepackt und durch die gepackte Datei ersetzt, deren Namen um ein angehängtes .Z erweitert wird. Reicht die Berechtigung des ausführenden Prozesses dazu aus, so werden Berechtigungen und Besitzer dabei erhalten. Diese Dateien können mit dem Programm uncompress (/usr/bin/uncompress) wieder entpackt werden, wobei uncompress die angehängte Dateiendung .Z wieder entfernt.

Wie auch gzip und bzip2 komprimiert compress ausschließlich einzelne Dateien. Sollen mehrere Dateien oder gar ganze Directory-Hierarchien zusammengefasst werden, so wird es typischerweise mit einem Archivierungsprogramm (tar, cpio, backup, etc.) zusammen eingesetzt, dessen Ausgabe anschließend komprimiert werden kann.

Patentrechtliche Erwägungen

Der POSIX-Standard legt fest, daß compress Dateien nach dem adaptiven Lempel-Ziv-Algorithmus (auch: LZC, einer Variante des LZW-Algorithmus) bearbeitet. Dieser Algorithmus (genauer eigentlich: der zugrundeliegende Algorithmus LZ78) wie auch seine Erweiterung durch Terry A. Welch wurde bis 2003 (in Japan bis 2004) durch US-amerikanische Patente[2][3] geschützt, die an die Sperry Corporation ausgegeben wurden.

Alternativen

Diese Abhängigkeit von einem proprietären Verfahren war mit ein Grund für die Entwicklung der Alternativen gzip wie auch bzip2, die beide auf ähnlichen, allerdings gemeinfreien, Kompressionsverfahren mit variablen Zeigern basieren. Das GNU-Betriebssystem verwendet deshalb gzip (GNU-zip) als Ersatz für compress. gzip kann die mit compress erzeugten Dateien zwar lesen und entpacken, die Kompression wird jedoch wegen der dazu verwendeten (ehemals) patentierten Verfahren nicht unterstützt.

Hinweise zur Verwendung, Beispiele

Für gewöhnlich nimmt compress einen oder mehrere Dateinamen als Argument entgegen und ersetzt diese Dateien direkt im Filesystem durch ihre komprimierte Version. Mit dem Switch -c wird die komprimierte Version stattdessen auf stdout ausgegeben und der Filesystem-Inhalt nicht verändert. Dies kann einerseits genutzt werden, um komprimierte Backups auf allerlei externen Geräten (Bandlaufwerke, etc.) abzulegen (der Datenstrom wird dann einem geeigneten Treiberprogramm über eine Pipeline zur Verfügung gestellt), oder um die sonst anfallende Löschung der Ausgangsdateien zu umgehen:

# compress -c /path/to/input > /path/to/output.Z

Weiters bietet der Switch -c N die Möglichkeit, die Kompression(-srate) zu beeinflussen: N ist dabei die Anzahl der maximal zu verwendenden Bits für einen Code (Werte zwischen 9 und 14 werden unterstützt). Längere Codes ermöglichen dabei bessere Kompression bei gleichzeitig steigendem Rechenaufwand.

Einzelnachweise

  1. compress-Spezifikation der Open Group. Abgerufen am 12. Mai 2013 (english).
  2. US Patentschrift Nr. 4464650. Abgerufen am 12. Mai 2013 (english).
  3. US Patentschrift Nr. 4558302. Abgerufen am 12. Mai 2013 (english).

Kategorien: Datenkompression | Unix-Betriebssystemkomponente | Unix-Software

Quelle: Wikipedia - http://de.wikipedia.org/wiki/Compress (Vollständige Liste der Autoren des Textes [Versionsgeschichte])    Lizenz: CC-by-sa-3.0

Änderungen: Alle Bilder mit den meisten Bildunterschriften wurden entfernt. Ebenso alle zu nicht-existierenden Artikeln/Kategorien gehenden internen Wikipedia-Links (Bsp. Portal-Links, Redlinks, Bearbeiten-Links). Entfernung von Navigationsframes, Geo & Normdaten, Mediadateien, gesprochene Versionen, z.T. ID&Class-Namen, Style von Div-Containern, Metadaten, Vorlagen, wie lesenwerte Artikel. Ansonsten sind keine Inhaltsänderungen vorgenommen worden. Weiterhin kann es durch die maschinelle Bearbeitung des Inhalts zu Fehlern gerade in der Darstellung kommen. Darum würden wir jeden Besucher unserer Seite darum bitten uns diese Fehler über den Support mittels einer Nachricht mit Link zu melden. Vielen Dank!

Stand der Informationen: August 201& - Wichtiger Hinweis: Da die Inhalte maschinell von Wikipedia übernommen wurden, ist eine manuelle Überprüfung nicht möglich. Somit garantiert LinkFang.de nicht die Richtigkeit und Aktualität der übernommenen Inhalte. Sollten die Informationen mittlerweile fehlerhaft sein, bitten wir Sie darum uns per Support oder E-Mail zu kontaktieren. Wir werden uns dann innerhalb von spätestens 10 Tagen um Ihr Anliegen kümmern. Auch ohne Anliegen erfolgt mindestens alle drei Monate ein Update der gesamten Inhalte.