jpayne@68: '\" t jpayne@68: .\" SPDX-License-Identifier: 0BSD jpayne@68: .\" jpayne@68: .\" Authors: Lasse Collin jpayne@68: .\" Jia Tan jpayne@68: .\" jpayne@68: .\" German translation for xz-man. jpayne@68: .\" Mario Blättermann , 2015, 2019-2020, 2022-2024. jpayne@68: .\" jpayne@68: .\"******************************************************************* jpayne@68: .\" jpayne@68: .\" This file was generated with po4a. Translate the source file. jpayne@68: .\" jpayne@68: .\"******************************************************************* jpayne@68: .TH XZ 1 2024\-12\-30 Tukaani XZ\-Dienstprogramme jpayne@68: . jpayne@68: .SH BEZEICHNUNG jpayne@68: xz, unxz, xzcat, lzma, unlzma, lzcat \- .xz\- und .lzma\-Dateien komprimieren jpayne@68: oder dekomprimieren jpayne@68: . jpayne@68: .SH ÜBERSICHT jpayne@68: \fBxz\fP [\fIOption…\fP] [\fIDatei…\fP] jpayne@68: . jpayne@68: .SH BEFEHLSALIASE jpayne@68: \fBunxz\fP ist gleichbedeutend mit \fBxz \-\-decompress\fP. jpayne@68: .br jpayne@68: \fBxzcat\fP ist gleichbedeutend mit \fBxz \-\-decompress \-\-stdout\fP. jpayne@68: .br jpayne@68: \fBlzma\fP ist gleichbedeutend mit \fBxz \-\-format=lzma\fP. jpayne@68: .br jpayne@68: \fBunlzma\fP ist gleichbedeutend mit \fBxz \-\-format=lzma \-\-decompress\fP. jpayne@68: .br jpayne@68: \fBlzcat\fP ist gleichbedeutend mit \fBxz \-\-format=lzma \-\-decompress \-\-stdout\fP. jpayne@68: .PP jpayne@68: Wenn Sie Skripte schreiben, die Dateien dekomprimieren, sollten Sie stets jpayne@68: den Namen \fBxz\fP mit den entsprechenden Argumenten (\fBxz \-d\fP oder \fBxz \-dc\fP) jpayne@68: anstelle der Namen \fBunxz\fP und \fBxzcat\fP verwenden. jpayne@68: . jpayne@68: .SH BESCHREIBUNG jpayne@68: \fBxz\fP ist ein Allzweckwerkzeug zur Datenkompression, dessen jpayne@68: Befehlszeilensyntax denen von \fBgzip\fP(1) und \fBbzip2\fP(1) ähnelt. Das native jpayne@68: Dateiformat ist das \fB.xz\fP\-Format, aber das veraltete, von den jpayne@68: LZMA\-Dienstprogrammen verwendete Format sowie komprimierte Rohdatenströme jpayne@68: ohne Containerformat\-Header werden ebenfalls unterstützt. Außerdem wird die jpayne@68: Dekompression des von \fBlzip\fP verwendeten \fB.lz\fP\-Formats unterstützt. jpayne@68: .PP jpayne@68: \fBxz\fP komprimiert oder dekomprimiert jede \fIDatei\fP entsprechend des jpayne@68: gewählten Vorgangsmodus. Falls entweder \fB\-\fP oder keine Datei angegeben ist, jpayne@68: liest \fBxz\fP aus der Standardeingabe und leitet die verarbeiteten Dateien in jpayne@68: die Standardausgabe. Wenn die Standardausgabe kein Terminal ist, verweigert jpayne@68: \fBxz\fP das Schreiben komprimierter Daten in die Standardausgabe. Dabei wird jpayne@68: eine Fehlermeldung angezeigt und die \fIDatei\fP übersprungen. Ebenso jpayne@68: verweigert \fBxz\fP das Lesen komprimierter Daten aus der Standardeingabe, wenn jpayne@68: diese ein Terminal ist. jpayne@68: .PP jpayne@68: \fIDateien\fP, die nicht als \fB\-\fP angegeben sind, werden in eine neue Datei jpayne@68: geschrieben, deren Name aus dem Namen der Quell\-\fIDatei\fP abgeleitet wird jpayne@68: (außer wenn \fB\-\-stdout\fP angegeben ist): jpayne@68: .IP \(bu 3 jpayne@68: Bei der Kompression wird das Suffix des Formats der Zieldatei (\fB.xz\fP oder jpayne@68: \&\fB.lzma\fP) an den Namen der Quelldatei angehängt und so der Name der jpayne@68: Zieldatei gebildet. jpayne@68: .IP \(bu 3 jpayne@68: Bei der Dekompression wird das Suffix \fB.xz\fP, \fB.lzma\fP oder \fB.lz\fP vom jpayne@68: Dateinamen entfernt und so der Name der Zieldatei gebildet. Außerdem erkennt jpayne@68: \fBxz\fP die Suffixe \fB.txz\fP und \fB.tlz\fP und ersetzt diese durch \fB.tar\fP. jpayne@68: .PP jpayne@68: Wenn die Zieldatei bereits existiert, wird eine Fehlermeldung angezeigt und jpayne@68: die \fIDatei\fP übersprungen. jpayne@68: .PP jpayne@68: Außer beim Schreiben in die Standardausgabe zeigt \fBxz\fP eine Warnung an und jpayne@68: überspringt die \fIDatei\fP, wenn eine der folgenden Bedingungen zutreffend jpayne@68: ist: jpayne@68: .IP \(bu 3 jpayne@68: Die \fIDatei\fP ist keine reguläre Datei. Symbolischen Verknüpfungen wird nicht jpayne@68: gefolgt und diese daher nicht zu den regulären Dateien gezählt. jpayne@68: .IP \(bu 3 jpayne@68: Die \fIDatei\fP hat mehr als eine harte Verknüpfung. jpayne@68: .IP \(bu 3 jpayne@68: Für die \fIDatei\fP ist das »setuid«\-, »setgid«\- oder »sticky«\-Bit gesetzt. jpayne@68: .IP \(bu 3 jpayne@68: Der Aktionsmodus wird auf Kompression gesetzt und die \fIDatei\fP hat bereits jpayne@68: das Suffix des Zieldateiformats (\fB.xz\fP oder \fB.txz\fP beim Komprimieren in jpayne@68: das \fB.xz\fP\-Format und \fB.lzma\fP oder \fB.tlz\fP beim Komprimieren in das jpayne@68: \&\fB.lzma\fP\-Format). jpayne@68: .IP \(bu 3 jpayne@68: Der Aktionsmodus wird auf Dekompression gesetzt und die \fIDatei\fP hat nicht jpayne@68: das Suffix eines der unterstützten Zieldateiformate (\fB.xz\fP, \fB.txz\fP, jpayne@68: \&\fB.lzma\fP, \fB.tlz\fP oder \fB.lz\fP). jpayne@68: .PP jpayne@68: Nach erfolgreicher Kompression oder Dekompression der \fIDatei\fP kopiert \fBxz\fP jpayne@68: Eigentümer, Gruppe, Zugriffsrechte, Zugriffszeit und Änderungszeit aus der jpayne@68: Ursprungs\-\fIDatei\fP in die Zieldatei. Sollte das Kopieren der Gruppe jpayne@68: fehlschlagen, werden die Zugriffsrechte so angepasst, dass jenen Benutzern jpayne@68: der Zugriff auf die Zieldatei verwehrt bleibt, die auch keinen Zugriff auf jpayne@68: die Ursprungs\-\fIDatei\fP hatten. Das Kopieren anderer Metadaten wie jpayne@68: Zugriffssteuerlisten oder erweiterter Attribute wird von \fBxz\fP noch nicht jpayne@68: unterstützt. jpayne@68: .PP jpayne@68: Sobald die Zieldatei erfolgreich geschlossen wurde, wird die jpayne@68: Ursprungs\-\fIDatei\fP entfernt. Dies wird durch die Option \fB\-\-keep\fP jpayne@68: verhindert. Die Ursprungs\-\fIDatei\fP wird niemals entfernt, wenn die Ausgabe jpayne@68: in die Standardausgabe geschrieben wird oder falls ein Fehler auftritt. jpayne@68: .PP jpayne@68: Durch Senden der Signale \fBSIGINFO\fP oder \fBSIGUSR1\fP an den \fBxz\fP\-Prozess jpayne@68: werden Fortschrittsinformationen in den Fehlerkanal der Standardausgabe jpayne@68: geleitet. Dies ist nur eingeschränkt hilfreich, wenn die jpayne@68: Standardfehlerausgabe ein Terminal ist. Mittels \fB\-\-verbose\fP wird ein jpayne@68: automatisch aktualisierter Fortschrittsanzeiger angezeigt. jpayne@68: . jpayne@68: .SS Speicherbedarf jpayne@68: In Abhängigkeit von den gewählten Kompressionseinstellungen bewegt sich der jpayne@68: Speicherverbrauch zwischen wenigen hundert Kilobyte und mehreren jpayne@68: Gigabyte. Die Einstellungen bei der Kompression einer Datei bestimmen dabei jpayne@68: den Speicherbedarf bei der Dekompression. Die Dekompression benötigt jpayne@68: üblicherweise zwischen 5\ % und 20\ % des Speichers, der bei der Kompression jpayne@68: der Datei erforderlich war. Beispielsweise benötigt die Dekompression einer jpayne@68: Datei, die mit \fBxz \-9\fP komprimiert wurde, gegenwärtig etwa 65\ MiB jpayne@68: Speicher. Es ist jedoch auch möglich, dass \fB.xz\fP\-Dateien mehrere Gigabyte jpayne@68: an Speicher zur Dekompression erfordern. jpayne@68: .PP jpayne@68: Insbesondere für Benutzer älterer Systeme wird eventuell ein sehr großer jpayne@68: Speicherbedarf ärgerlich sein. Um unangenehme Überraschungen zu vermeiden, jpayne@68: verfügt \fBxz\fP über eine eingebaute Begrenzung des Speicherbedarfs, die jpayne@68: allerdings in der Voreinstellung deaktiviert ist. Zwar verfügen einige jpayne@68: Betriebssysteme über eingebaute Möglichkeiten zur prozessabhängigen jpayne@68: Speicherbegrenzung, doch diese sind zu unflexibel (zum Beispiel kann jpayne@68: \fBulimit\fP(1) beim Begrenzen des virtuellen Speichers \fBmmap\fP(2) jpayne@68: beeinträchtigen). jpayne@68: .PP jpayne@68: Die Begrenzung des Speicherbedarfs kann mit der Befehlszeilenoption jpayne@68: \fB\-\-memlimit=\fP\fIBegrenzung\fP aktiviert werden. Oft ist es jedoch bequemer, jpayne@68: die Begrenzung durch Setzen der Umgebungsvariable \fBXZ_DEFAULTS\fP jpayne@68: standardmäßig zu aktivieren, zum Beispiel jpayne@68: \fBXZ_DEFAULTS=\-\-memlimit=150MiB\fP. Die Begrenzungen können getrennt für jpayne@68: Kompression und Dekompression mittels \fB\-\-memlimit\-compress=\fP\fIBegrenzung\fP jpayne@68: und \fB\-\-memlimit\-decompress=\fP\fIBegrenzung\fP festgelegt werden. Die Verwendung jpayne@68: einer solchen Option außerhalb der Variable \fBXZ_DEFAULTS\fP ist kaum jpayne@68: sinnvoll, da \fBxz\fP in einer einzelnen Aktion nicht gleichzeitig Kompression jpayne@68: und Dekompression ausführen kann und \fB\-\-memlimit=\fP\fIBegrenzung\fP (oder \fB\-M\fP jpayne@68: \fIBegrenzung\fP) lässt sich einfacher in der Befehlszeile eingeben. jpayne@68: .PP jpayne@68: Wenn die angegebene Speicherbegrenzung bei der Dekompression überschritten jpayne@68: wird, schlägt der Vorgang fehl und \fBxz\fP zeigt eine Fehlermeldung an. Wird jpayne@68: die Begrenzung bei der Kompression überschritten, dann versucht \fBxz\fP die jpayne@68: Einstellungen entsprechend anzupassen, außer wenn \fB\-\-format=raw\fP oder jpayne@68: \fB\-\-no\-adjust\fP angegeben ist. Auf diese Weise schlägt die Aktion nicht fehl, jpayne@68: es sei denn, die Begrenzung wurde sehr niedrig angesetzt. Die Anpassung der jpayne@68: Einstellungen wird schrittweise vorgenommen, allerdings entsprechen die jpayne@68: Schritte nicht den Voreinstellungen der Kompressionsstufen. Das bedeutet, jpayne@68: wenn beispielsweise die Begrenzung nur geringfügig unter den Anforderungen jpayne@68: für \fBxz \-9\fP liegt, werden auch die Einstellungen nur wenig angepasst und jpayne@68: nicht vollständig herunter zu den Werten für \fBxz \-8\fP jpayne@68: . jpayne@68: .SS "Verkettung und Auffüllung von .xz\-Dateien" jpayne@68: Es ist möglich, \fB.xz\fP\-Dateien direkt zu verketten. Solche Dateien werden jpayne@68: von \fBxz\fP genauso dekomprimiert wie eine einzelne \fB.xz\fP\-Datei. jpayne@68: .PP jpayne@68: Es ist weiterhin möglich, eine Auffüllung zwischen den verketteten Teilen jpayne@68: oder nach dem letzten Teil einzufügen. Die Auffüllung muss aus Null\-Bytes jpayne@68: bestehen und deren Größe muss ein Vielfaches von vier Byte sein. Dies kann jpayne@68: zum Beispiel dann vorteilhaft sein, wenn die \fB.xz\fP\-Datei auf einem jpayne@68: Datenträger gespeichert wird, dessen Dateisystem die Dateigrößen in jpayne@68: 512\-Byte\-Blöcken speichert. jpayne@68: .PP jpayne@68: Verkettung und Auffüllung sind für \fB.lzma\fP\-Dateien oder Rohdatenströme jpayne@68: nicht erlaubt. jpayne@68: . jpayne@68: .SH OPTIONEN jpayne@68: . jpayne@68: .SS "Ganzzahlige Suffixe und spezielle Werte" jpayne@68: An den meisten Stellen, wo ein ganzzahliges Argument akzeptiert wird, kann jpayne@68: ein optionales Suffix große Ganzzahlwerte einfacher darstellen. Zwischen jpayne@68: Ganzzahl und dem Suffix dürfen sich keine Leerzeichen befinden. jpayne@68: .TP jpayne@68: \fBKiB\fP jpayne@68: multipliziert die Ganzzahl mit 1.024 (2^10). \fBKi\fP, \fBk\fP, \fBkB\fP, \fBK\fP und jpayne@68: \fBKB\fP werden als Synonyme für \fBKiB\fP akzeptiert. jpayne@68: .TP jpayne@68: \fBMiB\fP jpayne@68: multipliziert die Ganzzahl mit 1.048.576 (2^20). \fBMi\fP, \fBm\fP, \fBM\fP und \fBMB\fP jpayne@68: werden als Synonyme für \fBMiB\fP akzeptiert. jpayne@68: .TP jpayne@68: \fBGiB\fP jpayne@68: multipliziert die Ganzzahl mit 1.073.741.824 (2^30). \fBGi\fP, \fBg\fP, \fBG\fP und jpayne@68: \fBGB\fP werden als Synonyme für \fBGiB\fP akzeptiert. jpayne@68: .PP jpayne@68: Der spezielle Wert \fBmax\fP kann dazu verwendet werden, um den von der jpayne@68: jeweiligen Option akzeptierten maximalen Ganzzahlwert anzugeben. jpayne@68: . jpayne@68: .SS Aktionsmodus jpayne@68: Falls mehrere Aktionsmodi angegeben sind, wird der zuletzt angegebene jpayne@68: verwendet. jpayne@68: .TP jpayne@68: \fB\-z\fP, \fB\-\-compress\fP jpayne@68: Kompression. Dies ist der voreingestellte Aktionsmodus, sofern keiner jpayne@68: angegeben ist und auch kein bestimmter Modus aus dem Befehlsnamen abgeleitet jpayne@68: werden kann (der Befehl \fBunxz\fP impliziert zum Beispiel \fB\-\-decompress\fP). jpayne@68: .IP "" jpayne@68: .\" The DESCRIPTION section already says this but it's good to repeat it jpayne@68: .\" here because the default behavior is a bit dangerous and new users jpayne@68: .\" in a hurry may skip reading the DESCRIPTION section. jpayne@68: After successful compression, the source file is removed unless writing to jpayne@68: standard output or \fB\-\-keep\fP was specified. jpayne@68: .TP jpayne@68: \fB\-d\fP, \fB\-\-decompress\fP, \fB\-\-uncompress\fP jpayne@68: .\" The DESCRIPTION section already says this but it's good to repeat it jpayne@68: .\" here because the default behavior is a bit dangerous and new users jpayne@68: .\" in a hurry may skip reading the DESCRIPTION section. jpayne@68: Decompress. After successful decompression, the source file is removed jpayne@68: unless writing to standard output or \fB\-\-keep\fP was specified. jpayne@68: .TP jpayne@68: \fB\-t\fP, \fB\-\-test\fP jpayne@68: prüft die Integrität der komprimierten \fIDateien\fP. Diese Option ist jpayne@68: gleichbedeutend mit \fB\-\-decompress \-\-stdout\fP, außer dass die dekomprimierten jpayne@68: Daten verworfen werden, anstatt sie in die Standardausgabe zu leiten. Es jpayne@68: werden keine Dateien erstellt oder entfernt. jpayne@68: .TP jpayne@68: \fB\-l\fP, \fB\-\-list\fP jpayne@68: gibt Informationen zu den komprimierten \fIDateien\fP aus. Es werden keine jpayne@68: unkomprimierten Dateien ausgegeben und keine Dateien angelegt oder jpayne@68: entfernt. Im Listenmodus kann das Programm keine komprimierten Daten aus der jpayne@68: Standardeingabe oder anderen nicht durchsuchbaren Quellen lesen. jpayne@68: .IP "" jpayne@68: Die Liste zeigt in der Standardeinstellung grundlegende Informationen zu den jpayne@68: \fIDateien\fP an, zeilenweise pro Datei. Detailliertere Informationen erhalten jpayne@68: Sie mit der Option \fB\-\-verbose\fP. Wenn Sie diese Option zweimal angeben, jpayne@68: werden noch ausführlichere Informationen ausgegeben. Das kann den Vorgang jpayne@68: allerdings deutlich verlangsamen, da die Ermittlung der zusätzlichen jpayne@68: Informationen zahlreiche Suchvorgänge erfordert. Die Breite der jpayne@68: ausführlichen Ausgabe übersteigt 80 Zeichen, daher könnte die Weiterleitung jpayne@68: in beispielsweise\& \fBless\ \-S\fP sinnvoll sein, falls das Terminal nicht jpayne@68: breit genug ist. jpayne@68: .IP "" jpayne@68: Die exakte Ausgabe kann in verschiedenen \fBxz\fP\-Versionen und jpayne@68: Spracheinstellungen unterschiedlich sein. Wenn eine maschinell auswertbare jpayne@68: Ausgabe gewünscht ist, dann sollten Sie \fB\-\-robot \-\-list\fP verwenden. jpayne@68: . jpayne@68: .SS Aktionsattribute jpayne@68: .TP jpayne@68: \fB\-k\fP, \fB\-\-keep\fP jpayne@68: verhindert das Löschen der Eingabedateien. jpayne@68: .IP "" jpayne@68: Seit der \fBxz\fP\-Version 5.2.6 wird die Kompression oder Dekompression auch jpayne@68: dann ausgeführt, wenn die Eingabe ein symbolischer Link zu einer regulären jpayne@68: Datei ist, mehr als einen harten Link hat oder das »setuid«\-, »setgid«\- oder jpayne@68: »sticky«\-Bit gesetzt ist. Die genannten Bits werden nicht in die Zieldatei jpayne@68: kopiert. In früheren Versionen geschah dies nur mit \fB\-\-force\fP. jpayne@68: .TP jpayne@68: \fB\-f\fP, \fB\-\-force\fP jpayne@68: Diese Option hat verschiedene Auswirkungen: jpayne@68: .RS jpayne@68: .IP \(bu 3 jpayne@68: Wenn die Zieldatei bereits existiert, wird diese vor der Kompression oder jpayne@68: Dekompression gelöscht. jpayne@68: .IP \(bu 3 jpayne@68: Die Kompression oder Dekompression wird auch dann ausgeführt, wenn die jpayne@68: Eingabe ein symbolischer Link zu einer regulären Datei ist, mehr als einen jpayne@68: harten Link hat oder das »setuid«\-, »setgid«\- oder »sticky«\-Bit gesetzt jpayne@68: ist. Die genannten Bits werden nicht in die Zieldatei kopiert. jpayne@68: .IP \(bu 3 jpayne@68: Wenn es zusammen mit \fB\-\-decompress\fP und \fB\-\-stdout\fP verwendet wird und jpayne@68: \fBxz\fP den Typ der Quelldatei nicht ermitteln kann, wird die Quelldatei jpayne@68: unverändert in die Standardausgabe kopiert. Dadurch kann \fBxzcat\fP \fB\-\-force\fP jpayne@68: für Dateien, die nicht mit \fBxz\fP komprimiert wurden, wie \fBcat\fP(1) verwendet jpayne@68: werden. Zukünftig könnte \fBxz\fP neue Dateikompressionsformate unterstützen, jpayne@68: wodurch \fBxz\fP mehr Dateitypen dekomprimieren kann, anstatt sie unverändert jpayne@68: in die Standardausgabe zu kopieren. Mit der Option \fB\-\-format=\fP\fIFormat\fP jpayne@68: können Sie \fBxz\fP anweisen, nur ein einzelnes Dateiformat zu dekomprimieren. jpayne@68: .RE jpayne@68: .TP jpayne@68: \fB\-c\fP, \fB\-\-stdout\fP, \fB\-\-to\-stdout\fP jpayne@68: schreibt die komprimierten oder dekomprimierten Daten in die Standardausgabe jpayne@68: anstatt in eine Datei. Dies impliziert \fB\-\-keep\fP. jpayne@68: .TP jpayne@68: \fB\-\-single\-stream\fP jpayne@68: dekomprimiert nur den ersten \fB.xz\fP\-Datenstrom und ignoriert stillschweigend jpayne@68: weitere Eingabedaten, die möglicherweise dem Datenstrom jpayne@68: folgen. Normalerweise führt solcher anhängender Datenmüll dazu, dass \fBxz\fP jpayne@68: eine Fehlermeldung ausgibt. jpayne@68: .IP "" jpayne@68: \fBxz\fP dekomprimiert niemals mehr als einen Datenstrom aus \fB.lzma\fP\-Dateien jpayne@68: oder Rohdatenströmen, aber dennoch wird durch diese Option möglicherweise jpayne@68: vorhandener Datenmüll nach der \fB.lzma\fP\-Datei oder dem Rohdatenstrom jpayne@68: ignoriert. jpayne@68: .IP "" jpayne@68: Diese Option ist wirkungslos, wenn der Aktionsmodus nicht \fB\-\-decompress\fP jpayne@68: oder \fB\-\-test\fP ist. jpayne@68: .TP jpayne@68: \fB\-\-no\-sparse\fP jpayne@68: verhindert die Erzeugung von Sparse\-Dateien. In der Voreinstellung versucht jpayne@68: \fBxz\fP, bei der Dekompression in eine reguläre Datei eine Sparse\-Datei zu jpayne@68: erzeugen, wenn die dekomprimierten Daten lange Abfolgen von binären Nullen jpayne@68: enthalten. Dies funktioniert auch beim Schreiben in die Standardausgabe, jpayne@68: sofern diese in eine reguläre Datei weitergeleitet wird und bestimmte jpayne@68: Zusatzbedingungen erfüllt sind, die die Aktion absichern. Die Erzeugung von jpayne@68: Sparse\-Dateien kann Plattenplatz sparen und beschleunigt die Dekompression jpayne@68: durch Verringerung der Ein\-/Ausgaben der Platte. jpayne@68: .TP jpayne@68: \fB\-S\fP \fI.suf\fP, \fB\-\-suffix=\fP\fI.suf\fP jpayne@68: verwendet \fI.suf\fP bei der Dekompression anstelle von \fB.xz\fP oder \fB.lzma\fP jpayne@68: als Suffix für die Zieldatei. Falls nicht in die Standardausgabe geschrieben jpayne@68: wird und die Quelldatei bereits das Suffix \fI.suf\fP hat, wird eine Warnung jpayne@68: angezeigt und die Datei übersprungen. jpayne@68: .IP "" jpayne@68: berücksichtigt bei der Dekompression zusätzlich zu Dateien mit den Suffixen jpayne@68: \&\fB.xz\fP, \fB.txz\fP, \fB.lzma\fP, \fB.tlz\fP oder \fB.lz\fP auch jene mit dem Suffix jpayne@68: \&\fI.suf\fP. Falls die Quelldatei das Suffix \fI.suf\fP hat, wird dieses entfernt jpayne@68: und so der Name der Zieldatei abgeleitet. jpayne@68: .IP "" jpayne@68: Beim Komprimieren oder Dekomprimieren von Rohdatenströmen mit jpayne@68: \fB\-\-format=raw\fP muss das Suffix stets angegeben werden, außer wenn die jpayne@68: Ausgabe in die Standardausgabe erfolgt. Der Grund dafür ist, dass es kein jpayne@68: vorgegebenes Suffix für Rohdatenströme gibt. jpayne@68: .TP jpayne@68: \fB\-\-files\fP[\fB=\fP\fIDatei\fP] jpayne@68: liest die zu verarbeitenden Dateinamen aus \fIDatei\fP. Falls keine \fIDatei\fP jpayne@68: angegeben ist, werden die Dateinamen aus der Standardeingabe jpayne@68: gelesen. Dateinamen müssen mit einem Zeilenumbruch beendet werden. Ein jpayne@68: Bindestrich (\fB\-\fP) wird als regulärer Dateiname angesehen und nicht als jpayne@68: Standardeingabe interpretiert. Falls Dateinamen außerdem als jpayne@68: Befehlszeilenargumente angegeben sind, werden diese vor den Dateinamen aus jpayne@68: der \fIDatei\fP verarbeitet. jpayne@68: .TP jpayne@68: \fB\-\-files0\fP[\fB=\fP\fIDatei\fP] jpayne@68: Dies ist gleichbedeutend mit \fB\-\-files\fP[\fB=\fP\fIDatei\fP], außer dass jeder jpayne@68: Dateiname mit einem Null\-Zeichen abgeschlossen werden muss. jpayne@68: . jpayne@68: .SS "Grundlegende Dateiformat\- und Kompressionsoptionen" jpayne@68: .TP jpayne@68: \fB\-F\fP \fIFormat\fP, \fB\-\-format=\fP\fIFormat\fP jpayne@68: gibt das \fIFormat\fP der zu komprimierenden oder dekomprimierenden Datei an: jpayne@68: .RS jpayne@68: .TP jpayne@68: \fBauto\fP jpayne@68: Dies ist die Voreinstellung. Bei der Kompression ist \fBauto\fP gleichbedeutend jpayne@68: mit \fBxz\fP. Bei der Dekompression wird das Format der Eingabedatei jpayne@68: automatisch erkannt. Beachten Sie, dass Rohdatenströme, wie sie mit jpayne@68: \fB\-\-format=raw\fP erzeugt werden, nicht automatisch erkannt werden können. jpayne@68: .TP jpayne@68: \fBxz\fP jpayne@68: Die Kompression erfolgt in das \fB.xz\fP\-Dateiformat oder akzeptiert nur jpayne@68: \&\fB.xz\fP\-Dateien bei der Dekompression. jpayne@68: .TP jpayne@68: \fBlzma\fP, \fBalone\fP jpayne@68: Die Kompression erfolgt in das veraltete \fB.lzma\fP\-Dateiformat oder jpayne@68: akzeptiert nur \fB.lzma\fP\-Dateien bei der Dekompression. Der alternative Name jpayne@68: \fBalone\fP dient der Abwärtskompatibilität zu den LZMA\-Dienstprogrammen. jpayne@68: .TP jpayne@68: \fBlzip\fP jpayne@68: Akzeptiert nur \fB.lz\fP\-Dateien bei der Dekompression. Kompression wird nicht jpayne@68: unterstützt. jpayne@68: .IP "" jpayne@68: Das \fB.lz\fP\-Format wird in Version 0 und der unerweiterten Version 1 jpayne@68: unterstützt. Dateien der Version 0 wurden von \fBlzip\fP 1.3 und älter jpayne@68: erstellt. Solche Dateien sind nicht sehr weit verbreitet, können aber in jpayne@68: Dateiarchiven gefunden werden, da einige Quellpakete in diesem Format jpayne@68: veröffentlicht wurden. Es ist auch möglich, dass Benutzer alte persönliche jpayne@68: Dateien in diesem Format haben. Die Dekompressionsunterstützung für das jpayne@68: Format der Version 0 wurde mit der Version 1.18 aus \fBlzip\fP entfernt. jpayne@68: .IP "" jpayne@68: \fBlzip\fP\-Versionen ab 1.4 erstellen Dateien im Format der Version 0. Die jpayne@68: Erweiterung »Sync Flush Marker« zur Formatversion 1 wurde in \fBlzip\fP 1.6 jpayne@68: hinzugefügt. Diese Erweiterung wird sehr selten verwendet und wird von \fBxz\fP jpayne@68: nicht unterstützt (die Eingabe wird als beschädigt erkannt). jpayne@68: .TP jpayne@68: \fBraw\fP jpayne@68: Komprimiert oder dekomprimiert einen Rohdatenstrom (ohne Header). Diese jpayne@68: Option ist nur für fortgeschrittene Benutzer bestimmt. Zum Dekodieren von jpayne@68: Rohdatenströmen müssen Sie die Option \fB\-\-format=raw\fP verwenden und die jpayne@68: Filterkette ausdrücklich angeben, die normalerweise in den (hier fehlenden) jpayne@68: Container\-Headern gespeichert worden wäre. jpayne@68: .RE jpayne@68: .TP jpayne@68: \fB\-C\fP \fIPrüfung\fP, \fB\-\-check=\fP\fIPrüfung\fP jpayne@68: gibt den Typ der Integritätsprüfung an. Die Prüfsumme wird aus den jpayne@68: unkomprimierten Daten berechnet und in der \fB.xz\fP\-Datei gespeichert. Diese jpayne@68: Option wird nur bei der Kompression in das \fB.xz\fP\-Format angewendet, da das jpayne@68: \&\fB.lzma\fP\-Format keine Integritätsprüfungen unterstützt. Die eigentliche jpayne@68: Integritätsprüfung erfolgt (falls möglich), wenn die \fB.xz\fP\-Datei jpayne@68: dekomprimiert wird. jpayne@68: .IP "" jpayne@68: Folgende Typen von \fIPrüfungen\fP werden unterstützt: jpayne@68: .RS jpayne@68: .TP jpayne@68: \fBnone\fP jpayne@68: führt keine Integritätsprüfung aus. Dies ist eine eher schlechte jpayne@68: Idee. Dennoch kann es nützlich sein, wenn die Integrität der Daten auf jpayne@68: andere Weise sichergestellt werden kann. jpayne@68: .TP jpayne@68: \fBcrc32\fP jpayne@68: berechnet die CRC32\-Prüfsumme anhand des Polynoms aus IEEE\-802.3 (Ethernet). jpayne@68: .TP jpayne@68: \fBcrc64\fP jpayne@68: berechnet die CRC64\-Prüfsumme anhand des Polynoms aus ECMA\-182. Dies ist die jpayne@68: Voreinstellung, da beschädigte Dateien etwas besser als mit CRC32 erkannt jpayne@68: werden und die Geschwindigkeitsdifferenz unerheblich ist. jpayne@68: .TP jpayne@68: \fBsha256\fP jpayne@68: berechnet die SHA\-256\-Prüfsumme. Dies ist etwas langsamer als CRC32 und jpayne@68: CRC64. jpayne@68: .RE jpayne@68: .IP "" jpayne@68: Die Integrität der \fB.xz\fP\-Header wird immer mit CRC32 geprüft. Es ist nicht jpayne@68: möglich, dies zu ändern oder zu deaktivieren. jpayne@68: .TP jpayne@68: \fB\-\-ignore\-check\fP jpayne@68: verifiziert die Integritätsprüfsumme der komprimierten Daten bei der jpayne@68: Dekompression nicht. Die CRC32\-Werte in den \fB.xz\fP\-Headern werden weiterhin jpayne@68: normal verifiziert. jpayne@68: .IP "" jpayne@68: \fBVerwenden Sie diese Option nicht, außer Sie wissen, was Sie tun.\fP Mögliche jpayne@68: Gründe, diese Option zu verwenden: jpayne@68: .RS jpayne@68: .IP \(bu 3 jpayne@68: Versuchen, Daten aus einer beschädigten .xz\-Datei wiederherzustellen. jpayne@68: .IP \(bu 3 jpayne@68: Erhöhung der Geschwindigkeit bei der Dekompression. Dies macht sich meist jpayne@68: mit SHA\-256 bemerkbar, oder mit Dateien, die extrem stark komprimiert jpayne@68: sind. Wir empfehlen, diese Option nicht für diesen Zweck zu verwenden, es jpayne@68: sei denn, die Integrität der Datei wird extern auf andere Weise überprüft. jpayne@68: .RE jpayne@68: .TP jpayne@68: \fB\-0\fP … \fB\-9\fP jpayne@68: wählt eine der voreingestellten Kompressionsstufen, standardmäßig jpayne@68: \fB\-6\fP. Wenn mehrere Voreinstellungsstufen angegeben sind, ist nur die jpayne@68: zuletzt angegebene wirksam. Falls bereits eine benutzerdefinierte jpayne@68: Filterkette angegeben wurde, wird diese durch die Festlegung der jpayne@68: Voreinstellung geleert. jpayne@68: .IP "" jpayne@68: Die Unterschiede zwischen den Voreinstellungsstufen sind deutlicher als bei jpayne@68: \fBgzip\fP(1) und \fBbzip2\fP(1). Die gewählten Kompressionseinstellungen jpayne@68: bestimmen den Speicherbedarf bei der Dekompression, daher ist es auf älteren jpayne@68: Systemen mit wenig Speicher bei einer zu hoch gewählten Voreinstellung jpayne@68: schwer, eine Datei zu dekomprimieren. Insbesondere \fBist es keine gute Idee, blindlings \-9 für alles\fP zu verwenden, wie dies häufig mit \fBgzip\fP(1) und jpayne@68: \fBbzip2\fP(1) gehandhabt wird. jpayne@68: .RS jpayne@68: .TP jpayne@68: \fB\-0\fP … \fB\-3\fP jpayne@68: Diese Voreinstellungen sind recht schnell. \fB\-0\fP ist manchmal schneller als jpayne@68: \fBgzip \-9\fP, wobei aber die Kompression wesentlich besser ist. Die jpayne@68: schnelleren Voreinstellungen sind im Hinblick auf die Geschwindigkeit mit jpayne@68: \fBbzip2\fP(1) vergleichbar , mit einem ähnlichen oder besseren jpayne@68: Kompressionsverhältnis, wobei das Ergebnis aber stark vom Typ der zu jpayne@68: komprimierenden Daten abhängig ist. jpayne@68: .TP jpayne@68: \fB\-4\fP … \fB\-6\fP jpayne@68: Gute bis sehr gute Kompression, wobei der Speicherbedarf für die jpayne@68: Dekompression selbst auf alten Systemen akzeptabel ist. \fB\-6\fP ist die jpayne@68: Voreinstellung, welche üblicherweise eine gute Wahl für die Verteilung von jpayne@68: Dateien ist, die selbst noch auf Systemen mit nur 16\ MiB Arbeitsspeicher jpayne@68: dekomprimiert werden müssen (\fB\-5e\fP oder \fB\-6e\fP sind ebenfalls eine jpayne@68: Überlegung wert. Siehe \fB\-\-extreme\fP). jpayne@68: .TP jpayne@68: \fB\-7 … \-9\fP jpayne@68: Ähnlich wie \fB\-6\fP, aber mit einem höheren Speicherbedarf für die Kompression jpayne@68: und Dekompression. Sie sind nur nützlich, wenn Dateien komprimiert werden jpayne@68: sollen, die größer als 8\ MiB, 16\ MiB beziehungsweise 32\ MiB sind. jpayne@68: .RE jpayne@68: .IP "" jpayne@68: Auf der gleichen Hardware ist die Dekompressionsgeschwindigkeit ein nahezu jpayne@68: konstanter Wert in Bytes komprimierter Daten pro Sekunde. Anders jpayne@68: ausgedrückt: Je besser die Kompression, umso schneller wird üblicherweise jpayne@68: die Dekompression sein. Das bedeutet auch, dass die Menge der pro Sekunde jpayne@68: ausgegebenen unkomprimierten Daten stark variieren kann. jpayne@68: .IP "" jpayne@68: Die folgende Tabelle fasst die Eigenschaften der Voreinstellungen zusammen: jpayne@68: .RS jpayne@68: .RS jpayne@68: .PP jpayne@68: .TS jpayne@68: tab(;); jpayne@68: c c c c c jpayne@68: n n n n n. jpayne@68: Voreinst.;Wörtb.Gr;KomprCPU;KompSpeich;DekompSpeich jpayne@68: \-0;256 KiB;0;3 MiB;1 MiB jpayne@68: \-1;1 MiB;1;9 MiB;2 MiB jpayne@68: \-2;2 MiB;2;17 MiB;3 MiB jpayne@68: \-3;4 MiB;3;32 MiB;5 MiB jpayne@68: \-4;4 MiB;4;48 MiB;5 MiB jpayne@68: \-5;8 MiB;5;94 MiB;9 MiB jpayne@68: \-6;8 MiB;6;94 MiB;9 MiB jpayne@68: \-7;16 MiB;6;186 MiB;17 MiB jpayne@68: \-8;32 MiB;6;370 MiB;33 MiB jpayne@68: \-9;64 MiB;6;674 MiB;65 MiB jpayne@68: .TE jpayne@68: .RE jpayne@68: .RE jpayne@68: .IP "" jpayne@68: Spaltenbeschreibungen: jpayne@68: .RS jpayne@68: .IP \(bu 3 jpayne@68: Wörtb.Größe ist die Größe des LZMA2\-Wörterbuchs. Es ist jpayne@68: Speicherverschwendung, ein Wörterbuch zu verwenden, das größer als die jpayne@68: unkomprimierte Datei ist. Daher ist es besser, die Voreinstellungen \fB\-7\fP … jpayne@68: \fB\-9\fP zu vermeiden, falls es keinen wirklichen Bedarf dafür gibt. Mit \fB\-6\fP jpayne@68: und weniger wird üblicherweise so wenig Speicher verschwendet, dass dies jpayne@68: nicht ins Gewicht fällt. jpayne@68: .IP \(bu 3 jpayne@68: KomprCPU ist eine vereinfachte Repräsentation der LZMA2\-Einstellungen, jpayne@68: welche die Kompressionsgeschwindigkeit beeinflussen. Die Wörterbuchgröße jpayne@68: wirkt sich ebenfalls auf die Geschwindigkeit aus. Während KompCPU für die jpayne@68: Stufen \fB\-6\fP bis \fB\-9\fP gleich ist, tendieren höhere Stufen dazu, etwas jpayne@68: langsamer zu sein. Um eine noch langsamere, aber möglicherweise bessere jpayne@68: Kompression zu erhalten, siehe \fB\-\-extreme\fP. jpayne@68: .IP \(bu 3 jpayne@68: KompSpeich enthält den Speicherbedarf des Kompressors im jpayne@68: Einzel\-Thread\-Modus. Dieser kann zwischen den \fBxz\fP\-Versionen leicht jpayne@68: variieren. jpayne@68: .IP \(bu 3 jpayne@68: DekompSpeich enthält den Speicherbedarf für die Dekompression. Das bedeutet, jpayne@68: dass die Kompressionseinstellungen den Speicherbedarf bei der Dekompression jpayne@68: bestimmen. Der exakte Speicherbedarf bei der Dekompression ist geringfügig jpayne@68: größer als die Größe des LZMA2\-Wörterbuchs, aber die Werte in der Tabelle jpayne@68: wurden auf ganze MiB aufgerundet. jpayne@68: .RE jpayne@68: .IP "" jpayne@68: Der Speicherbedarf einiger der zukünftigen Multithread\-Modi kann dramatisch jpayne@68: höher sein als im Einzel\-Thread\-Modus. Mit dem Standardwert von jpayne@68: \fB\-\-block\-size\fP benötigt jeder Thread 3*3*Wörtb.Gr plus KompSpeich oder jpayne@68: DekompSpeich. Beispielsweise benötigen vier Threads mit der Voreinstellung jpayne@68: \fB\-6\fP etwa 660 bis 670 MiB Speicher. jpayne@68: .TP jpayne@68: \fB\-e\fP, \fB\-\-extreme\fP jpayne@68: verwendet eine langsamere Variante der gewählten jpayne@68: Kompressions\-Voreinstellungsstufe (\fB\-0\fP … \fB\-9\fP), um hoffentlich ein etwas jpayne@68: besseres Kompressionsverhältnis zu erreichen, das aber in ungünstigen Fällen jpayne@68: auch schlechter werden kann. Der Speicherverbrauch bei der Dekompression jpayne@68: wird dabei nicht beeinflusst, aber der Speicherverbrauch der Kompression jpayne@68: steigt in den Voreinstellungsstufen \fB\-0\fP bis \fB\-3\fP geringfügig an. jpayne@68: .IP "" jpayne@68: Da es zwei Voreinstellungen mit den Wörterbuchgrößen 4\ MiB und 8\ MiB gibt, jpayne@68: verwenden die Voreinstellungsstufen \fB\-3e\fP und \fB\-5e\fP etwas schnellere jpayne@68: Einstellungen (niedrigere KompCPU) als \fB\-4e\fP beziehungsweise \fB\-6e\fP. Auf jpayne@68: diese Weise sind zwei Voreinstellungen nie identisch. jpayne@68: .RS jpayne@68: .RS jpayne@68: .PP jpayne@68: .TS jpayne@68: tab(;); jpayne@68: c c c c c jpayne@68: n n n n n. jpayne@68: Voreinst.;Wörtb.Gr;KomprCPU;KompSpeich;DekompSpeich jpayne@68: \-0e;256 KiB;8;4 MiB;1 MiB jpayne@68: \-1e;1 MiB;8;13 MiB;2 MiB jpayne@68: \-2e;2 MiB;8;25 MiB;3 MiB jpayne@68: \-3e;4 MiB;7;48 MiB;5 MiB jpayne@68: \-4e;4 MiB;8;48 MiB;5 MiB jpayne@68: \-5e;8 MiB;7;94 MiB;9 MiB jpayne@68: \-6e;8 MiB;8;94 MiB;9 MiB jpayne@68: \-7e;16 MiB;8;186 MiB;17 MiB jpayne@68: \-8e;32 MiB;8;370 MiB;33 MiB jpayne@68: \-9e;64 MiB;8;674 MiB;65 MiB jpayne@68: .TE jpayne@68: .RE jpayne@68: .RE jpayne@68: .IP "" jpayne@68: Zum Beispiel gibt es insgesamt vier Voreinstellungen, die ein 8\ MiB großes jpayne@68: Wörterbuch verwenden, deren Reihenfolge von der schnellsten zur langsamsten jpayne@68: \fB\-5\fP, \fB\-6\fP, \fB\-5e\fP und \fB\-6e\fP ist. jpayne@68: .TP jpayne@68: \fB\-\-fast\fP jpayne@68: .PD 0 jpayne@68: .TP jpayne@68: \fB\-\-best\fP jpayne@68: .PD jpayne@68: sind etwas irreführende Aliase für \fB\-0\fP beziehungsweise \fB\-9\fP. Sie werden jpayne@68: nur zwecks Abwärtskompatibilität zu den LZMA\-Dienstprogrammen jpayne@68: bereitgestellt. Sie sollten diese Optionen besser nicht verwenden. jpayne@68: .TP jpayne@68: \fB\-\-block\-size=\fP\fIGröße\fP jpayne@68: teilt beim Komprimieren in das \fB.xz\fP\-Format die Eingabedaten in Blöcke der jpayne@68: angegebenen \fIGröße\fP in Byte. Die Blöcke werden unabhängig voneinander jpayne@68: komprimiert, was dem Multi\-Threading entgegen kommt und Zufallszugriffe bei jpayne@68: der Dekompression begrenzt. Diese Option wird typischerweise eingesetzt, um jpayne@68: die vorgegebene Blockgröße im Multi\-Thread\-Modus außer Kraft zu setzen, aber jpayne@68: sie kann auch im Einzel\-Thread\-Modus angewendet werden. jpayne@68: .IP "" jpayne@68: Im Multi\-Thread\-Modus wird etwa die dreifache \fIGröße\fP in jedem Thread zur jpayne@68: Pufferung der Ein\- und Ausgabe belegt. Die vorgegebene \fIGröße\fP ist das jpayne@68: Dreifache der Größe des LZMA2\-Wörterbuchs oder 1 MiB, je nachdem, was mehr jpayne@68: ist. Typischerweise ist das Zwei\- bis Vierfache der Größe des jpayne@68: LZMA2\-Wörterbuchs oder wenigstens 1 MB ein guter Wert. Eine \fIGröße\fP, die jpayne@68: geringer ist als die des LZMA2\-Wörterbuchs, ist Speicherverschwendung, weil jpayne@68: dann der LZMA2\-Wörterbuchpuffer niemals vollständig genutzt werden würde. Im jpayne@68: Multi\-Thread\-Modus wird die Größe der Blöcke wird in den Block\-Headern jpayne@68: gespeichert. Die Größeninformation wird für eine Multi\-Thread\-Dekompression jpayne@68: genutzt. jpayne@68: .IP "" jpayne@68: Im Einzel\-Thread\-Modus werden die Blöcke standardmäßig nicht geteilt. Das jpayne@68: Setzen dieser Option wirkt sich nicht auf den Speicherbedarf aus. In den jpayne@68: Block\-Headern werden keine Größeninformationen gespeichert, daher werden im jpayne@68: Einzel\-Thread\-Modus erzeugte Dateien nicht zu den im Multi\-Thread\-Modus jpayne@68: erzeugten Dateien identisch sein. Das Fehlen der Größeninformation bedingt jpayne@68: auch, dass \fBxz\fP nicht in der Lage sein wird, die Dateien im jpayne@68: Multi\-Thread\-Modus zu dekomprimieren. jpayne@68: .TP jpayne@68: \fB\-\-block\-list=\fP\fIBlöcke\fP jpayne@68: beginnt bei der Kompression in das \fB.xz\fP\-Format nach den angegebenen jpayne@68: Intervallen unkomprimierter Daten einen neuen Block, optional mit einer jpayne@68: benutzerdefinierten Filterkette. jpayne@68: .IP "" jpayne@68: Die \fIBlöcke\fP werden in einer durch Kommata getrennten Liste jpayne@68: angegeben. Jeder Block besteht aus einer optionalen Filterkettennummer jpayne@68: zwischen 0 und 9, gefolgt von einem Doppelpunkt (\fB:\fP) und der Größe der jpayne@68: unkomprimierten Daten (diese Angabe ist erforderlich). Überspringen eines jpayne@68: Blocks (zwei oder mehr aufeinander folgende Kommata) ist ein Kürzel dafür, jpayne@68: die Größe und die Filter des vorherigen Blocks zu verwenden. jpayne@68: .IP "" jpayne@68: Falls die Eingabedatei größer ist als die Summe der \fIBlöcke\fP, dann wird der jpayne@68: letzte in \fIVBlöcke\fP angegebene Wert bis zum Ende der Datei wiederholt. Mit jpayne@68: dem speziellen Wert \fB0\fP können Sie angeben, dass der Rest der Datei als jpayne@68: einzelner Block kodiert werden soll. jpayne@68: .IP "" jpayne@68: Eine alternative Filterkette für jeden Block kann in Kombination mit den jpayne@68: Optionen \fB\-\-filters1=\fP\fIFilter\fP \&…\& \fB\-\-filters9=\fP\fIFilter\fP angegeben jpayne@68: werden. Diese Optionen definieren Filterketten mit einem Bezeichner zwischen jpayne@68: 1 und 9. Die Filterkette 0 bezeichnet hierbei die voreingestellte jpayne@68: Filterkette, was dem Nichtangeben einer Filterkette gleichkommt. Der jpayne@68: Filterkettenbezeichner kann vor der unkomprimierten Größe verwendet werden, jpayne@68: gefolgt von einem Doppelpunkt (\fB:\fP). Falls Sie beispielsweise jpayne@68: \fB\-\-block\-list=1:2MiB,3:2MiB,2:4MiB,,2MiB,0:4MiB\fP angeben, werden die Blöcke jpayne@68: folgendermaßen erstellt: jpayne@68: .RS jpayne@68: .IP \(bu 3 jpayne@68: Die durch \fB\-\-filters1\fP angegebene Filterkette und 2 MiB Eingabe jpayne@68: .IP \(bu 3 jpayne@68: Die durch \fB\-\-filters3\fP angegebene Filterkette und 2 MiB Eingabe jpayne@68: .IP \(bu 3 jpayne@68: Die durch \fB\-\-filters2\fP angegebene Filterkette und 4 MiB Eingabe jpayne@68: .IP \(bu 3 jpayne@68: Die durch \fB\-\-filters2\fP angegebene Filterkette und 4 MiB Eingabe jpayne@68: .IP \(bu 3 jpayne@68: Die vorgegebene Filterkette und 2 MiB Eingabe jpayne@68: .IP \(bu 3 jpayne@68: Die vorgegebene Filterkette und 4 MiB Eingabe für jeden Block bis zum Ende jpayne@68: der Eingabe. jpayne@68: .RE jpayne@68: .IP "" jpayne@68: Falls Sie eine Größe angeben, welche die Blockgröße des Encoders übersteigen jpayne@68: (entweder den Vorgabewert im Thread\-Modus oder den mit jpayne@68: \fB\-\-block\-size=\fP\fIGröße\fP angegebenen Wert), wird der Encoder zusätzliche jpayne@68: Blöcke erzeugen, wobei die in den \fIBlöcke\fP angegebenen Grenzen eingehalten jpayne@68: werden. Wenn Sie zum Beispiel \fB\-\-block\-size=10MiB\fP jpayne@68: \fB\-\-block\-list=5MiB,10MiB,8MiB,12MiB,24MiB\fP angeben und die Eingabedatei 80 jpayne@68: MiB groß ist, erhalten Sie 11 Blöcke: 5, 10, 8, 10, 2, 10, 10, 4, 10, 10 und jpayne@68: 1 MiB. jpayne@68: .IP "" jpayne@68: Im Multi\-Thread\-Modus werden die Blockgrößen in den Block\-Headern jpayne@68: gespeichert. Dies geschieht im Einzel\-Thread\-Modus nicht, daher wird die jpayne@68: kodierte Ausgabe zu der im Multi\-Thread\-Modus nicht identisch sein. jpayne@68: .TP jpayne@68: \fB\-\-flush\-timeout=\fP\fIZeit\fP jpayne@68: löscht bei der Kompression die ausstehenden Daten aus dem Encoder und macht jpayne@68: sie im Ausgabedatenstrom verfügbar, wenn mehr als die angegebene \fIZeit\fP in jpayne@68: Millisekunden (als positive Ganzzahl) seit dem vorherigen Löschen vergangen jpayne@68: ist und das Lesen weiterer Eingaben blockieren würde. Dies kann nützlich jpayne@68: sein, wenn \fBxz\fP zum Komprimieren von über das Netzwerk eingehenden Daten jpayne@68: verwendet wird. Kleine \fIZeit\fP\-Werte machen die Daten unmittelbar nach dem jpayne@68: Empfang nach einer kurzen Verzögerung verfügbar, während große \fIZeit\fP\-Werte jpayne@68: ein besseres Kompressionsverhältnis bewirken. jpayne@68: .IP "" jpayne@68: Dieses Funktionsmerkmal ist standardmäßig deaktiviert. Wenn diese Option jpayne@68: mehrfach angegeben wird, ist die zuletzt angegebene wirksam. Für die Angabe jpayne@68: der \fIZeit\fP kann der spezielle Wert \fB0\fP verwendet werden, um dieses jpayne@68: Funktionsmerkmal explizit zu deaktivieren. jpayne@68: .IP "" jpayne@68: Dieses Funktionsmerkmal ist außerhalb von POSIX\-Systemen nicht verfügbar. jpayne@68: .IP "" jpayne@68: .\" FIXME jpayne@68: \fBDieses Funktionsmerkmal ist noch experimentell.\fP Gegenwärtig ist \fBxz\fP jpayne@68: aufgrund der Art und Weise, wie \fBxz\fP puffert, für Dekompression in Echtzeit jpayne@68: ungeeignet. jpayne@68: .TP jpayne@68: \fB\-\-memlimit\-compress=\fP\fIGrenze\fP jpayne@68: legt eine Grenze für die Speichernutzung bei der Kompression fest. Wenn jpayne@68: diese Option mehrmals angegeben wird, ist die zuletzt angegebene wirksam. jpayne@68: .IP "" jpayne@68: Falls die Kompressionseinstellungen die \fIGrenze\fP überschreiten, versucht jpayne@68: \fBxz\fP, die Einstellungen nach unten anzupassen, so dass die Grenze nicht jpayne@68: mehr überschritten wird und zeigt einen Hinweis an, dass eine automatische jpayne@68: Anpassung vorgenommen wurde. Die Anpassungen werden in folgender Reihenfolge jpayne@68: angewendet: Reduzierung der Anzahl der Threads, Wechsel in den jpayne@68: Einzelthread\-Modus, falls sogar ein einziger Thread im Multithread\-Modus die jpayne@68: \fIGrenze\fP überschreitet, und schlussendlich die Reduzierung der Größe des jpayne@68: LZMA2\-Wörterbuchs. jpayne@68: .IP "" jpayne@68: Beim Komprimieren mit \fB\-\-format=raw\fP oder falls \fB\-\-no\-adjust\fP angegeben jpayne@68: wurde, wird nur die Anzahl der Threads reduziert, da nur so die komprimierte jpayne@68: Ausgabe nicht beeinflusst wird. jpayne@68: .IP "" jpayne@68: Falls die \fIGrenze\fP nicht anhand der vorstehend beschriebenen Anpassungen jpayne@68: gesetzt werden kann, wird ein Fehler angezeigt und \fBxz\fP wird mit dem jpayne@68: Exit\-Status 1 beendet. jpayne@68: .IP "" jpayne@68: Die \fIGrenze\fP kann auf verschiedene Arten angegeben werden: jpayne@68: .RS jpayne@68: .IP \(bu 3 jpayne@68: Die \fIGrenze\fP kann ein absoluter Wert in Byte sein. Ein Suffix wie \fBMiB\fP jpayne@68: kann dabei hilfreich sein. Beispiel: \fB\-\-memlimit\-compress=80MiB\fP. jpayne@68: .IP \(bu 3 jpayne@68: Die \fIGrenze\fP kann als Prozentsatz des physischen Gesamtspeichers (RAM) jpayne@68: angegeben werden. Dies ist insbesondere nützlich, wenn in einem jpayne@68: Shell\-Initialisierungsskript, das mehrere unterschiedliche Rechner gemeinsam jpayne@68: verwenden, die Umgebungsvariable \fBXZ_DEFAULTS\fP gesetzt ist. Auf diese Weise jpayne@68: ist die Grenze auf Systemen mit mehr Speicher höher. Beispiel: jpayne@68: \fB\-\-memlimit\-compress=70%\fP jpayne@68: .IP \(bu 3 jpayne@68: Mit \fB0\fP kann die \fIGrenze\fP auf den Standardwert zurückgesetzt werden. Dies jpayne@68: ist gegenwärtig gleichbedeutend mit dem Setzen der \fIGrenze\fP auf \fBmax\fP jpayne@68: (keine Speicherbegrenzung). jpayne@68: .RE jpayne@68: .IP "" jpayne@68: Für die 32\-Bit\-Version von \fBxz\fP gibt es einen Spezialfall: Falls die Grenze jpayne@68: über \fB4020\ MiB\fP liegt, wird die \fIGrenze\fP auf \fB4020\ MiB\fP gesetzt. Auf jpayne@68: MIPS32 wird stattdessen \fB2000\ MB\fP verwendet (die Werte \fB0\fP und \fBmax\fP jpayne@68: werden hiervon nicht beeinflusst; für die Dekompression gibt es keine jpayne@68: vergleichbare Funktion). Dies kann hilfreich sein, wenn ein jpayne@68: 32\-Bit\-Executable auf einen 4\ GiB großen Adressraum (2 GiB auf MIPS32) jpayne@68: zugreifen kann, wobei wir hoffen wollen, dass es in anderen Situationen jpayne@68: keine negativen Effekte hat. jpayne@68: .IP "" jpayne@68: Siehe auch den Abschnitt \fBSpeicherbedarf\fP. jpayne@68: .TP jpayne@68: \fB\-\-memlimit\-decompress=\fP\fIGrenze\fP jpayne@68: legt eine Begrenzung des Speicherverbrauchs für die Dekompression fest. Dies jpayne@68: beeinflusst auch den Modus \fB\-\-list\fP. Falls die Aktion nicht ausführbar ist, jpayne@68: ohne die \fIGrenze\fP zu überschreiten, gibt \fBxz\fP eine Fehlermeldung aus und jpayne@68: die Dekompression wird fehlschlagen. Siehe \fB\-\-memlimit\-compress=\fP\fIGrenze\fP jpayne@68: zu möglichen Wegen, die \fIGrenze\fP anzugeben. jpayne@68: .TP jpayne@68: \fB\-\-memlimit\-mt\-decompress=\fP\fIGrenze\fP jpayne@68: legt eine Begrenzung des Speicherverbrauchs für Multithread\-Dekompression jpayne@68: fest. Dies beeinflusst lediglich die Anzahl der Threads; \fBxz\fP wird dadurch jpayne@68: niemals die Dekompression einer Datei verweigern. Falls die \fIGrenze\fP für jpayne@68: jegliches Multithreading zu niedrig ist, wird sie ignoriert und \fBxz\fP setzt jpayne@68: im Einzelthread\-modus fort. Beachten Sie auch, dass bei der Verwendung von jpayne@68: \fB\-\-memlimit\-decompress\fP dies stets sowohl auf den Einzelthread\-als auch auf jpayne@68: den Multithread\-Modus angewendet wird und so die effektive \fIGrenze\fP für den jpayne@68: Multithread\-Modus niemals höher sein wird als die mit jpayne@68: \fB\-\-memlimit\-decompress\fP gesetzte Grenze. jpayne@68: .IP "" jpayne@68: Im Gegensatz zu anderen Optionen zur Begrenzung des Speicherverbrauchs hat jpayne@68: \fB\-\-memlimit\-mt\-decompress=\fP\fIGrenze\fP eine systemspezifisch vorgegebene jpayne@68: \fIGrenze\fP. Mit \fBxz \-\-info\-memory\fP können Sie deren aktuellen Wert anzeigen jpayne@68: lassen. jpayne@68: .IP "" jpayne@68: Diese Option und ihr Standardwert existieren, weil die unbegrenzte jpayne@68: threadbezogene Dekompression bei einigen Eingabedateien zu unglaublich jpayne@68: großem Speicherverbrauch führen würde. Falls die vorgegebene \fIGrenze\fP auf jpayne@68: Ihrem System zu niedrig ist, können Sie die \fIGrenze\fP durchaus erhöhen, aber jpayne@68: setzen Sie sie niemals auf einen Wert größer als die Menge des nutzbaren jpayne@68: Speichers, da \fBxz\fP bei entsprechenden Eingabedateien versuchen wird, diese jpayne@68: Menge an Speicher auch bei einer geringen Anzahl von Threads zu jpayne@68: verwnden. Speichermangel oder Auslagerung verbessern die jpayne@68: Dekomprimierungsleistung nicht. jpayne@68: .IP "" jpayne@68: Siehe \fB\-\-memlimit\-compress=\fP\fIGrenze\fP für mögliche Wege zur Angabe der jpayne@68: \fIGrenze\fP. Sezen der \fIGrenze\fP auf \fB0\fP setzt die \fIGrenze\fP auf den jpayne@68: vorgegebenen systemspezifischen Wert zurück. jpayne@68: .TP jpayne@68: \fB\-M\fP \fIGrenze\fP, \fB\-\-memlimit=\fP\fIGrenze\fP, \fB\-\-memory=\fP\fIGrenze\fP jpayne@68: Dies ist gleichbedeutend mit \fB\-\-memlimit\-compress=\fP\fIGrenze\fP jpayne@68: \fB\-\-memlimit\-decompress=\fP\fIGrenze\fP \fB\-\-memlimit\-mt\-decompress=\fP\fIGrenze\fP. jpayne@68: .TP jpayne@68: \fB\-\-no\-adjust\fP jpayne@68: zeigt einen Fehler an und beendet, falls die Grenze der Speichernutzung jpayne@68: nicht ohne Änderung der Einstellungen, welche die komprimierte Ausgabe jpayne@68: beeinflussen, berücksichtigt werden kann. Das bedeutet, dass \fBxz\fP daran jpayne@68: gehindert wird, den Encoder vom Multithread\-Modus in den Einzelthread\-Modus jpayne@68: zu versetzen und die Größe des LZMA2\-Wörterbuchs zu reduzieren. Allerdings jpayne@68: kann bei Verwendung dieser Option dennoch die Anzahl der Threads reduziert jpayne@68: werden, um die Grenze der Speichernutzung zu halten, sofern dies die jpayne@68: komprimierte Ausgabe nicht beeinflusst. jpayne@68: .IP "" jpayne@68: Die automatische Anpassung ist beim Erzeugen von Rohdatenströmen jpayne@68: (\fB\-\-format=raw\fP) immer deaktiviert. jpayne@68: .TP jpayne@68: \fB\-T\fP \fIThreads\fP, \fB\-\-threads=\fP\fIThreads\fP jpayne@68: gibt die Anzahl der zu verwendenden Arbeits\-Threads an. Wenn Sie \fIThreads\fP jpayne@68: auf einen speziellen Wert \fB0\fP setzen, verwendet \fBxz\fP maximal so viele jpayne@68: Threads, wie der/die Prozessor(en) im System untestützen. Die tatsächliche jpayne@68: Anzahl kann geringer sein als die angegebenen \fIThreads\fP, wenn die jpayne@68: Eingabedatei nicht groß genug für Threading mit den gegebenen Einstellungen jpayne@68: ist oder wenn mehr Threads die Speicherbegrenzung übersteigen würden. jpayne@68: .IP "" jpayne@68: Die Multithread\- bzw. Einzelthread\-Kompressoren erzeugen unterschiedliche jpayne@68: Ausgaben. Der Einzelthread\-Kompressor erzeugt die geringste Dateigröße, aber jpayne@68: nur die Ausgabe des Multithread\-Kompressors kann mit mehreren Threads wieder jpayne@68: dekomprimiert werden. Das Setzen der Anzahl der \fIThreads\fP auf \fB1\fP wird den jpayne@68: Einzelthread\-Modus verwenden. Das Setzen der Anzahl der \fIThreads\fP auf jpayne@68: einen anderen Wert einschließlich \fB0\fP verwendet den Multithread\-Kompressor, jpayne@68: und zwar sogar dann, wenn das System nur einen einzigen Hardware\-Thread jpayne@68: unterstützt (\fBxz\fP 5.2.x verwendete in diesem Fall noch den jpayne@68: Einzelthread\-Modus). jpayne@68: .IP "" jpayne@68: Um den Multithread\-Modus mit nur einem einzigen Thread zu verwenden, setzen jpayne@68: Sie die Anzahl der \fIThreads\fP auf \fB+1\fP. Das Präfix \fB+\fP hat mit Werten jpayne@68: verschieden von \fB1\fP keinen Effekt. Eine Begrenzung des Speicherverbrauchs jpayne@68: kann \fBxz\fP dennoch veranlassen, den Einzelthread\-Modus zu verwenden, außer jpayne@68: wenn \fB\-\-no\-adjust\fP verwendet wird. Die Unterstützung für das Präfix \fB+\fP jpayne@68: wurde in \fBxz\fP 5.4.0 hinzugefügt. jpayne@68: .IP "" jpayne@68: Falls das automatische Setzen der Anzahl der Threads angefordert und keine jpayne@68: Speicherbegrenzung angegeben wurde, dann wird eine systemspezifisch jpayne@68: vorgegebene weiche Grenze verwendet, um eventuell die Anzahl der Threads zu jpayne@68: begrenzen. Es ist eine weiche Grenze im Sinne davon, dass sie ignoriert jpayne@68: wird, falls die Anzahl der Threads 1 ist; daher wird eine weiche Grenze jpayne@68: \fBxz\fP niemals an der Kompression oder Dekompression hindern. Diese jpayne@68: vorgegebene weiche Grenze veranlasst \fBxz\fP nicht, vom Multithread\-Modus in jpayne@68: den Einzelthread\-Modus zu wechseln. Die aktiven Grenzen können Sie mit dem jpayne@68: Befehl \fBxz \-\-info\-memory\fP anzeigen lassen. jpayne@68: .IP "" jpayne@68: Die gegenwärtig einzige Threading\-Methode teilt die Eingabe in Blöcke und jpayne@68: komprimiert diese unabhängig voneinander. Die vorgegebene Blockgröße ist von jpayne@68: der Kompressionsstufe abhängig und kann mit der Option jpayne@68: \fB\-\-block\-size=\fP\fIGröße\fP außer Kraft gesetzt werden. jpayne@68: .IP "" jpayne@68: Eine thread\-basierte Dekompression wird nur bei Dateien funktionieren, die jpayne@68: mehrere Blöcke mit Größeninformationen in deren Headern enthalten. Alle im jpayne@68: Multi\-Thread\-Modus komprimierten Dateien, die groß genug sind, erfüllen jpayne@68: diese Bedingung, im Einzel\-Thread\-Modus komprimierte Dateien dagegen nicht, jpayne@68: selbst wenn \fB\-\-block\-size=\fP\fIGröße\fP verwendet wurde. jpayne@68: .IP "" jpayne@68: Der Vorgabewert für \fIThreads\fP is \fB0\fP. In \fBxz\fP 5.4.x und älteren Versionen jpayne@68: ist der Vorgabewert \fB1\fP. jpayne@68: . jpayne@68: .SS "Benutzerdefinierte Filterketten für die Kompression" jpayne@68: Eine benutzerdefinierte Filterkette ermöglicht die Angabe detaillierter jpayne@68: Kompressionseinstellungen, anstatt von den Voreinstellungen auszugehen. Wenn jpayne@68: eine benutzerdefinierte Filterkette angegeben wird, werden die vorher in der jpayne@68: Befehlszeile angegebenen Voreinstellungsoptionen (\fB\-0\fP … \fB\-9\fP und jpayne@68: \fB\-\-extreme\fP) außer Kraft gesetzt. Wenn eine Voreinstellungsoption nach jpayne@68: einer oder mehreren benutzerdefinierten Filterkettenoptionen angegeben wird, jpayne@68: dann wird die neue Voreinstellung wirksam und die zuvor angegebenen jpayne@68: Filterkettenoptionen werden außer Kraft gesetzt. jpayne@68: .PP jpayne@68: Eine Filterkette ist mit dem Piping (der Weiterleitung) in der Befehlszeile jpayne@68: vergleichbar. Bei der Kompression gelangt die unkomprimierte Eingabe in den jpayne@68: ersten Filter, dessen Ausgabe wiederum in den zweiten Filter geleitet wird jpayne@68: (sofern ein solcher vorhanden ist). Die Ausgabe des letzten Filters wird in jpayne@68: die komprimierte Datei geschrieben. In einer Filterkette sind maximal vier jpayne@68: Filter zulässig, aber typischerweise besteht eine Filterkette nur aus einem jpayne@68: oder zwei Filtern. jpayne@68: .PP jpayne@68: Bei vielen Filtern ist die Positionierung in der Filterkette eingeschränkt: jpayne@68: Einige Filter sind nur als letzte in der Kette verwendbar, einige können jpayne@68: nicht als letzte Filter gesetzt werden, und andere funktionieren an jpayne@68: beliebiger Stelle. Abhängig von dem Filter ist diese Beschränkung entweder jpayne@68: auf das Design des Filters selbst zurückzuführen oder ist aus jpayne@68: Sicherheitsgründen vorhanden. jpayne@68: .PP jpayne@68: Eine benutzerdefinierte Filterkette kann auf zwei verschiedene Arten jpayne@68: angegeben werden. Die Optionen \fB\-\-filters=\fP\fIFilter\fP und jpayne@68: \fB\-\-filters1=\fP\fIFilter\fP \&…\& \fB\-\-filters9=\fP\fIFilter\fP ermöglichen die Angabe jpayne@68: einer ganzen Filterkette in einer einzelnen Option gemäß der jpayne@68: Liblzma\-Filterzeichenkettensyntax. Alternativ können Sie eine Filterkette jpayne@68: mit einer oder mehreren individuellen Filteroptionen in der Reihenfolge jpayne@68: angeben, in der sie in der Filterkette verwendet werden sollen. Daher ist jpayne@68: die Reihenfolge der individuellen Filteroptionen wichtig! Beim Dekodieren jpayne@68: von Rohdatenströmen (\fB\-\-format=raw\fP) muss die Filterkette in der gleichen jpayne@68: Reihenfolge wie bei der Komprimierung angegeben werden. Alle individuellen jpayne@68: Filter\- oder Voreinstellungsoptionen, die \fIvor\fP der vollen jpayne@68: Filterkettenoption (\fB\-\-filters=\fP\fIFilter\fP) angegeben werden, werden jpayne@68: verworfen. Individuelle Filter, die \fInach\fP der vollen Filterkettenoption jpayne@68: angegeben werden, setzen die Filterkette zurück jpayne@68: .PP jpayne@68: Sowohl vollständige als auch individuelle Filteroptionen akzeptieren jpayne@68: filterspezifische \fIOptionen\fP in einer durch Kommata getrennten jpayne@68: Liste. Zusätzliche Kommata in den \fIOptionen\fP werden ignoriert. Jede Option jpayne@68: hat einen Standardwert, daher brauchen Sie nur jene anzugeben, die Sie jpayne@68: ändern wollen. jpayne@68: .PP jpayne@68: Um die gesamte Filterkette und die \fIOptionen\fP anzuzeigen, rufen Sie \fBxz \-vv\fP auf (was gleichbedeutend mit der zweimaligen Angabe von \fB\-\-verbose\fP jpayne@68: ist). Dies funktioniert auch zum Betrachten der von den Voreinstellungen jpayne@68: verwendeten Filterkettenoptionen. jpayne@68: .TP jpayne@68: \fB\-\-filters=\fP\fIFilter\fP jpayne@68: gibt die vollständige Filterkette oder eine Voreinstellung in einer jpayne@68: einzelnen Option an. Mehrere Filter können durch Leerzeichen oder zwei jpayne@68: Minuszeichen (\fB\-\-\fP) voneinander getrennt werden. Es kann notwendig sein, jpayne@68: die \fIFilter\fP in der Shell\-Befehlszeile zu maskieren, so dass diese als jpayne@68: einzelne Option ausgewertet werden. Um Optionen Werte zuzuordnen, verwenden jpayne@68: Sie \fB:\fP oder \fB=\fP. Einer Voreinstellung kann ein \fB\-\fP vorangestellt werden, jpayne@68: dem keiner oder mehrere Schalter folgen. Der einzige unterstützte Schalter jpayne@68: ist \fBe\fP zum Anwenden der gleichen Optionen wie \fB\-\-extreme\fP. jpayne@68: .TP jpayne@68: \fB\-\-filters1\fP=\fIFilter\fP … \fB\-\-filters9\fP=\fIFilter\fP jpayne@68: gibt bis zu neun optionale Filterketten an, die mit \fB\-\-block\-list\fP jpayne@68: verwendet werden können. jpayne@68: .IP "" jpayne@68: Wenn Sie beispielsweise ein Archiv mit ausführbaren Dateien gefolgt von jpayne@68: Textdateien komprimieren, könnte der Teil mit den ausführbaren Dateien eine jpayne@68: Filterkette mit einem BCJ\-Filter und der Textdateiteil lediglich den jpayne@68: LZMA2\-Filter verwenden. jpayne@68: .TP jpayne@68: \fB\-\-filters\-help\fP jpayne@68: zeigt eine Hilfemeldung an, welche beschreibt, wie Voreinstellungen und jpayne@68: benutzerdefinierte Filterketten in den Optionen \fB\-\-filters\fP und jpayne@68: \fB\-\-filters1=\fP\fIFilter\fP \&… \& \fB\-\-filters9=\fP\fIFilter\fP angegeben werden und jpayne@68: beendet das Programm. jpayne@68: .TP jpayne@68: \fB\-\-lzma1\fP[\fB=\fP\fIOptionen\fP] jpayne@68: .PD 0 jpayne@68: .TP jpayne@68: \fB\-\-lzma2\fP[\fB=\fP\fIOptionen\fP] jpayne@68: .PD jpayne@68: fügt LZMA1\- oder LZMA2\-Filter zur Filterkette hinzu. Diese Filter können nur jpayne@68: als letzte Filter in der Kette verwendet werden. jpayne@68: .IP "" jpayne@68: LZMA1 ist ein veralteter Filter, welcher nur wegen des veralteten jpayne@68: \&\fB.lzma\fP\-Dateiformats unterstützt wird, welches nur LZMA1 unterstützt. LZMA2 jpayne@68: ist eine aktualisierte Version von LZMA1, welche einige praktische Probleme jpayne@68: von LZMA1 behebt. Das \fB.xz\fP\-Format verwendet LZMA2 und unterstützt LZMA1 jpayne@68: gar nicht. Kompressionsgeschwindigkeit und \-verhältnis sind bei LZMA1 und jpayne@68: LZMA2 praktisch gleich. jpayne@68: .IP "" jpayne@68: LZMA1 und LZMA2 haben die gleichen \fIOptionen\fP: jpayne@68: .RS jpayne@68: .TP jpayne@68: \fBpreset=\fP\fIVoreinstellung\fP jpayne@68: setzt alle LZMA1\- oder LZMA2\-\fIOptionen\fP auf die \fIVoreinstellung\fP jpayne@68: zurück. Diese \fIVoreinstellung\fP wird in Form einer Ganzzahl angegeben, der jpayne@68: ein aus einem einzelnen Buchstaben bestehender Voreinstellungsmodifikator jpayne@68: folgen kann. Die Ganzzahl kann \fB0\fP bis \fB9\fP sein, entsprechend den jpayne@68: Befehlszeilenoptionen \fB\-0\fP … \fB\-9\fP. Gegenwärtig ist \fBe\fP der einzige jpayne@68: unterstützte Modifikator, was \fB\-\-extreme\fP entspricht. Wenn keine jpayne@68: \fBVoreinstellung\fP angegeben ist, werden die Standardwerte der LZMA1\- oder jpayne@68: LZMA2\-\fIOptionen\fP der Voreinstellung \fB6\fP entnommen. jpayne@68: .TP jpayne@68: \fBdict=\fP\fIGröße\fP jpayne@68: Die \fIGröße\fP des Wörterbuchs (Chronikpuffers) gibt an, wie viel Byte der jpayne@68: kürzlich verarbeiteten unkomprimierten Daten im Speicher behalten werden jpayne@68: sollen. Der Algorithmus versucht, sich wiederholende Byte\-Abfolgen jpayne@68: (Übereinstimmungen) in den unkomprimierten Daten zu finden und diese durch jpayne@68: Referenzen zu den Daten zu ersetzen, die sich gegenwärtig im Wörterbuch jpayne@68: befinden. Je größer das Wörterbuch, umso größer ist die Chance, eine jpayne@68: Übereinstimmung zu finden. Daher bewirkt eine Erhöhung der \fIGröße\fP des jpayne@68: Wörterbuchs üblicherweise ein besseres Kompressionsverhältnis, aber ein jpayne@68: Wörterbuch, das größer ist als die unkomprimierte Datei, wäre jpayne@68: Speicherverschwendung. jpayne@68: .IP "" jpayne@68: Typische Wörterbuch\-\fIGrößen\fP liegen im Bereich von 64\ KiB bis 64\ MiB. Das jpayne@68: Minimum ist 4\ KiB. Das Maximum für die Kompression ist gegenwärtig 1.5\ GiB jpayne@68: (1536\ MiB). Bei der Dekompression wird bereits eine Wörterbuchgröße bis zu jpayne@68: 4\ GiB minus 1 Byte unterstützt, welche das Maximum für die LZMA1\- und jpayne@68: LZMA2\-Datenstromformate ist. jpayne@68: .IP "" jpayne@68: Die \fIGröße\fP des Wörterbuchs und der Übereinstimmungsfinder (\fIÜf\fP) jpayne@68: bestimmen zusammen den Speicherverbrauch des LZMA1\- oder jpayne@68: LZMA2\-Kodierers. Bei der Dekompression ist ein Wörterbuch der gleichen jpayne@68: \fIGröße\fP (oder ein noch größeres) wie bei der Kompression erforderlich, jpayne@68: daher wird der Speicherverbrauch des Dekoders durch die Größe des bei der jpayne@68: Kompression verwendeten Wörterbuchs bestimmt. Die \fB.xz\fP\-Header speichern jpayne@68: die \fIGröße\fP des Wörterbuchs entweder als 2^\fIn\fP oder 2^\fIn\fP + 2^(\fIn\fP\-1), jpayne@68: so dass diese \fIGrößen\fP für die Kompression etwas bevorzugt werden. Andere jpayne@68: \fIGrößen\fP werden beim Speichern in den \fB.xz\fP\-Headern aufgerundet. jpayne@68: .TP jpayne@68: \fBlc=\fP\fIlc\fP jpayne@68: gibt die Anzahl der literalen Kontextbits an. Das Minimum ist 0 und das jpayne@68: Maximum 4; der Standardwert ist 3. Außerdem darf die Summe von \fIlc\fP und jpayne@68: \fIlp\fP nicht größer als 4 sein. jpayne@68: .IP "" jpayne@68: Alle Bytes, die nicht als Übereinstimmungen kodiert werden können, werden jpayne@68: als Literale kodiert. Solche Literale sind einfache 8\-bit\-Bytes, die jeweils jpayne@68: für sich kodiert werden. jpayne@68: .IP "" jpayne@68: Bei der Literalkodierung wird angenommen, dass die höchsten \fIlc\fP\-Bits des jpayne@68: zuvor unkomprimierten Bytes mit dem nächsten Byte in Beziehung stehen. Zum jpayne@68: Beispiel folgt in typischen englischsprachigen Texten auf einen jpayne@68: Großbuchstaben ein Kleinbuchstabe und auf einen Kleinbuchstaben jpayne@68: üblicherweise wieder ein Kleinbuchstabe. Im US\-ASCII\-Zeichensatz sind die jpayne@68: höchsten drei Bits 010 für Großbuchstaben und 011 für Kleinbuchstaben. Wenn jpayne@68: \fIlc\fP mindestens 3 ist, kann die literale Kodierung diese Eigenschaft der jpayne@68: unkomprimierten Daten ausnutzen. jpayne@68: .IP "" jpayne@68: Der Vorgabewert (3) ist üblicherweise gut. Wenn Sie die maximale Kompression jpayne@68: erreichen wollen, versuchen Sie \fBlc=4\fP. Manchmal hilft es ein wenig, doch jpayne@68: manchmal verschlechtert es die Kompression. Im letzteren Fall versuchen Sie jpayne@68: zum Beispiel auch\& \fBlc=2\fP. jpayne@68: .TP jpayne@68: \fBlp=\fP\fIlp\fP jpayne@68: gibt die Anzahl der literalen Positionsbits an. Das Minimum ist 0 und das jpayne@68: Maximum 4; die Vorgabe ist 0. jpayne@68: .IP "" jpayne@68: \fILp\fP beeinflusst, welche Art der Ausrichtung der unkomprimierten Daten beim jpayne@68: Kodieren von Literalen angenommen wird. Siehe \fIpb\fP weiter unten für weitere jpayne@68: Informationen zur Ausrichtung. jpayne@68: .TP jpayne@68: \fBpb=\fP\fIAnzahl\fP jpayne@68: legt die Anzahl der Positions\-Bits fest. Das Minimum ist 0 und das Maximum jpayne@68: 4; Standard ist 2. jpayne@68: .IP "" jpayne@68: \fIPb\fP beeinflusst, welche Art der Ausrichtung der unkomprimierten Daten jpayne@68: generell angenommen wird. Standardmäßig wird eine Vier\-Byte\-Ausrichtung jpayne@68: angenommen (2^\fIpb\fP=2^2=4), was oft eine gute Wahl ist, wenn es keine jpayne@68: bessere Schätzung gibt. jpayne@68: .IP "" jpayne@68: Wenn die Ausrichtung bekannt ist, kann das entsprechende Setzen von \fIpb\fP jpayne@68: die Dateigröße ein wenig verringern. Wenn Textdateien zum Beispiel eine jpayne@68: Ein\-Byte\-Ausrichtung haben (US\-ASCII, ISO\-8859\-*, UTF\-8), kann das Setzen jpayne@68: von \fBpb=0\fP die Kompression etwas verbessern. Für UTF\-16\-Text ist \fBpb=1\fP jpayne@68: eine gute Wahl. Wenn die Ausrichtung eine ungerade Zahl wie beispielsweise 3 jpayne@68: Byte ist, könnte \fBpb=0\fP die beste Wahl sein. jpayne@68: .IP "" jpayne@68: Obwohl die angenommene Ausrichtung mit \fIpb\fP und \fIlp\fP angepasst werden jpayne@68: kann, bevorzugen LZMA1 und LZMA2 noch etwas die 16\-Byte\-Ausrichtung. Das jpayne@68: sollten Sie vielleicht beim Design von Dateiformaten berücksichtigen, die jpayne@68: wahrscheinlich oft mit LZMA1 oder LZMA2 komprimiert werden. jpayne@68: .TP jpayne@68: \fBmf=\fP\fIÜf\fP jpayne@68: Der Übereinstimmungsfinder hat einen großen Einfluss auf die Geschwindigkeit jpayne@68: des Kodierers, den Speicherbedarf und das jpayne@68: Kompressionsverhältnis. Üblicherweise sind auf Hash\-Ketten basierende jpayne@68: Übereinstimmungsfinder schneller als jene, die mit Binärbäumen arbeiten. Die jpayne@68: Vorgabe hängt von der \fIVoreinstellungsstufe\fP ab: 0 verwendet \fBhc3\fP, 1\-3 jpayne@68: verwenden \fBhc4\fP und der Rest verwendet \fBbt4\fP. jpayne@68: .IP "" jpayne@68: Die folgenden Übereinstimmungsfinder werden unterstützt. Die Formeln zur jpayne@68: Ermittlung des Speicherverbrauchs sind grobe Schätzungen, die der Realität jpayne@68: am nächsten kommen, wenn \fIWörterbuch\fP eine Zweierpotenz ist. jpayne@68: .RS jpayne@68: .TP jpayne@68: \fBhc3\fP jpayne@68: Hash\-Kette mit 2\- und 3\-Byte\-Hashing jpayne@68: .br jpayne@68: Minimalwert für \fInice\fP: 3 jpayne@68: .br jpayne@68: Speicherbedarf: jpayne@68: .br jpayne@68: \fIdict\fP * 7,5 (falls \fIdict\fP <= 16 MiB); jpayne@68: .br jpayne@68: \fIdict\fP * 5,5 + 64 MiB (falls \fIdict\fP > 16 MiB) jpayne@68: .TP jpayne@68: \fBhc4\fP jpayne@68: Hash\-Kette mit 2\-, 3\- und 4\-Byte\-Hashing jpayne@68: .br jpayne@68: Minimaler Wert für \fInice\fP: 4 jpayne@68: .br jpayne@68: Speicherbedarf: jpayne@68: .br jpayne@68: \fIdict\fP * 7,5 (falls \fIdict\fP <= 32 MiB ist); jpayne@68: .br jpayne@68: \fIdict\fP * 6,5 (falls \fIdict\fP > 32 MiB ist) jpayne@68: .TP jpayne@68: \fBbt2\fP jpayne@68: Binärbaum mit 2\-Byte\-Hashing jpayne@68: .br jpayne@68: Minimaler Wert für \fInice\fP: 2 jpayne@68: .br jpayne@68: Speicherverbrauch: \fIdict\fP * 9.5 jpayne@68: .TP jpayne@68: \fBbt3\fP jpayne@68: Binärbaum mit 2\- und 3\-Byte\-Hashing jpayne@68: .br jpayne@68: Minimalwert für \fInice\fP: 3 jpayne@68: .br jpayne@68: Speicherbedarf: jpayne@68: .br jpayne@68: \fIdict\fP * 11,5 (falls \fIdict\fP <= 16 MiB ist); jpayne@68: .br jpayne@68: \fIdict\fP * 9,5 + 64 MiB (falls \fIdict\fP > 16 MiB ist) jpayne@68: .TP jpayne@68: \fBbt4\fP jpayne@68: Binärbaum mit 2\-, 3\- und 4\-Byte\-Hashing jpayne@68: .br jpayne@68: Minimaler Wert für \fInice\fP: 4 jpayne@68: .br jpayne@68: Speicherbedarf: jpayne@68: .br jpayne@68: \fIdict\fP * 11,5 (falls \fIdict\fP <= 32 MiB ist); jpayne@68: .br jpayne@68: \fIdict\fP * 10,5 (falls \fIdict\fP > 32 MiB ist) jpayne@68: .RE jpayne@68: .TP jpayne@68: \fBmode=\fP\fIModus\fP jpayne@68: gibt die Methode zum Analysieren der vom Übereinstimmungsfinder gelieferten jpayne@68: Daten an. Als \fIModi\fP werden \fBfast\fP und \fBnormal\fP unterstützt. Die Vorgabe jpayne@68: ist \fBfast\fP für die \fIVoreinstellungsstufen\fP 0\-3 und \fBnormal\fP für die jpayne@68: \fIVoreinstellungsstufen\fP 4\-9. jpayne@68: .IP "" jpayne@68: Üblicherweise wird \fBfast\fP mit Hashketten\-basierten Übereinstimmungsfindern jpayne@68: und \fBnormal\fP mit Binärbaum\-basierten Übereinstimmungsfindern verwendet. So jpayne@68: machen es auch die \fIVoreinstellungsstufen\fP. jpayne@68: .TP jpayne@68: \fBnice=\fP\fInice\fP jpayne@68: gibt an, was als annehmbarer Wert für eine Übereinstimmung angesehen werden jpayne@68: kann. Wenn eine Übereinstimmung gefunden wird, die mindestens diesen jpayne@68: \fInice\fP\-Wert hat, sucht der Algorithmus nicht weiter nach besseren jpayne@68: Übereinstimmungen. jpayne@68: .IP "" jpayne@68: Der \fInice\fP\-Wert kann 2\-273 Byte sein. Höhere Werte tendieren zu einem jpayne@68: besseren Kompressionsverhältnis, aber auf Kosten der Geschwindigkeit. Die jpayne@68: Vorgabe hängt von der \fIVoreinstellungsstufe\fP ab. jpayne@68: .TP jpayne@68: \fBdepth=\fP\fITiefe\fP jpayne@68: legt die maximale Suchtiefe im Übereinstimmungsfinder fest. Vorgegeben ist jpayne@68: der spezielle Wert 0, der den Kompressor veranlasst, einen annehmbaren Wert jpayne@68: für \fITiefe\fP aus \fIÜf\fP und \fInice\fP\-Wert zu bestimmen. jpayne@68: .IP "" jpayne@68: Die angemessene \fITiefe\fP für Hash\-Ketten ist 4\-100 und 16\-1000 für jpayne@68: Binärbäume. Hohe Werte für die \fITiefe\fP können den Kodierer bei einigen jpayne@68: Dateien extrem verlangsamen. Vermeiden Sie es, die \fITiefe\fP über einen Wert jpayne@68: von 100 zu setzen, oder stellen Sie sich darauf ein, die Kompression jpayne@68: abzubrechen, wenn sie zu lange dauert. jpayne@68: .RE jpayne@68: .IP "" jpayne@68: Beim Dekodieren von Rohdatenströmen (\fB\-\-format=raw\fP) benötigt LZMA2 nur die jpayne@68: Wörterbuch\-\fIGröße\fP. LZMA1 benötigt außerdem \fIlc\fP, \fIlp\fP und \fIpb\fP. jpayne@68: .TP jpayne@68: \fB\-\-x86\fP[\fB=\fP\fIOptionen\fP] jpayne@68: .PD 0 jpayne@68: .TP jpayne@68: \fB\-\-arm\fP[\fB=\fP\fIOptionen\fP] jpayne@68: .TP jpayne@68: \fB\-\-armthumb\fP[\fB=\fP\fIOptionen\fP] jpayne@68: .TP jpayne@68: \fB\-\-arm64\fP[\fB=\fP\fIOptionen\fP] jpayne@68: .TP jpayne@68: \fB\-\-powerpc\fP[\fB=\fP\fIOptionen\fP] jpayne@68: .TP jpayne@68: \fB\-\-ia64\fP[\fB=\fP\fIOptionen\fP] jpayne@68: .TP jpayne@68: \fB\-\-sparc\fP[\fB=\fP\fIOptionen\fP] jpayne@68: .TP jpayne@68: \fB\-\-riscv\fP[\fB=\fP\fIOptionen\fP] jpayne@68: .PD jpayne@68: fügt ein »Branch/Call/Jump«\-(BCJ\-)Filter zur Filterkette hinzu. Diese Filter jpayne@68: können nicht als letzter Filter in der Filterkette verwendet werden. jpayne@68: .IP "" jpayne@68: Ein BCJ\-Filter wandelt relative Adressen im Maschinencode in deren absolute jpayne@68: Gegenstücke um. Die Datengröße wird dadurch nicht geändert, aber die jpayne@68: Redundanz erhöht, was LZMA2 dabei helfen kann, eine um 10 bis 15% kleinere jpayne@68: \&\fB.xz\fP\-Datei zu erstellen. Die BCJ\-Filter sind immer reversibel, daher jpayne@68: verursacht die Anwendung eines BCJ\-Filters auf den falschen Datentyp keinen jpayne@68: Datenverlust, wobei aber das Kompressionsverhältnis etwas schlechter werden jpayne@68: könnte. Die BCJ\-Filter sind sehr schnell und verbrauchen nur wenig mehr jpayne@68: Speicher. jpayne@68: .IP "" jpayne@68: Diese BCJ\-Filter haben bekannte Probleme mit dem Kompressionsverhältnis: jpayne@68: .RS jpayne@68: .IP \(bu 3 jpayne@68: In einigen Dateitypen, die ausführbaren Code enthalten (zum Beispiel jpayne@68: Objektdateien, statische Bibliotheken und Linux\-Kernelmodule), sind die jpayne@68: Adressen in den Anweisungen mit Füllwerten gefüllt. Diese BCJ\-Filter führen jpayne@68: dennoch die Adressumwandlung aus, wodurch die Kompression bei diesen Dateien jpayne@68: schlechter wird. jpayne@68: .IP \(bu 3 jpayne@68: Falls ein BCJ\-Filter auf ein Archiv angewendet wird, ist es möglich, dass jpayne@68: das Kompressionsverhältnis schlechter als ohne Filter wird. Falls es jpayne@68: beispielsweise ähnliche oder sogar identische ausführbare Dateien gibt, dann jpayne@68: werden diese durch die Filterung wahrscheinlich »unähnlicher« und jpayne@68: verschlechtern dadurch das Kompressionsverhältnis. Der Inhalt jpayne@68: nicht\-ausführbarer Dateien im gleichen Archiv kann sich ebenfalls darauf jpayne@68: auswirken. In der Praxis werden Sie durch Versuche mit oder ohne BCJ\-Filter jpayne@68: selbst herausfinden müssen, was situationsbezogen besser ist. jpayne@68: .RE jpayne@68: .IP "" jpayne@68: Verschiedene Befehlssätze haben unterschiedliche Ausrichtungen: Die jpayne@68: ausführbare Datei muss in den Eingabedateien einem Vielfachen dieses Wertes jpayne@68: entsprechen, damit dieser Filter funktioniert. jpayne@68: .RS jpayne@68: .RS jpayne@68: .PP jpayne@68: .TS jpayne@68: tab(;); jpayne@68: l n l jpayne@68: l n l. jpayne@68: Filter;Ausrichtung;Hinweise jpayne@68: x86;1;32\-Bit oder 64\-Bit x86 jpayne@68: ARM;4; jpayne@68: ARM\-Thumb;2; jpayne@68: ARM64;4;4096\-Byte\-Ausrichtung ist optimal jpayne@68: PowerPC;4;Nur Big Endian jpayne@68: IA\-64;16;Itanium jpayne@68: SPARC;4; jpayne@68: RISC\-V;2; jpayne@68: .TE jpayne@68: .RE jpayne@68: .RE jpayne@68: .IP "" jpayne@68: Da die BCJ\-gefilterten Daten üblicherweise mit LZMA2 komprimiert sind, kann jpayne@68: das Kompressionsverhältnis dadurch etwas verbessert werden, dass die jpayne@68: LZMA2\-Optionen so gesetzt werden, dass sie der Ausrichtung des gewählten jpayne@68: BCJ\-Filters entsprechen. Beispiele: jpayne@68: .RS jpayne@68: .IP \(bu 3 jpayne@68: Der IA\-64\-Filter hat eine 16\-Byte\-Ausrichtung, daher ist \fBpb=4,lp=4,lc=0\fP jpayne@68: für LZMA2 passend (2^4=16). jpayne@68: .IP \(bu 3 jpayne@68: RISC\-V\-Code hat eine 2\-Byte\- oder 4\-Byte\-Ausrichtung, abhängig davon, ob die jpayne@68: Datei 16\-bit\-komprimierte Instruktionen enthält (die C\-Erweiterung). Wenn jpayne@68: 16\-bit\-Instruktionen verwendet werden, ist \fBpb=2,lp=1,lc=3\fP oder jpayne@68: \fBpb=1,lp=1,lc=3\fP passend. Wenn keine 16\-bit\-Instruktionen vorhanden sind, jpayne@68: ist \fBpb=2,lp=2,lc=2\fP am besten. Mit \fBreadelf \-h\fP können Sie überprüfen, ob jpayne@68: »RVC« in der »Flags«\-Zeile auftritt. jpayne@68: .IP \(bu 3 jpayne@68: ARM64 hat stets eine 4\-Byte\-Ausrichtung, daher ist \fBpb=2,lp=2,lc=2\fP am jpayne@68: besten. jpayne@68: .IP \(bu 3 jpayne@68: Der x86\-Filter stellt eine Ausnahme dar. Es ist üblicherweise eine gute jpayne@68: Wahl, bei den Voreinstellungen von LZMA2 (\fBpb=2,lp=0,lc=3\fP) zu bleiben, jpayne@68: wenn Sie ausführbare x86\-Dateien komprimieren jpayne@68: .RE jpayne@68: .IP "" jpayne@68: Alle BCJ\-Filter unterstützen die gleichen \fIOptionen\fP: jpayne@68: .RS jpayne@68: .TP jpayne@68: \fBstart=\fP\fIVersatz\fP jpayne@68: gibt den Start\-\fIVersatz\fP an, der bei der Umwandlung zwischen relativen und jpayne@68: absoluten Adressen verwendet wird. Der \fIVersatz\fP muss ein Vielfaches der jpayne@68: Filterausrichtung sein (siehe die Tabelle oben). Der Standardwert ist 0. In jpayne@68: der Praxis ist dieser Standardwert gut; die Angabe eines benutzerdefinierten jpayne@68: \fIVersatzes\fP ist fast immer unnütz. jpayne@68: .RE jpayne@68: .TP jpayne@68: \fB\-\-delta\fP[\fB=\fP\fIOptionen\fP] jpayne@68: fügt den Delta\-Filter zur Filterkette hinzu. Der Delta\-Filter kann nicht als jpayne@68: letzter Filter in der Filterkette verwendet werden. jpayne@68: .IP "" jpayne@68: Gegenwärtig wird nur eine einfache, Byte\-bezogene Delta\-Berechnung jpayne@68: unterstützt. Beim Komprimieren von zum Beispiel unkomprimierten jpayne@68: Bitmap\-Bildern oder unkomprimierten PCM\-Audiodaten kann es jedoch sinnvoll jpayne@68: sein. Dennoch können für spezielle Zwecke entworfene Algorithmen deutlich jpayne@68: bessere Ergebnisse als Delta und LZMA2 liefern. Dies trifft insbesondere auf jpayne@68: Audiodaten zu, die sich zum Beispiel mit \fBflac\fP(1) schneller und besser jpayne@68: komprimieren lassen. jpayne@68: .IP "" jpayne@68: Unterstützte \fIOptionen\fP: jpayne@68: .RS jpayne@68: .TP jpayne@68: \fBdist=\fP\fIAbstand\fP jpayne@68: gibt den \fIAbstand\fP der Delta\-Berechnung in Byte an. Zulässige Werte für den jpayne@68: \fIAbstand\fP sind 1 bis 256. Der Vorgabewert ist 1. jpayne@68: .IP "" jpayne@68: Zum Beispiel wird mit \fBdist=2\fP und der 8\-Byte\-Eingabe A1 B1 A2 B3 A3 B5 A4 jpayne@68: B7 die Ausgabe A1 B1 01 02 01 02 01 02 sein. jpayne@68: .RE jpayne@68: . jpayne@68: .SS "Andere Optionen" jpayne@68: .TP jpayne@68: \fB\-q\fP, \fB\-\-quiet\fP jpayne@68: unterdrückt Warnungen und Hinweise. Geben Sie dies zweimal an, um auch jpayne@68: Fehlermeldungen zu unterdrücken. Diese Option wirkt sich nicht auf den jpayne@68: Exit\-Status aus. Das bedeutet, das selbst bei einer unterdrückten Warnung jpayne@68: der Exit\-Status zur Anzeige einer Warnung dennoch verwendet wird. jpayne@68: .TP jpayne@68: \fB\-v\fP, \fB\-\-verbose\fP jpayne@68: bewirkt ausführliche Ausgaben. Wenn die Standardfehlerausgabe mit einem jpayne@68: Terminal verbunden ist, zeigt \fBxz\fP den Fortschritt an. Durch zweimalige jpayne@68: Angabe von \fB\-\-verbose\fP wird die Ausgabe noch ausführlicher. jpayne@68: .IP "" jpayne@68: Der Fortschrittsanzeiger stellt die folgenden Informationen dar: jpayne@68: .RS jpayne@68: .IP \(bu 3 jpayne@68: Der Prozentsatz des Fortschritts wird angezeigt, wenn die Größe der jpayne@68: Eingabedatei bekannt ist. Das bedeutet, dass der Prozentsatz in jpayne@68: Weiterleitungen (Pipes) nicht angezeigt werden kann. jpayne@68: .IP \(bu 3 jpayne@68: Menge der erzeugten komprimierten Daten (bei der Kompression) oder der jpayne@68: verarbeiteten Daten (bei der Dekompression). jpayne@68: .IP \(bu 3 jpayne@68: Menge der verarbeiteten unkomprimierten Daten (bei der Kompression) oder der jpayne@68: erzeugten Daten (bei der Dekompression). jpayne@68: .IP \(bu 3 jpayne@68: Kompressionsverhältnis, das mittels Dividieren der Menge der bisher jpayne@68: komprimierten Daten durch die Menge der bisher verarbeiteten unkomprimierten jpayne@68: Daten ermittelt wird. jpayne@68: .IP \(bu 3 jpayne@68: Kompressions\- oder Dekompressionsgeschwindigkeit. Diese wird anhand der jpayne@68: Menge der unkomprimierten verarbeiteten Daten (bei der Kompression) oder der jpayne@68: Menge der erzeugten Daten (bei der Dekompression) pro Sekunde gemessen. Die jpayne@68: Anzeige startet einige Sekunden nachdem \fBxz\fP mit der Verarbeitung der Datei jpayne@68: begonnen hat. jpayne@68: .IP \(bu 3 jpayne@68: Die vergangene Zeit im Format M:SS oder H:MM:SS. jpayne@68: .IP \(bu 3 jpayne@68: Die geschätzte verbleibende Zeit wird nur angezeigt, wenn die Größe der jpayne@68: Eingabedatei bekannt ist und bereits einige Sekunden vergangen sind, nachdem jpayne@68: \fBxz\fP mit der Verarbeitung der Datei begonnen hat. Die Zeit wird in einem jpayne@68: weniger präzisen Format ohne Doppelpunkte angezeigt, zum Beispiel 2 min 30 jpayne@68: s. jpayne@68: .RE jpayne@68: .IP "" jpayne@68: Wenn die Standardfehlerausgabe kein Terminal ist, schreibt \fBxz\fP mit jpayne@68: \fB\-\-verbose\fP nach dem Komprimieren oder Dekomprimieren der Datei in einer jpayne@68: einzelnen Zeile den Dateinamen, die komprimierte Größe, die unkomprimierte jpayne@68: Größe, das Kompressionsverhältnis und eventuell auch die Geschwindigkeit und jpayne@68: die vergangene Zeit in die Standardfehlerausgabe. Die Geschwindigkeit und jpayne@68: die vergangene Zeit werden nur angezeigt, wenn der Vorgang mindestens ein jpayne@68: paar Sekunden gedauert hat. Wurde der Vorgang nicht beendet, zum Beispiel jpayne@68: weil ihn der Benutzer abgebrochen hat, wird außerdem der Prozentsatz des jpayne@68: erreichten Verarbeitungsfortschritts aufgenommen, sofern die Größe der jpayne@68: Eingabedatei bekannt ist. jpayne@68: .TP jpayne@68: \fB\-Q\fP, \fB\-\-no\-warn\fP jpayne@68: setzt den Exit\-Status nicht auf 2, selbst wenn eine Bedingung erfüllt ist, jpayne@68: die eine Warnung gerechtfertigt hätte. Diese Option wirkt sich nicht auf die jpayne@68: Ausführlichkeitsstufe aus, daher müssen sowohl \fB\-\-quiet\fP als auch jpayne@68: \fB\-\-no\-warn\fP angegeben werden, um einerseits keine Warnungen anzuzeigen und jpayne@68: andererseits auch den Exit\-Status nicht zu ändern. jpayne@68: .TP jpayne@68: \fB\-\-robot\fP jpayne@68: gibt Meldungen in einem maschinenlesbaren Format aus. Dadurch soll das jpayne@68: Schreiben von Frontends erleichtert werden, die \fBxz\fP anstelle von Liblzma jpayne@68: verwenden wollen, was in verschiedenen Skripten der Fall sein kann. Die jpayne@68: Ausgabe mit dieser aktivierten Option sollte über mehrere jpayne@68: \fBxz\fP\-Veröffentlichungen stabil sein. Details hierzu finden Sie im Abschnitt jpayne@68: \fBROBOTER\-MODUS\fP. jpayne@68: .TP jpayne@68: \fB\-\-info\-memory\fP jpayne@68: zeigt in einem menschenlesbaren Format an, wieviel physischen Speicher (RAM) jpayne@68: und wie viele Prozessor\-Threads das System nach Annahme von \fBxz\fP hat, sowie jpayne@68: die Speicherbedarfsbegrenzung für Kompression und Dekompression, und beendet jpayne@68: das Programm erfolgreich. jpayne@68: .TP jpayne@68: \fB\-h\fP, \fB\-\-help\fP jpayne@68: zeigt eine Hilfemeldung mit den am häufigsten genutzten Optionen an und jpayne@68: beendet das Programm erfolgreich. jpayne@68: .TP jpayne@68: \fB\-H\fP, \fB\-\-long\-help\fP jpayne@68: zeigt eine Hilfemeldung an, die alle Funktionsmerkmale von \fBxz\fP beschreibt jpayne@68: und beendet das Programm erfolgreich. jpayne@68: .TP jpayne@68: \fB\-V\fP, \fB\-\-version\fP jpayne@68: zeigt die Versionsnummer von \fBxz\fP und Liblzma in einem menschenlesbaren jpayne@68: Format an. Um eine maschinell auswertbare Ausgabe zu erhalten, geben Sie jpayne@68: \fB\-\-robot\fP vor \fB\-\-version\fP an. jpayne@68: . jpayne@68: .SH ROBOTER\-MODUS jpayne@68: Der Roboter\-Modus wird mit der Option \fB\-\-robot\fP aktiviert. Er bewirkt, dass jpayne@68: die Ausgabe von \fBxz\fP leichter von anderen Programmen ausgewertet werden jpayne@68: kann. Gegenwärtig wird \fB\-\-robot\fP nur zusammen mit \fB\-\-list\fP, jpayne@68: \fB\-\-filters\-help\fP, \fB\-\-info\-memory\fP und \fB\-\-version\fP unterstützt. In der jpayne@68: Zukunft wird dieser Modus auch für Kompression und Dekompression jpayne@68: unterstützt. jpayne@68: . jpayne@68: .SS Listenmodus jpayne@68: \fBxz \-\-robot \-\-list\fP verwendet eine durch Tabulatoren getrennte Ausgabe. In jpayne@68: der ersten Spalte jeder Zeile bezeichnet eine Zeichenkette den Typ der jpayne@68: Information, die in dieser Zeile enthalten ist: jpayne@68: .TP jpayne@68: \fBname\fP jpayne@68: Dies ist stets die erste Zeile, wenn eine Datei aufgelistet wird. Die zweite jpayne@68: Spalte in der Zeile enthält den Dateinamen. jpayne@68: .TP jpayne@68: \fBfile\fP jpayne@68: Diese Zeile enthält allgemeine Informationen zur \fB.xz\fP\-Datei. Diese Zeile jpayne@68: wird stets nach der \fBname\fP\-Zeile ausgegeben. jpayne@68: .TP jpayne@68: \fBstream\fP jpayne@68: Dieser Zeilentyp wird nur verwendet, wenn \fB\-\-verbose\fP angegeben wurde. Es jpayne@68: gibt genau so viele \fBstream\fP\-Zeilen, wie Datenströme in der \fB.xz\fP\-Datei jpayne@68: enthalten sind. jpayne@68: .TP jpayne@68: \fBblock\fP jpayne@68: Dieser Zeilentyp wird nur verwendet, wenn \fB\-\-verbose\fP angegeben wurde. Es jpayne@68: gibt so viele \fBblock\fP\-Zeilen, wie Blöcke in der \fB.xz\fP\-Datei. Die jpayne@68: \fBblock\fP\-Zeilen werden nach allen \fBstream\fP\-Zeilen angezeigt; verschiedene jpayne@68: Zeilentypen werden nicht verschachtelt. jpayne@68: .TP jpayne@68: \fBsummary\fP jpayne@68: Dieser Zeilentyp wird nur verwendet, wenn \fB\-\-verbose\fP zwei Mal angegeben jpayne@68: wurde. Diese Zeile wird nach allen \fBblock\fP\-Zeilen ausgegeben. Wie die jpayne@68: \fBfile\fP\-Zeile enthält die \fBsummary\fP\-Zeile allgemeine Informationen zur jpayne@68: \&\fB.xz\fP\-Datei. jpayne@68: .TP jpayne@68: \fBtotals\fP jpayne@68: Diese Zeile ist immer die letzte der Listenausgabe. Sie zeigt die jpayne@68: Gesamtanzahlen und \-größen an. jpayne@68: .PP jpayne@68: Die Spalten der \fBfile\fP\-Zeilen: jpayne@68: .PD 0 jpayne@68: .RS jpayne@68: .IP 2. 4 jpayne@68: Anzahl der Datenströme in der Datei jpayne@68: .IP 3. 4 jpayne@68: Gesamtanzahl der Blöcke in den Datenströmen jpayne@68: .IP 4. 4 jpayne@68: Komprimierte Größe der Datei jpayne@68: .IP 5. 4 jpayne@68: Unkomprimierte Größe der Datei jpayne@68: .IP 6. 4 jpayne@68: Das Kompressionsverhältnis, zum Beispiel \fB0.123\fP. Wenn das Verhältnis über jpayne@68: 9.999 liegt, werden drei Minuszeichen (\fB\-\-\-\fP) anstelle des jpayne@68: Kompressionsverhältnisses angezeigt. jpayne@68: .IP 7. 4 jpayne@68: Durch Kommata getrennte Liste der Namen der Integritätsprüfungen. Für die jpayne@68: bekannten Überprüfungstypen werden folgende Zeichenketten verwendet: jpayne@68: \fBNone\fP, \fBCRC32\fP, \fBCRC64\fP und \fBSHA\-256\fP. \fBUnbek.\fP\fIN\fP wird verwendet, jpayne@68: wobei \fIN\fP die Kennung der Überprüfung als Dezimalzahl angibt (ein\- oder jpayne@68: zweistellig). jpayne@68: .IP 8. 4 jpayne@68: Gesamtgröße der Datenstromauffüllung in der Datei jpayne@68: .RE jpayne@68: .PD jpayne@68: .PP jpayne@68: Die Spalten der \fBstream\fP\-Zeilen: jpayne@68: .PD 0 jpayne@68: .RS jpayne@68: .IP 2. 4 jpayne@68: Datenstromnummer (der erste Datenstrom ist 1) jpayne@68: .IP 3. 4 jpayne@68: Anzahl der Blöcke im Datenstrom jpayne@68: .IP 4. 4 jpayne@68: Komprimierte Startposition jpayne@68: .IP 5. 4 jpayne@68: Unkomprimierte Startposition jpayne@68: .IP 6. 4 jpayne@68: Komprimierte Größe (schließt die Datenstromauffüllung nicht mit ein) jpayne@68: .IP 7. 4 jpayne@68: Unkomprimierte Größe jpayne@68: .IP 8. 4 jpayne@68: Kompressionsverhältnis jpayne@68: .IP 9. 4 jpayne@68: Name der Integritätsprüfung jpayne@68: .IP 10. 4 jpayne@68: Größe der Datenstromauffüllung jpayne@68: .RE jpayne@68: .PD jpayne@68: .PP jpayne@68: Die Spalten der \fBblock\fP\-Zeilen: jpayne@68: .PD 0 jpayne@68: .RS jpayne@68: .IP 2. 4 jpayne@68: Anzahl der in diesem Block enthaltenen Datenströme jpayne@68: .IP 3. 4 jpayne@68: Blocknummer relativ zum Anfang des Datenstroms (der erste Block ist 1) jpayne@68: .IP 4. 4 jpayne@68: Blocknummer relativ zum Anfang der Datei jpayne@68: .IP 5. 4 jpayne@68: Komprimierter Startversatz relativ zum Beginn der Datei jpayne@68: .IP 6. 4 jpayne@68: Unkomprimierter Startversatz relativ zum Beginn der Datei jpayne@68: .IP 7. 4 jpayne@68: Komprimierte Gesamtgröße des Blocks (einschließlich Header) jpayne@68: .IP 8. 4 jpayne@68: Unkomprimierte Größe jpayne@68: .IP 9. 4 jpayne@68: Kompressionsverhältnis jpayne@68: .IP 10. 4 jpayne@68: Name der Integritätsprüfung jpayne@68: .RE jpayne@68: .PD jpayne@68: .PP jpayne@68: Wenn \fB\-\-verbose\fP zwei Mal angegeben wurde, werden zusätzliche Spalten in jpayne@68: die \fBblock\fP\-Zeilen eingefügt. Diese werden mit einem einfachen \fB\-\-verbose\fP jpayne@68: nicht angezeigt, da das Ermitteln dieser Informationen viele Suchvorgänge jpayne@68: erfordert und daher recht langsam sein kann: jpayne@68: .PD 0 jpayne@68: .RS jpayne@68: .IP 11. 4 jpayne@68: Wert der Integritätsprüfung in hexadezimaler Notation jpayne@68: .IP 12. 4 jpayne@68: Block\-Header\-Größe jpayne@68: .IP 13. 4 jpayne@68: Block\-Schalter: \fBc\fP gibt an, dass die komprimierte Größe verfügbar ist, und jpayne@68: \fBu\fP gibt an, dass die unkomprimierte Größe verfügbar ist. Falls der jpayne@68: Schalter nicht gesetzt ist, wird stattdessen ein Bindestrich (\fB\-\fP) jpayne@68: angezeigt, um die Länge der Zeichenkette beizubehalten. In Zukunft könnten jpayne@68: neue Schalter am Ende der Zeichenkette hinzugefügt werden. jpayne@68: .IP 14. 4 jpayne@68: Größe der tatsächlichen komprimierten Daten im Block. Ausgeschlossen sind jpayne@68: hierbei die Block\-Header, die Blockauffüllung und die Prüffelder. jpayne@68: .IP 15. 4 jpayne@68: Größe des Speichers (in Byte), der zum Dekomprimieren dieses Blocks mit jpayne@68: dieser \fBxz\fP\-Version benötigt wird. jpayne@68: .IP 16. 4 jpayne@68: Filterkette. Beachten Sie, dass die meisten der bei der Kompression jpayne@68: verwendeten Optionen nicht bekannt sein können, da in den \fB.xz\fP\-Headern nur jpayne@68: die für die Dekompression erforderlichen Optionen gespeichert sind. jpayne@68: .RE jpayne@68: .PD jpayne@68: .PP jpayne@68: Die Spalten der \fBsummary\fP\-Zeilen: jpayne@68: .PD 0 jpayne@68: .RS jpayne@68: .IP 2. 4 jpayne@68: Größe des Speichers (in Byte), der zum Dekomprimieren dieser Datei mit jpayne@68: dieser \fBxz\fP\-Version benötigt wird. jpayne@68: .IP 3. 4 jpayne@68: \fByes\fP oder \fBno\fP geben an, ob in allen Block\-Headern sowohl die jpayne@68: komprimierte als auch die unkomprimierte Größe gespeichert ist. jpayne@68: .PP jpayne@68: \fISeit\fP \fBxz\fP \fI5.1.2alpha:\fP jpayne@68: .IP 4. 4 jpayne@68: Minimale \fBxz\fP\-Version, die zur Dekompression der Datei erforderlich ist jpayne@68: .RE jpayne@68: .PD jpayne@68: .PP jpayne@68: Die Spalten der \fBtotals\fP\-Zeile: jpayne@68: .PD 0 jpayne@68: .RS jpayne@68: .IP 2. 4 jpayne@68: Anzahl der Datenströme jpayne@68: .IP 3. 4 jpayne@68: Anzahl der Blöcke jpayne@68: .IP 4. 4 jpayne@68: Komprimierte Größe jpayne@68: .IP 5. 4 jpayne@68: Unkomprimierte Größe jpayne@68: .IP 6. 4 jpayne@68: Durchschnittliches Kompressionsverhältnis jpayne@68: .IP 7. 4 jpayne@68: Durch Kommata getrennte Liste der Namen der Integritätsprüfungen, die in den jpayne@68: Dateien präsent waren. jpayne@68: .IP 8. 4 jpayne@68: Größe der Datenstromauffüllung jpayne@68: .IP 9. 4 jpayne@68: Anzahl der Dateien. Dies dient dazu, die Reihenfolge der vorigen Spalten an jpayne@68: die in den \fBfile\fP\-Zeilen anzugleichen. jpayne@68: .PD jpayne@68: .RE jpayne@68: .PP jpayne@68: Wenn \fB\-\-verbose\fP zwei Mal angegeben wird, werden zusätzliche Spalten in die jpayne@68: \fBtotals\fP\-Zeile eingefügt: jpayne@68: .PD 0 jpayne@68: .RS jpayne@68: .IP 10. 4 jpayne@68: Maximale Größe des Speichers (in Byte), der zum Dekomprimieren der Dateien jpayne@68: mit dieser \fBxz\fP\-Version benötigt wird. jpayne@68: .IP 11. 4 jpayne@68: \fByes\fP oder \fBno\fP geben an, ob in allen Block\-Headern sowohl die jpayne@68: komprimierte als auch die unkomprimierte Größe gespeichert ist. jpayne@68: .PP jpayne@68: \fISeit\fP \fBxz\fP \fI5.1.2alpha:\fP jpayne@68: .IP 12. 4 jpayne@68: Minimale \fBxz\fP\-Version, die zur Dekompression der Datei erforderlich ist jpayne@68: .RE jpayne@68: .PD jpayne@68: .PP jpayne@68: Zukünftige Versionen könnten neue Zeilentypen hinzufügen, weiterhin könnten jpayne@68: auch in den vorhandenen Zeilentypen weitere Spalten hinzugefügt werden, aber jpayne@68: die existierenden Spalten werden nicht geändert. jpayne@68: . jpayne@68: .SS Filterhilfe jpayne@68: \fBxz \-\-robot \-\-filters\-help\fP gibt die unterstützten Filter im folgenden jpayne@68: Format aus: jpayne@68: .PP jpayne@68: \fIFilter\fP\fB:\fP\fIOption\fP\fB=<\fP\fIWert\fP\fB>,\fP\fIOption\fP\fB=<\fP\fIWert\fP\fB>\fP jpayne@68: … jpayne@68: .TP jpayne@68: \fIFilter\fP jpayne@68: Name des Filters jpayne@68: .TP jpayne@68: \fIOption\fP jpayne@68: Name der filterspezifischen Option jpayne@68: .TP jpayne@68: \fIWert\fP jpayne@68: Der numerische \fIWert\fP erscheint als Bereich jpayne@68: \fB<\fP\fIMinimum\fP\fB\-\fP\fIMaximum\fP\fB>\fP. Die Auswahl des jpayne@68: Zeichenketten\-\fIWert\fPs wird in \fB< >\fP eingeschlossen und durch \fB|\fP jpayne@68: getrennt. jpayne@68: .PP jpayne@68: Jeder Filter wird in einer separaten Zeile ausgegeben. jpayne@68: . jpayne@68: .SS "Informationen zur Speicherbedarfsbegrenzung" jpayne@68: \fBxz \-\-robot \-\-info\-memory\fP gibt eine einzelne Zeile mit mehreren durch jpayne@68: Tabulatoren getrennten Spalten aus: jpayne@68: .IP 1. 4 jpayne@68: Gesamter physischer Speicher (RAM) in Byte. jpayne@68: .IP 2. 4 jpayne@68: Speicherbedarfsbegrenzung für die Kompression in Byte jpayne@68: (\fB\-\-memlimit\-compress\fP). Ein spezieller Wert von \fB0\fP bezeichnet die jpayne@68: Standardeinstellung, die im Einzelthread\-Modus bedeutet, dass keine jpayne@68: Begrenzung vorhanden ist. jpayne@68: .IP 3. 4 jpayne@68: Speicherbedarfsbegrenzung für die Dekompression in Byte jpayne@68: (\fB\-\-memlimit\-decompress\fP). Ein spezieller Wert von \fB0\fP bezeichnet die jpayne@68: Standardeinstellung, die im Einzelthread\-Modus bedeutet, dass keine jpayne@68: Begrenzung vorhanden ist. jpayne@68: .IP 4. 4 jpayne@68: Seit \fBxz\fP 5.3.4alpha: Die Speichernutzung für Multithread\-Dekompression in jpayne@68: Byte (\fB\-\-memlimit\-mt\-decompress\fP). Dies ist niemals \fB0\fP, da ein jpayne@68: systemspezifischer Vorgabewert (gezeigt in Spalte 5) verwendet wird, falls jpayne@68: keine Grenze ausdrücklich angegeben wurde. Dies ist außerdem niemals größer jpayne@68: als der Wert in in Spalte 3, selbst wenn mit \fB\-\-memlimit\-mt\-decompress\fP ein jpayne@68: größerer Wert angegeben wurde. jpayne@68: .IP 5. 4 jpayne@68: Seit \fBxz\fP 5.3.4alpha: Eine systemspezifisch vorgegebene Begrenzung des jpayne@68: Speicherverbrauchs, die zur Begrenzung der Anzahl der Threads beim jpayne@68: Komprimieren mit automatischer Anzahl der Threads (\fB\-\-threads=0\fP) und wenn jpayne@68: keine Speicherbedarfsbegrenzung angegeben wurde (\fB\-\-memlimit\-compress\fP) jpayne@68: verwendet wird. Dies wird auch als Standardwert für jpayne@68: \fB\-\-memlimit\-mt\-decompress\fP verwendet. jpayne@68: .IP 6. 4 jpayne@68: Seit \fBxz\fP 5.3.4alpha: Anzahl der verfügbaren Prozessorthreads. jpayne@68: .PP jpayne@68: In der Zukunft könnte die Ausgabe von \fBxz \-\-robot \-\-info\-memory\fP weitere jpayne@68: Spalten enthalten, aber niemals mehr als eine einzelne Zeile. jpayne@68: . jpayne@68: .SS Version jpayne@68: \fBxz \-\-robot \-\-version\fP gibt die Versionsnummern von \fBxz\fP und Liblzma im jpayne@68: folgenden Format aus: jpayne@68: .PP jpayne@68: \fBXZ_VERSION=\fP\fIXYYYZZZS\fP jpayne@68: .br jpayne@68: \fBLIBLZMA_VERSION=\fP\fIXYYYZZZS\fP jpayne@68: .TP jpayne@68: \fIX\fP jpayne@68: Hauptversion. jpayne@68: .TP jpayne@68: \fIYYY\fP jpayne@68: Unterversion. Gerade Zahlen bezeichnen eine stabile Version. Ungerade Zahlen jpayne@68: bezeichnen Alpha\- oder Betaversionen. jpayne@68: .TP jpayne@68: \fIZZZ\fP jpayne@68: Patch\-Stufe für stabile Veröffentlichungen oder einfach nur ein Zähler für jpayne@68: Entwicklungsversionen. jpayne@68: .TP jpayne@68: \fIS\fP jpayne@68: Stabilität. 0 ist Alpha, 1 ist Beta und 2 ist stabil. \fIS\fP sollte immer 2 jpayne@68: sein, wenn \fIYYY\fP eine gerade Zahl ist. jpayne@68: .PP jpayne@68: \fIXYYYZZZS\fP sind in beiden Zeilen gleich, sofern \fBxz\fP und Liblzma aus der jpayne@68: gleichen Veröffentlichung der XZ\-Utils stammen. jpayne@68: .PP jpayne@68: Beispiele: 4.999.9beta ist \fB49990091\fP und 5.0.0 is \fB50000002\fP. jpayne@68: . jpayne@68: .SH EXIT\-STATUS jpayne@68: .TP jpayne@68: \fB0\fP jpayne@68: Alles ist in Ordnung. jpayne@68: .TP jpayne@68: \fB1\fP jpayne@68: Ein Fehler ist aufgetreten. jpayne@68: .TP jpayne@68: \fB2\fP jpayne@68: Es ist etwas passiert, das eine Warnung rechtfertigt, aber es sind keine jpayne@68: tatsächlichen Fehler aufgetreten. jpayne@68: .PP jpayne@68: In die Standardausgabe geschriebene Hinweise (keine Warnungen oder Fehler), jpayne@68: welche den Exit\-Status nicht beeinflussen. jpayne@68: . jpayne@68: .SH UMGEBUNGSVARIABLEN jpayne@68: \fBxz\fP wertet eine durch Leerzeichen getrennte Liste von Optionen in den jpayne@68: Umgebungsvariablen \fBXZ_DEFAULTS\fP und \fBXZ_OPT\fP aus (in dieser Reihenfolge), jpayne@68: bevor die Optionen aus der Befehlszeile ausgewertet werden. Beachten Sie, jpayne@68: dass beim Auswerten der Umgebungsvariablen nur Optionen berücksichtigt jpayne@68: werden; alle Einträge, die keine Optionen sind, werden stillschweigend jpayne@68: ignoriert. Die Auswertung erfolgt mit \fBgetopt_long\fP(3), welches auch für jpayne@68: die Befehlszeilenargumente verwendet wird. jpayne@68: .TP jpayne@68: \fBXZ_DEFAULTS\fP jpayne@68: Benutzerspezifische oder systemweite Standardoptionen. Typischerweise werden jpayne@68: diese in einem Shell\-Initialisierungsskript gesetzt, um die jpayne@68: Speicherbedarfsbegrenzung von \fBxz\fP standardmäßig zu aktivieren. Außer bei jpayne@68: Shell\-Initialisierungsskripten und in ähnlichen Spezialfällen darf die jpayne@68: Variable \fBXZ_DEFAULTS\fP in Skripten niemals gesetzt oder außer Kraft gesetzt jpayne@68: werden. jpayne@68: .TP jpayne@68: \fBXZ_OPT\fP jpayne@68: Dies dient der Übergabe von Optionen an \fBxz\fP, wenn es nicht möglich ist, jpayne@68: die Optionen direkt in der Befehlszeile von \fBxz\fP zu übergeben. Dies ist der jpayne@68: Fall, wenn \fBxz\fP von einem Skript oder Dienstprogramm ausgeführt wird, zum jpayne@68: Beispiel GNU \fBtar\fP(1): jpayne@68: .RS jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRXZ_OPT=\-2v tar caf foo.tar.xz foo\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .RE jpayne@68: .IP "" jpayne@68: Skripte können \fBXZ_OPT\fP zum Beispiel zum Setzen skriptspezifischer jpayne@68: Standard\-Kompressionsoptionen verwenden. Es ist weiterhin empfehlenswert, jpayne@68: Benutzern die Außerkraftsetzung von \fBXZ_OPT\fP zu erlauben, falls dies jpayne@68: angemessen ist. Zum Beispiel könnte in \fBsh\fP(1)\-Skripten Folgendes stehen: jpayne@68: .RS jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRXZ_OPT=${XZ_OPT\-"\-7e"} jpayne@68: export XZ_OPT\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .RE jpayne@68: . jpayne@68: .SH "KOMPATIBILITÄT ZU DEN LZMA\-UTILS" jpayne@68: Die Befehlszeilensyntax von \fBxz\fP ist praktisch eine Obermenge der von jpayne@68: \fBlzma\fP, \fBunlzma\fP und \fBlzcat\fP in den LZMA\-Utils der Versionen 4.32.x. In jpayne@68: den meisten Fällen sollte es möglich sein, die LZMA\-Utils durch die XZ\-Utils jpayne@68: zu ersetzen, ohne vorhandene Skripte ändern zu müssen. Dennoch gibt es jpayne@68: einige Inkompatibilitäten, die manchmal Probleme verursachen können. jpayne@68: . jpayne@68: .SS "Voreinstellungsstufen zur Kompression" jpayne@68: Die Nummerierung der Voreinstellungsstufen der Kompression ist in \fBxz\fP und jpayne@68: den LZMA\-Utils unterschiedlich. Der wichtigste Unterschied ist die Zuweisung jpayne@68: der Wörterbuchgrößen zu den verschiedenen Voreinstellungsstufen. Die jpayne@68: Wörterbuchgröße ist etwa gleich dem Speicherbedarf bei der Dekompression. jpayne@68: .RS jpayne@68: .PP jpayne@68: .TS jpayne@68: tab(;); jpayne@68: c c c jpayne@68: c n n. jpayne@68: Stufe;xz;LZMA\-Utils jpayne@68: \-0;256 KiB;nicht verfügbar jpayne@68: \-1;1 MiB;64 KiB jpayne@68: \-2;2 MiB;1 MiB jpayne@68: \-3;4 MiB;512 KiB jpayne@68: \-4;4 MiB;1 MiB jpayne@68: \-5;8 MiB;2 MiB jpayne@68: \-6;8 MiB;4 MiB jpayne@68: \-7;16 MiB;8 MiB jpayne@68: \-8;32 MiB;16 MiB jpayne@68: \-9;64 MiB;32 MiB jpayne@68: .TE jpayne@68: .RE jpayne@68: .PP jpayne@68: Die Unterschiede in der Wörterbuchgröße beeinflussen auch den Speicherbedarf jpayne@68: bei der Kompression, aber es gibt noch einige andere Unterschiede zwischen jpayne@68: den LZMA\-Utils und den XZ\-Utils, die die Kluft noch vergrößern: jpayne@68: .RS jpayne@68: .PP jpayne@68: .TS jpayne@68: tab(;); jpayne@68: c c c jpayne@68: c n n. jpayne@68: Stufe;xz;LZMA\-Utils 4.32.x jpayne@68: \-0;3 MiB;nicht verfügbar jpayne@68: \-1;9 MiB;2 MiB jpayne@68: \-2;17 MiB;12 MiB jpayne@68: \-3;32 MiB;12 MiB jpayne@68: \-4;48 MiB;16 MiB jpayne@68: \-5;94 MiB;26 MiB jpayne@68: \-6;94 MiB;45 MiB jpayne@68: \-7;186 MiB;83 MiB jpayne@68: \-8;370 MiB;159 MiB jpayne@68: \-9;674 MiB;311 MiB jpayne@68: .TE jpayne@68: .RE jpayne@68: .PP jpayne@68: Die standardmäßige Voreinstellungsstufe in den LZMA\-Utils ist \fB\-7\fP, während jpayne@68: diese in den XZ\-Utils \fB\-6\fP ist, daher verwenden beide standardmäßig ein 8 jpayne@68: MiB großes Wörterbuch. jpayne@68: . jpayne@68: .SS "Vor\- und Nachteile von .lzma\-Dateien als Datenströme" jpayne@68: Die unkomprimierte Größe der Datei kann in den \fB.lzma\fP\-Headern gespeichert jpayne@68: werden. Die LZMA\-Utils tun das beim Komprimieren gewöhnlicher Dateien. Als jpayne@68: Alternative kann die unkomprimierte Größe als unbekannt markiert und eine jpayne@68: Nutzdatenende\-Markierung (end\-of\-payload) verwendet werden, um anzugeben, wo jpayne@68: der Dekompressor stoppen soll. Die LZMA\-Utils verwenden diese Methode, wenn jpayne@68: die unkomprimierte Größe unbekannt ist, was beispielsweise in Pipes jpayne@68: (Befehlsverkettungen) der Fall ist. jpayne@68: .PP jpayne@68: \fBxz\fP unterstützt die Dekompression von \fB.lzma\fP\-Dateien mit oder ohne jpayne@68: Nutzdatenende\-Markierung, aber alle von \fBxz\fP erstellten \fB.lzma\fP\-Dateien jpayne@68: verwenden diesen Nutzdatenende\-Markierung, wobei die unkomprimierte Größe in jpayne@68: den \fB.lzma\fP\-Headern als unbekannt markiert wird. Das könnte in einigen jpayne@68: unüblichen Situationen ein Problem sein. Zum Beispiel könnte ein jpayne@68: \&\fB.lzma\fP\-Dekompressor in einem Gerät mit eingebettetem System nur mit jpayne@68: Dateien funktionieren, deren unkomprimierte Größe bekannt ist. Falls Sie auf jpayne@68: dieses Problem stoßen, müssen Sie die LZMA\-Utils oder das LZMA\-SDK jpayne@68: verwenden, um \fB.lzma\fP\-Dateien mit bekannter unkomprimierter Größe zu jpayne@68: erzeugen. jpayne@68: . jpayne@68: .SS "Nicht unterstützte .lzma\-Dateien" jpayne@68: Das \fB.lzma\fP\-Format erlaubt \fIlc\fP\-Werte bis zu 8 und \fIlp\fP\-Werte bis zu jpayne@68: 4. Die LZMA\-Utils können Dateien mit beliebigem \fIlc\fP und \fIlp\fP jpayne@68: dekomprimieren, aber erzeugen immer Dateien mit \fBlc=3\fP und \fBlp=0\fP. Das jpayne@68: Erzeugen von Dateien mit anderem \fIlc\fP und \fIlp\fP ist mit \fBxz\fP und mit dem jpayne@68: LZMA\-SDK möglich. jpayne@68: .PP jpayne@68: Die Implementation des LZMA\-Filters in liblzma setzt voraus, dass die Summe jpayne@68: von \fIlc\fP und \fIlp\fP nicht größer als 4 ist. Daher können \fB.lzma\fP\-Dateien, jpayne@68: welche diese Begrenzung überschreiten, mit \fBxz\fP nicht dekomprimiert werden. jpayne@68: .PP jpayne@68: Die LZMA\-Utils erzeugen nur \fB.lzma\fP\-Dateien mit einer Wörterbuchgröße von jpayne@68: 2^\fIn\fP (einer Zweierpotenz), aber akzeptieren Dateien mit einer beliebigen jpayne@68: Wörterbuchgröße. Liblzma akzeptiert nur \fB.lzma\fP\-Dateien mit einer jpayne@68: Wörterbuchgröße von 2^\fIn\fP oder 2^\fIn\fP + 2^(\fIn\fP\-1). Dies dient zum jpayne@68: Verringern von Fehlalarmen beim Erkennen von \fB.lzma\fP\-Dateien. jpayne@68: .PP jpayne@68: Diese Einschränkungen sollten in der Praxis kein Problem sein, da praktisch jpayne@68: alle \fB.lzma\fP\-Dateien mit Einstellungen komprimiert wurden, die Liblzma jpayne@68: akzeptieren wird. jpayne@68: . jpayne@68: .SS "Angehängter Datenmüll" jpayne@68: Bei der Dekompression ignorieren die LZMA\-Utils stillschweigend alles nach jpayne@68: dem ersten \fB.lzma\fP\-Datenstrom. In den meisten Situationen ist das ein jpayne@68: Fehler. Das bedeutet auch, dass die LZMA\-Utils die Dekompression verketteter jpayne@68: \&\fB.lzma\fP\-Dateien nicht unterstützen. jpayne@68: .PP jpayne@68: Wenn nach dem ersten \fB.lzma\fP\-Datenstrom Daten verbleiben, erachtet \fBxz\fP jpayne@68: die Datei als beschädigt, es sei denn, die Option \fB\-\-single\-stream\fP wurde jpayne@68: verwendet. Dies könnte die Ausführung von Skripten beeinflussen, die davon jpayne@68: ausgehen, dass angehängter Datenmüll ignoriert wird. jpayne@68: . jpayne@68: .SH ANMERKUNGEN jpayne@68: . jpayne@68: .SS "Die komprimierte Ausgabe kann variieren" jpayne@68: Die exakte komprimierte Ausgabe, die aus der gleichen unkomprimierten jpayne@68: Eingabedatei erzeugt wird, kann zwischen den Versionen der XZ\-Utils jpayne@68: unterschiedlich sein, selbst wenn die Kompressionsoptionen identisch jpayne@68: sind. Das kommt daher, weil der Kodierer verbessert worden sein könnte jpayne@68: (hinsichtlich schnellerer oder besserer Kompression), ohne das Dateiformat jpayne@68: zu beeinflussen. Die Ausgabe kann sogar zwischen verschiedenen Programmen jpayne@68: der gleichen Version der XZ\-Utils variieren, wenn bei der Erstellung des jpayne@68: Binärprogramms unterschiedliche Optionen verwendet wurden. jpayne@68: .PP jpayne@68: Sobald \fB\-\-rsyncable\fP implementiert wurde, bedeutet das, dass die sich jpayne@68: ergebenden Dateien nicht notwendigerweise mit Rsync abgeglichen werden jpayne@68: können, außer wenn die alte und neue Datei mit der gleichen \fBxz\fP\-Version jpayne@68: erzeugt wurden. Das Problem kann beseitigt werden, wenn ein Teil der jpayne@68: Encoder\-Implementierung eingefroren wird, um die mit Rsync abgleichbare jpayne@68: Ausgabe über \fBxz\fP\-Versionsgrenzen hinweg stabil zu halten. jpayne@68: . jpayne@68: .SS "Eingebettete .xz\-Dekompressoren" jpayne@68: Eingebettete \fB.xz\fP\-Dekompressor\-Implementierungen wie XZ Embedded jpayne@68: unterstützen nicht unbedingt Dateien, die mit anderen Integritätsprüfungen jpayne@68: (\fIPrüfung\fP\-Typen) als \fBnone\fP und \fBcrc32\fP erzeugt wurden. Da jpayne@68: \fB\-\-check=crc64\fP die Voreinstellung ist, müssen Sie \fB\-\-check=none\fP oder jpayne@68: \fB\-\-check=crc32\fP verwenden, wenn Sie Dateien für eingebettete Systeme jpayne@68: erstellen. jpayne@68: .PP jpayne@68: Außerhalb eingebetteter Systeme unterstützen die Dekompressoren des jpayne@68: \&\fB.xz\fP\-Formats alle \fIPrüfung\fP\-Typen oder sind mindestens in der Lage, die jpayne@68: Datei zu dekomprimieren, ohne deren Integrität zu prüfen, wenn die bestimmte jpayne@68: \fIPrüfung\fP nicht verfügbar ist. jpayne@68: .PP jpayne@68: XZ Embedded unterstützt BCJ\-Filter, aber nur mit dem vorgegebenen jpayne@68: Startversatz. jpayne@68: . jpayne@68: .SH BEISPIELE jpayne@68: . jpayne@68: .SS Grundlagen jpayne@68: Komprimiert die Datei \fIfoo\fP mit der Standard\-Kompressionsstufe (\fB\-6\fP) zu jpayne@68: \fIfoo.xz\fP und entfernt \fIfoo\fP nach erfolgreicher Kompression: jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRxz foo\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .PP jpayne@68: \fIbar.xz\fP in \fIbar\fP dekomprimieren und \fIbar.xz\fP selbst dann nicht löschen, jpayne@68: wenn die Dekompression erfolgreich war: jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRxz \-dk bar.xz\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .PP jpayne@68: \fIbaz.tar.xz\fP mit der Voreinstellung \fB\-4e\fP (\fB\-4 \-\-extreme\fP) erzeugen, was jpayne@68: langsamer ist als die Vorgabe \fB\-6\fP, aber weniger Speicher für Kompression jpayne@68: und Dekompression benötigt (48\ MiB beziehungsweise 5\ MiB): jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRtar cf \- baz | xz \-4e > baz.tar.xz\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .PP jpayne@68: Eine Mischung aus komprimierten und unkomprimierten Dateien kann mit einem jpayne@68: einzelnen Befehl dekomprimiert in die Standardausgabe geschrieben werden: jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRxz \-dcf a.txt b.txt.xz c.txt d.txt.lzma > abcd.txt\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: . jpayne@68: .SS "Parallele Kompression von vielen Dateien" jpayne@68: Auf GNU\- und *BSD\-Systemen können \fBfind\fP(1) und \fBxargs\fP(1) zum jpayne@68: Parallelisieren der Kompression vieler Dateien verwendet werden: jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRfind . \-type f \e! \-name '*.xz' \-print0 \e jpayne@68: | xargs \-0r \-P4 \-n16 xz \-T1\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .PP jpayne@68: Die Option \fB\-P\fP von \fBxargs\fP(1) legt die Anzahl der parallelen jpayne@68: \fBxz\fP\-Prozesse fest. Der beste Wert für die Option \fB\-n\fP hängt davon ab, wie jpayne@68: viele Dateien komprimiert werden sollen. Wenn es sich nur um wenige Dateien jpayne@68: handelt, sollte der Wert wahrscheinlich 1 sein; bei Zehntausenden von jpayne@68: Dateien kann 100 oder noch mehr angemessener sein, um die Anzahl der jpayne@68: \fBxz\fP\-Prozesse zu beschränken, die \fBxargs\fP(1) schließlich erzeugen wird. jpayne@68: .PP jpayne@68: Die Option \fB\-T1\fP für \fBxz\fP dient dazu, den Einzelthread\-Modus zu erzwingen, jpayne@68: da \fBxargs\fP(1) zur Steuerung des Umfangs der Parallelisierung verwendet jpayne@68: wird. jpayne@68: . jpayne@68: .SS Roboter\-Modus jpayne@68: Berechnen, wie viel Byte nach der Kompression mehrerer Dateien insgesamt jpayne@68: eingespart wurden: jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRxz \-\-robot \-\-list *.xz | awk '/^totals/{print $5\-$4}'\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .PP jpayne@68: Ein Skript könnte abfragen wollen, ob es ein \fBxz\fP verwendet, das aktuell jpayne@68: genug ist. Das folgende \fBsh\fP(1)\-Skript prüft, ob die Versionsnummer des jpayne@68: Dienstprogramms \fBxz\fP mindestens 5.0.0 ist. Diese Methode ist zu alten jpayne@68: Beta\-Versionen kompatibel, welche die Option \fB\-\-robot\fP nicht unterstützen: jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRif ! eval "$(xz \-\-robot \-\-version 2> /dev/null)" || jpayne@68: [ "$XZ_VERSION" \-lt 50000002 ]; then jpayne@68: echo "Your xz is too old." jpayne@68: fi jpayne@68: unset XZ_VERSION LIBLZMA_VERSION\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .PP jpayne@68: Eine Speicherbedarfsbegrenzung für die Dekompression mit \fBXZ_OPT\fP setzen, jpayne@68: aber eine bereits gesetzte Begrenzung nicht erhöhen: jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRNEWLIM=$((123 << 20))\ \ # 123 MiB jpayne@68: OLDLIM=$(xz \-\-robot \-\-info\-memory | cut \-f3) jpayne@68: if [ $OLDLIM \-eq 0 \-o $OLDLIM \-gt $NEWLIM ]; then jpayne@68: XZ_OPT="$XZ_OPT \-\-memlimit\-decompress=$NEWLIM" jpayne@68: export XZ_OPT jpayne@68: fi\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: . jpayne@68: .SS "Benutzerdefinierte Filterketten für die Kompression" jpayne@68: Der einfachste Anwendungsfall für benutzerdefinierte Filterketten ist die jpayne@68: Anpassung von LZMA2\-Voreinstellungsstufen. Das kann nützlich sein, weil die jpayne@68: Voreinstellungen nur einen Teil der potenziell sinnvollen Kombinationen aus jpayne@68: Kompressionseinstellungen abdecken. jpayne@68: .PP jpayne@68: Die KompCPU\-Spalten der Tabellen aus den Beschreibungen der Optionen \fB\-0\fP … jpayne@68: \fB\-9\fP und \fB\-\-extreme\fP sind beim Anpassen der LZMA2\-Voreinstellungen jpayne@68: nützlich. Diese sind die relevanten Teile aus diesen zwei Tabellen: jpayne@68: .RS jpayne@68: .PP jpayne@68: .TS jpayne@68: tab(;); jpayne@68: c c jpayne@68: n n. jpayne@68: Voreinst.;KomprCPU jpayne@68: \-0;0 jpayne@68: \-1;1 jpayne@68: \-2;2 jpayne@68: \-3;3 jpayne@68: \-4;4 jpayne@68: \-5;5 jpayne@68: \-6;6 jpayne@68: \-5e;7 jpayne@68: \-6e;8 jpayne@68: .TE jpayne@68: .RE jpayne@68: .PP jpayne@68: Wenn Sie wissen, dass eine Datei für eine gute Kompression ein etwas jpayne@68: größeres Wörterbuch benötigt (zum Beispiel 32 MiB), aber Sie sie schneller jpayne@68: komprimieren wollen, als dies mit \fBxz \-8\fP geschehen würde, kann eine jpayne@68: Voreinstellung mit einem niedrigen KompCPU\-Wert (zum Beispiel 1) dahingehend jpayne@68: angepasst werden, ein größeres Wörterbuch zu verwenden: jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRxz \-\-lzma2=preset=1,dict=32MiB foo.tar\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .PP jpayne@68: Mit bestimmten Dateien kann der obige Befehl schneller sein als \fBxz \-6\fP, jpayne@68: wobei die Kompression deutlich besser wird. Dennoch muss betont werden, dass jpayne@68: nur wenige Dateien von einem größeren Wörterbuch profitieren, wenn der jpayne@68: KompCPU\-Wert niedrig bleibt. Der offensichtlichste Fall, in dem ein größeres jpayne@68: Wörterbuch sehr hilfreich sein kann, ist ein Archiv, das einander sehr jpayne@68: ähnliche Dateien enthält, die jeweils wenigstens einige Megabyte groß jpayne@68: sind. Das Wörterbuch muss dann deutlich größer sein als die einzelne Datei, jpayne@68: damit LZMA2 den größtmöglichen Vorteil aus den Ähnlichkeiten der aufeinander jpayne@68: folgenden Dateien zieht. jpayne@68: .PP jpayne@68: Wenn hoher Speicherbedarf für Kompression und Dekompression kein Problem ist jpayne@68: und die zu komprimierende Datei mindestens einige Hundert Megabyte groß ist, jpayne@68: kann es sinnvoll sein, ein noch größeres Wörterbuch zu verwenden, als die 64 jpayne@68: MiB, die mit \fBxz \-9\fP verwendet werden würden: jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRxz \-vv \-\-lzma2=dict=192MiB big_foo.tar\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .PP jpayne@68: Die Verwendung von \fB\-vv\fP (\fB\-\-verbose \-\-verbose\fP) wie im obigen Beispiel jpayne@68: kann nützlich sein, um den Speicherbedarf für Kompressor und Dekompressor zu jpayne@68: sehen. Denken Sie daran, dass ein Wörterbuch, das größer als die jpayne@68: unkomprimierte Datei ist, Speicherverschwendung wäre. Daher ist der obige jpayne@68: Befehl für kleine Dateien nicht sinnvoll. jpayne@68: .PP jpayne@68: Manchmal spielt die Kompressionszeit keine Rolle, aber der Speicherbedarf jpayne@68: bei der Dekompression muss gering gehalten werden, zum Beispiel um die Datei jpayne@68: auf eingebetteten Systemen dekomprimieren zu können. Der folgende Befehl jpayne@68: verwendet \fB\-6e\fP (\fB\-6 \-\-extreme\fP) als Basis und setzt die Wörterbuchgröße jpayne@68: auf nur 64\ KiB. Die sich ergebende Datei kann mit XZ Embedded (aus diesem jpayne@68: Grund ist dort \fB\-\-check=crc32\fP) mit nur etwa 100\ KiB Speicher jpayne@68: dekomprimiert werden. jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRxz \-\-check=crc32 \-\-lzma2=preset=6e,dict=64KiB foo\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .PP jpayne@68: Wenn Sie so viele Byte wie möglich herausquetschen wollen, kann die jpayne@68: Anpassung der Anzahl der literalen Kontextbits (\fIlc\fP) und der Anzahl der jpayne@68: Positionsbits (\fIpb\fP) manchmal hilfreich sein. Auch die Anpassung der Anzahl jpayne@68: der literalen Positionsbits (\fIlp\fP) könnte helfen, aber üblicherweise sind jpayne@68: \fIlc\fP und \fIpb\fP wichtiger. Wenn ein Quellcode\-Archiv zum Beispiel jpayne@68: hauptsächlich ASCII\-Text enthält, könnte ein Aufruf wie der folgende eine jpayne@68: etwas kleinere Datei (etwa 0,1\ %) ergeben als mit \fBxz \-6e\fP (versuchen Sie jpayne@68: es auch \fBlc=4\fP): jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRxz \-\-lzma2=preset=6e,pb=0,lc=4 source_code.tar\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .PP jpayne@68: Die Verwendung eines anderen Filters mit LZMA2 kann die Kompression bei jpayne@68: verschiedenen Dateitypen verbessern. So könnten Sie eine gemeinsam genutzte jpayne@68: Bibliothek der Architekturen x86\-32 oder x86\-64 mit dem BCJ\-Filter für x86 jpayne@68: komprimieren: jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRxz \-\-x86 \-\-lzma2 libfoo.so\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .PP jpayne@68: Beachten Sie, dass die Reihenfolge der Filteroptionen von Bedeutung jpayne@68: ist. Falls \fB\-\-x86\fP nach \fB\-\-lzma2\fP angegeben wird, gibt \fBxz\fP einen Fehler jpayne@68: aus, weil nach LZMA2 kein weiterer Filter sein darf und auch weil der jpayne@68: BCJ\-Filter für x86 nicht als letzter Filter in der Filterkette gesetzt jpayne@68: werden darf. jpayne@68: .PP jpayne@68: Der Delta\-Filter zusammen mit LZMA2 kann bei Bitmap\-Bildern gute Ergebnisse jpayne@68: liefern. Er sollte üblicherweise besser sein als PNG, welches zwar einige jpayne@68: fortgeschrittene Filter als ein simples delta bietet, aber für die jpayne@68: eigentliche Kompression »Deflate« verwendet. jpayne@68: .PP jpayne@68: Das Bild muss in einem unkomprimierten Format gespeichert werden, zum jpayne@68: Beispiel als unkomprimiertes TIFF. Der Abstandsparameter des Delta\-Filters jpayne@68: muss so gesetzt werden, dass er der Anzahl der Bytes pro Pixel im Bild jpayne@68: entspricht. Zum Beispiel erfordert ein 24\-Bit\-RGB\-Bitmap \fBdist=3\fP, außerdem jpayne@68: ist es gut, \fBpb=0\fP an LZMA2 zu übergeben, um die 3\-Byte\-Ausrichtung zu jpayne@68: berücksichtigen: jpayne@68: .RS jpayne@68: .PP jpayne@68: .nf jpayne@68: \f(CRxz \-\-delta=dist=3 \-\-lzma2=pb=0 foo.tiff\fR jpayne@68: .fi jpayne@68: .RE jpayne@68: .PP jpayne@68: Wenn sich mehrere Bilder in einem einzelnen Archiv befinden (zum Beispiel\& jpayne@68: \&\fB.tar\fP), funktioniert der Delta\-Filter damit auch, sofern alle Bilder im jpayne@68: Archiv die gleiche Anzahl Bytes pro Pixel haben. jpayne@68: . jpayne@68: .SH "SIEHE AUCH" jpayne@68: \fBxzdec\fP(1), \fBxzdiff\fP(1), \fBxzgrep\fP(1), \fBxzless\fP(1), \fBxzmore\fP(1), jpayne@68: \fBgzip\fP(1), \fBbzip2\fP(1), \fB7z\fP(1) jpayne@68: .PP jpayne@68: XZ Utils: jpayne@68: .br jpayne@68: XZ Embedded: jpayne@68: .br jpayne@68: LZMA\-SDK: