Zum Inhalt springen

compress

aus Wikipedia, der freien Enzyklopädie

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.<ref name="posix">{{#if:|{{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}| |}}}}{{#if:|{{{autor}}}: }}{{#if:|{{#if:compress-Spezifikation der Open Group|[{{#invoke:Vorlage:Internetquelle|archivURL|1={{#invoke:URLutil|getNormalized|1={{{archiv-url}}}}}}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel=compress-Spezifikation der Open Group}}]{{#if:| ({{{format}}})}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}|{{#if:https://pubs.opengroup.org/onlinepubs/007904875/utilities/compress.html%7C{{#if:{{#invoke:TemplUtl%7Cfaculty%7C}}%7C{{#invoke:Vorlage:Internetquelle%7CTitelFormat%7Ctitel={{#invoke:WLink%7CgetEscapedTitle%7C1=compress-Spezifikation der Open Group}}}}|[{{#invoke:URLutil|getNormalized|1=https://pubs.opengroup.org/onlinepubs/007904875/utilities/compress.html}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{#invoke:WLink|getEscapedTitle|1=compress-Spezifikation der Open Group}}}}]}}{{#if:| ({{{format}}}{{#if:{{#if: 2013-05-12 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}

          | )
          | {{#if:{{#ifeq:en|de||{{#if:en|1}}}}| ; 
              | )}}}}}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}}}{{#if:https://pubs.opengroup.org/onlinepubs/007904875/utilities/compress.html%7C{{#if:{{#invoke:URLutil%7CisResourceURL%7C1=https://pubs.opengroup.org/onlinepubs/007904875/utilities/compress.html}}%7C%7C}}}}{{#if:compress-Spezifikation der Open Group|{{#if:{{#invoke:WLink|isValidLinktext|1=compress-Spezifikation der Open Group|lines=0}}||}}}}{{#if: | In: {{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{{werk}}}}}}}{{#if: | {{{hrsg}}}{{#if: |,|{{#if: 2013-05-12 | {{#if:{{#invoke:TemplUtl|faculty|}}|;|,}}}}}}}}{{#if: | {{#if:{{#invoke:DateTime|format|{{{datum}}}|noerror=1}}
            |{{#invoke:DateTime|format|{{{datum}}}|T._Monat JJJJ}}
            |{{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, datum={{{datum}}}|class=Zitationswartung}} }}{{#if: |,|{{#if: 2013-05-12 | {{#if:{{#invoke:TemplUtl|faculty|}}|;|,}}}}}}}}{{#if: | S. {{{seiten}}}{{#if: |,|{{#if: 2013-05-12 | {{#if:{{#invoke:TemplUtl|faculty|}}|;|,}}}}}}}}{{#if: {{#invoke:TemplUtl|faculty|}}| {{#if:|{{#if:|archiviert|ehemals}}|{{#if:|Archiviert|Ehemals}}}} {{#if:|vom|im}} Vorlage:Referrer{{#if:{{#invoke:TemplUtl|faculty|}}| (nicht mehr online verfügbar)}}{{#if: | am {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}|{{{archiv-datum}}}{{#if:89604||(?)}}}}}}{{#if: 2013-05-12|;}}}}{{#if: 2013-05-12| {{#if:{{#invoke:TemplUtl|faculty|}}|abgerufen|Abgerufen}} {{#switch: {{#invoke:Str|len| {{#invoke:DateTime|format| 2013-05-12 |ISO|noerror=1}} }}
       |4=im Jahr
       |7=im
       |10=am
       |#default={{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, abruf=2013-05-12|class=Zitationswartung}} }} {{#invoke:DateTime|format|2013-05-12|T._Monat JJJJ}}
    | {{#invoke:TemplUtl|failure|1=Vorlage:Internetquelle | abruf=2026-MM-TT ist Pflichtparameter}} }}{{#if:{{#ifeq:en|de||{{#if:en|1}}}}|{{#if:{{#if: 2013-05-12 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}
       |  (
       | {{#if: | |  (}}
       }}{{#ifeq:{{#if:en|en|de}}|de||
          {{#invoke:Multilingual|format|en|slang=!|split=[%s,]+|shift=m|separator=, }}}}{{#if: |{{#ifeq:{{#if:en|en|de}}|de||, }}{{{kommentar}}}}})}}{{#if: {{#if: 2013-05-12 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}} }}en|{{#if: |: {{
 #if: 
 | {{
     #ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
     | Vorlage:Str trim
     | {{#invoke:Vorlage:lang|flat}}
     }}
 | {{#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
     | „Vorlage:Str trim“
     | {{#invoke:Text|quote
         |1={{#if: 
              | {{#invoke:Vorlage:lang|flat}}
              | {{#invoke:Vorlage:lang|flat}} }}
         |2={{#if: {{#invoke:TemplUtl|faculty|}}|de-CH|de}}
         |3=1}} }}

}}{{#if:

   |  (<templatestyles src="Person/styles.css" />{{#if:  | :  }}{{#if:  | , deutsch: „“ }})
   | {{#if: 
       |  ({{#if:  | , deutsch: „“ }})
       | {{#if:  |  (deutsch: „“) }}
 }}

}}{{#if: {{{zitat}}}

   | {{#if: 
       | {{#if: {{{zitat}}}
           | Vorlage:": Text= und 1= gleichzeitig, bzw. Pipe zu viel }} }}
   | Vorlage:": Text= fehlt }}{{#if:  | {{#if: {{#invoke:Text|unstrip|{{{ref}}}}}
             | Vorlage:": Ungültiger Wert: ref=
             | {{{ref}}} }}

}}|.{{#if:{{#invoke:TemplUtl|faculty|}}|{{#if:||{{#ifeq: | JaKeinHinweis |{{#switch:

   |0|=Vorlage:Toter Link/Core{{#if: https://pubs.opengroup.org/onlinepubs/007904875/utilities/compress.html
       | {{#if:  | [1] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: 
           | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }}
         }}
       |   (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.)
     }}{{#switch: 
         |no|0|=
         |#default={{#if:  ||  }}
    }}{{#invoke:TemplatePar|check
         |opt      = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
    }}{{#if: https://pubs.opengroup.org/onlinepubs/007904875/utilities/compress.html
      | {{#if:{{#invoke:URLutil|isWebURL|https://pubs.opengroup.org/onlinepubs/007904875/utilities/compress.html}}
          || {{#if:  ||  }} 
        }}
      | {{#if: 
           | {{#if:  ||  }}
           | {{#if:  ||  }}
        }}
    }}{{#if: 
       | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}}
             || {{#if:  ||  }} 
         }}
    }}{{#switch: deadurl
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=https://pubs.opengroup.org/onlinepubs/007904875/utilities/compress.html Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. )  {{#if: 
            | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }}
         }}Vorlage:Toter Link/Core{{#switch: 
          |no|0|=
          |#default= {{#if:  ||  }}
        }}{{#invoke:TemplatePar|check
         |all      = inline= url=
         |opt      = datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
       }}{{#if: https://pubs.opengroup.org/onlinepubs/007904875/utilities/compress.html
       | {{#if:{{#invoke:URLutil|isWebURL|https://pubs.opengroup.org/onlinepubs/007904875/utilities/compress.html}}
          || {{#if:  ||  }} 
        }}
    }}{{#if: 
         | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}}
             || {{#if:  ||  }} 
           }}
    }}{{#switch: deadurl
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}[https://pubs.opengroup.org/onlinepubs/007904875/utilities/compress.html }}|{{#switch: 
   |0|=Vorlage:Toter Link/Core{{#if: https://pubs.opengroup.org/onlinepubs/007904875/utilities/compress.html
       | {{#if:  | [2] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: 
           | {{#if:  | | Vorlage:Toter Link/archivebot }}
         }}
       |   (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.)
     }}{{#switch: 
         |no|0|=
         |#default={{#if:  ||  }}
    }}{{#invoke:TemplatePar|check
         |opt      = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
    }}{{#if: https://pubs.opengroup.org/onlinepubs/007904875/utilities/compress.html
      | {{#if:{{#invoke:URLutil|isWebURL|https://pubs.opengroup.org/onlinepubs/007904875/utilities/compress.html}}
          || {{#if:  ||  }} 
        }}
      | {{#if: 
           | {{#if:  ||  }}
           | {{#if:  ||  }}
        }}
    }}{{#if: 
       | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}}
             || {{#if:  ||  }} 
         }}
    }}{{#switch: 
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=https://pubs.opengroup.org/onlinepubs/007904875/utilities/compress.html Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. )  {{#if: 
            | {{#if:  | | Vorlage:Toter Link/archivebot }}
         }}Vorlage:Toter Link/Core{{#switch: 
          |no|0|=
          |#default= {{#if:  ||  }}
        }}{{#invoke:TemplatePar|check
         |all      = inline= url=
         |opt      = datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
       }}{{#if: https://pubs.opengroup.org/onlinepubs/007904875/utilities/compress.html
       | {{#if:{{#invoke:URLutil|isWebURL|https://pubs.opengroup.org/onlinepubs/007904875/utilities/compress.html}}
          || {{#if:  ||  }} 
        }}
    }}{{#if: 
         | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}}
             || {{#if:  ||  }} 
           }}
    }}{{#switch: 
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}[https://pubs.opengroup.org/onlinepubs/007904875/utilities/compress.html }} }}}}}}}}}}{{#if:|
        {{#invoke:Vorlage:Internetquelle|archivBot|stamp={{{archiv-bot}}}|text={{#if:|Vorlage:Webarchiv/archiv-bot}}

}}}}{{#invoke:TemplatePar|check |all= url= titel= |opt= autor= hrsg= format= sprache= titelerg= werk= seiten= datum= abruf= zugriff= abruf-verborgen= archiv-url= archiv-datum= archiv-bot= kommentar= zitat= AT= CH= offline= |cat= {{#ifeq: 0 | 0 | Wikipedia:Vorlagenfehler/Vorlage:Internetquelle}} |template= Vorlage:Internetquelle |format=0 |preview=1 }}</ref> 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, dass 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 geschützt, die an die Sperry Corporation ausgegeben wurden.<ref>{{#if:{{#ifexpr:{{#if:US|0|1}} or {{#if:4464650|0|1}}|1}}|Fehlender Parameter {{#if:US||„Land“{{#if:4464650|| und }}}}{{#if:4464650||„V-Nr“}}|}}{{#if: {{#invoke:Expr|TemplateBooland}}|{{#ifeq:|Patentanmeldung|Patentanmeldung|{{#ifeq:|Gebrauchsmuster|Gebrauchsmuster|Patent}}}} {{#if:{{#invoke:TemplUtl|faculty|}}|US4464650A|{{#switch: {{{DB}}} | DEPATIS =US4464650A | WIPO = US4464650 | Google = US4464650A | #default =US4464650A }}}}{{#if:Apparatus and method for compressing data signals and restoring the compressed data signals1981-08-101984-08-07Sperry CorpWillard L. Eastman, Abraham Lempel, Jacob Ziv, Martin Cohn|:|.}}{{#if:Apparatus and method for compressing data signals and restoring the compressed data signals| Apparatus and method for compressing data signals and restoring the compressed data signals.}}{{#if:1981-08-10| Angemeldet am {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}{{#if:1984-08-07Sperry CorpWillard L. Eastman, Abraham Lempel, Jacob Ziv, Martin Cohn|,}}}}{{#if:1984-08-07|{{#if:1981-08-10| veröffentlicht am | Veröffentlicht am }}{{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}{{#if:Sperry CorpWillard L. Eastman, Abraham Lempel, Jacob Ziv, Martin Cohn|,}}}}{{#if:Sperry Corp| Anmelder: Sperry Corp{{#if:Willard L. Eastman, Abraham Lempel, Jacob Ziv, Martin Cohn|,}}}}{{#if:Willard L. Eastman, Abraham Lempel, Jacob Ziv, Martin Cohn| Erfinder: Willard L. Eastman, Abraham Lempel, Jacob Ziv, Martin Cohn}}{{#if:| ({{{Kommentar}}})}}{{#if:1981-08-101984-08-07Sperry CorpWillard L. Eastman, Abraham Lempel, Jacob Ziv, Martin Cohn|.}}}}{{#invoke:TemplatePar|match |template= Vorlage:Patent |cat= {{#ifeq: 0 | 0 | Wikipedia:Vorlagenfehler/Vorlage:Patent}} |format= |preview=@@@ |1=Land= ABC+ |2=V-Nr= /^[0-9A-Z]+$/ |3=Titel= * |4=Erfinder= * |5=Anmelder= * |6=A-Datum= * |7=V-Datum= * |8=Typ= ASCII |9=Code= ASCII |10=Kommentar= * |11=KeinLink= ASCII |12=DB=ASCII }}</ref><ref>{{#if:{{#ifexpr:{{#if:US|0|1}} or {{#if:4558302|0|1}}|1}}|Fehlender Parameter {{#if:US||„Land“{{#if:4558302|| und }}}}{{#if:4558302||„V-Nr“}}|}}{{#if: {{#invoke:Expr|TemplateBooland}}|{{#ifeq:|Patentanmeldung|Patentanmeldung|{{#ifeq:|Gebrauchsmuster|Gebrauchsmuster|Patent}}}} {{#if:{{#invoke:TemplUtl|faculty|}}|US4558302A|{{#switch: {{{DB}}} | DEPATIS =US4558302A | WIPO = US4558302 | Google = US4558302A | #default =US4558302A }}}}{{#if:High speed data compression and decompression apparatus and method1983-06-201985-12-10Sperry CorpTerry A. Welch|:|.}}{{#if:High speed data compression and decompression apparatus and method| High speed data compression and decompression apparatus and method.}}{{#if:1983-06-20| Angemeldet am {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}{{#if:1985-12-10Sperry CorpTerry A. Welch|,}}}}{{#if:1985-12-10|{{#if:1983-06-20| veröffentlicht am | Veröffentlicht am }}{{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}{{#if:Sperry CorpTerry A. Welch|,}}}}{{#if:Sperry Corp| Anmelder: Sperry Corp{{#if:Terry A. Welch|,}}}}{{#if:Terry A. Welch| Erfinder: Terry A. Welch}}{{#if:| ({{{Kommentar}}})}}{{#if:1983-06-201985-12-10Sperry CorpTerry A. Welch|.}}}}{{#invoke:TemplatePar|match |template= Vorlage:Patent |cat= {{#ifeq: 0 | 0 | Wikipedia:Vorlagenfehler/Vorlage:Patent}} |format= |preview=@@@ |1=Land= ABC+ |2=V-Nr= /^[0-9A-Z]+$/ |3=Titel= * |4=Erfinder= * |5=Anmelder= * |6=A-Datum= * |7=V-Datum= * |8=Typ= ASCII |9=Code= ASCII |10=Kommentar= * |11=KeinLink= ASCII |12=DB=ASCII }}</ref>

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

Außerdem 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

<references />