pack(1) pack(1)
NAME
pack - Dateien komprimieren
SYNTAX
pack [-f] [--] [-] datei ...
BESCHREIBUNG
pack komprimiert Dateien mittels Huffman-Codierung.
In Systemen, die die Variable RSTCHOWN auswerten, wird derjenige
Benutzer Eigentümer der komprimierten Datei, der pack aufruft (Aus-
nahme: pack wird vom Systemverwalter aufgerufen). In anderen Systemen
bleibt der Eigentümer unverändert.
Zugriffsrechte und Zugriffs-/Änderungsdatum werden nicht verändert.
Falls möglich, wird jede angegebene Datei ersetzt durch eine Datei
gleichen Namens mit .z-Suffix.
Der Umfang der Komprimierung hängt ab von der Größe der Eingabedatei
und der Verteilung gleicher Zeichen. Die Dateien werden in der Regel
um 25-40% komprimiert.
Da der erste Teil einer komprimierten Datei aus Codierungsregeln
besteht, lohnt es sich gewöhnlich nicht, kleine Dateien zu komprimie-
ren, es sei denn, die Datei hat eine sehr ungleichmäßige Zeichen-
dichte, z. B. wenn sie Graphiken oder Abbildungen enthält. Die kompri-
mierten Versionen von Objektdateien, bei denen ein umfangreicherer
Zeichensatz verwendet wird und die eine gleichmäßigere Zeichendichte
aufweisen, sind lediglich um 10% kleiner als die Originaldateien.
Eine Komprimierung wird nicht durchgeführt wenn
- die zu komprimierende Datei keine einfache Datei ist
- auf die zu komprimierende Datei Verweise bestehen
- die zu komprimierende Datei bereits ein .z-Suffix hat
- die anzulegende Datei bereits existiert
- durch die Komprimierung kein Plattenplatz gespart würde
Mit unpack können Sie eine komprimierte Datei wieder dekomprimieren.
Mit pcat können Sie komprimierte Dateien im Originalzustand auf die
Standardausgabe ausgeben. Die komprimierte Datei wird dabei nicht ver-
ändert.
Hinweis: Sie können Dateien auch mit compress komprimieren und mit
uncompress wieder dekomprimieren.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
pack(1) pack(1)
OPTIONEN
Keine Option angegeben:
Die angegebenen Dateien werden komprimiert, wenn dadurch Spei-
cherplatz gespart werden kann. Zusätzlich wird der Prozentsatz
der Komprimierung ausgegeben.
-f (f - force) Die Komprimierung von datei wird erzwungen, selbst
wenn kein Speicherplatz gespart wird.
-f nicht angegeben: Nur die Dateien werden komprimiert, bei denen
dadurch Speicherplatz gespart werden kann.
-- Ende der Optionenliste. Die Angabe ist nötig, wenn datei mit -
beginnt und das Argument - nicht angegeben ist.
- Auf die Standardausgabe werden ausführliche statistische Informa-
tionen über die erfolgte Komprimierung ausgegeben:
pack: datei: xx.xx% Compresssion
Prozentsatz der Komprimierung
pack: From xxxxx to yyyyy bytes
alte Größe versus neuer Größe
Huffman tree has xx levels below root
Tiefe des Baums, der mit dem Huffman-Algorithmus bearbeitet
wurde
xx distinct bytes in input
datei enthielt xx verschiedene Zeichen
Dictionary overhead = xxx bytes
Größe der Codierungsregeln
Effective entropy = x.xx bits/byte
tatsächlicher Reduktionsfaktor
Asymptotic entrop = x.xx bits/byte
theoretischer Reduktionsfaktor
Zu jedem Zeichen, das in der Eingabedatei vorkommt, wird eine
Zeile mit folgenden Informationen ausgegeben:
Byte xxxx
oktaler Wert des Zeichens
Count = xx
Gesamtzahl dieser Zeichen in der Datei
Relative freq. = x.xxx
relativer Anteil dieser Zeichen an der Dateigröße in Prozent
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
pack(1) pack(1)
Code = xxxxx
Angabe, wie das Zeichen codiert wurde
- ist keine Option, sondern ein Argument und darf deshalb nicht
vor der Option -f stehen. Sie können - vor jeder Datei und/oder
vor mehreren aufeinanderfolgenden Dateien angeben. Jedes zweite
Auftreten von - schaltet die Ausgabe der Statistik wieder aus
(siehe Beispiel 1).
- nicht angegeben: Der Prozentsatz der Komprimierung wird ausge-
geben.
datei
Name der Datei, die komprimiert werden soll. Sie können mehrere
Dateien angeben. datei darf kein Verzeichnis sein, und es dürfen
keine Verweise auf datei bestehen.
Die komprimierte Datei erhält den Namen datei.z, datei wird nach
erfolgreicher Komprimierung gelöscht. datei.z hat dieselben
Zugriffsrechte, dasselbe Zugriffs- bzw. Änderungsdatum wie datei.
Die maximal zulässige Länge des Namens von datei errechnet sich
aus der im verwendeten Dateisystem maximal zulässigen Dateina-
menslänge abzüglich zwei Zeichen. Damit ist die Namenserweiterung
auf datei.z noch möglich. Ist der Name länger, so wird datei
nicht komprimiert.
datei kann auch als datei.z angegeben werden. Das Suffix .z wird
von pack ignoriert.
Vorsicht:
Komprimierte Dateien sind nicht unbedingt auf andere Systeme
portierbar. Stellen Sie sicher, daß auf dem anderen System
kein anderer Zeichensatz geladen und daß das Kommando unpack
verfügbar ist.
FEHLERMELDUNGEN
pack: datei: no saving - file unchanged
(wird auf die Standardausgabe ausgegeben) Es kann kein Speicher-
platz durch die Komprimierung gespart werden. pack komprimiert
nicht. Wollen Sie dennoch komprimieren, so geben Sie die Option
-f an.
pack: datei: file name too long
Der Name der zu komprimierenden Datei ist zu lang. pack kompri-
miert nicht.
pack: datei.z: already packed
Die angegebene Datei wurde bereits komprimiert. Eine zweite Kom-
primierung ist nicht möglich.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
pack(1) pack(1)
pack: datei: has links
Auf die angegebene Datei bestehen Verweise. pack komprimiert
nicht.
pack: datei: cannot pack a directory
Die angegebene Datei ist ein Verzeichnis. pack komprimiert nicht.
pack: datei: cannot open
Sie haben kein Leserecht für die zu komprimierende Datei oder
datei existiert nicht.
pack: datei.z: cannot create
Die komprimierte Datei kann nicht angelegt werden, weil Sie z. B.
kein Schreibrecht für das aktuelle Verzeichnis haben.
pack: datei: read error
Beim Lesen der Originaldatei trat ein Fehler auf. pack kompri-
miert nicht.
pack: datei.z: write error
Beim Schreiben der komprimierten Datei trat ein Fehler auf. Die
Komprimierung wird abgebrochen, datei bleibt im Originalzustand.
Möglicherweise bleibt die unvollständige datei.z erhalten.
pack: datei: cannot pack a zero length file
Die zu komprimierende Datei ist eine leere Datei.
INTERNATIONALE UMGEBUNG
Die Umgebungsvariable LCMESSAGES bestimmt die Sprache der Meldungs-
texte. Wenn LCMESSAGES nicht oder als leere Zeichenkette definiert
ist, wird der Wert von LANG als Standardwert herangezogen. Ist auch
LANG nicht oder als leere Zeichenkette definiert, verhält sich das
System so, als wäre es nicht internationalisiert.
Die Umgebungsvariable LCALL bestimmt die gesamte internationale Umge-
bung. LCALL hat Vorrang vor allen anderen Umgebungsvariablen im
Bereich der Internationalisierung.
BEISPIELE
Beispiel 1
Drei Dateien sollen komprimiert werden. Für die erste und zweite Datei
sollen außerdem statistische Informationen über die Komprimierung aus-
gegeben werden. Da jedes zweite Auftreten der Option - die Ausgabe der
Statistik wieder ausschaltet, muß diese Option erneut vor datei3 ange-
geben werden.
$ pack - datei1 datei2 - datei3
pack: datei1: 40.6% Compression
pack: From 31960 to 18984 bytes
Huffman tree has 15 levels below root
89 distinct bytes in input
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
pack(1) pack(1)
Dictionary overhead = 111 bytes
Effective entropy = 4.75 bits/byte
Asymptotic entropy = 4.72 bits/byte
Byte 0000, Count = 45211, Relative freq. = 0.311, Code = 11
Byte 0001, Count = 2530, Relative freq. = 0.017, Code = 100000
...
Byte 0377, Count = 2018, Relative freq. = 0.014, Code = 101001
pack: datei2: 41.6% Compression
pack: From 249569 to 145840 bytes
Huffman tree has 14 levels below root
94 distinct bytes in input
Dictionary overhead = 115 bytes
Effective entropy = 4.67 bits/byte
Asymptotic entropy = 4.67 bits/byte
Byte 0000, Count = 96281, Relative freq. = 0.323, Code = 11
Byte 0001, Count = 5225, Relative freq. = 0.018, Code = 011100
...
Byte 0377, Count = 4644, Relative freq. = 0.016, Code = 101001
pack: datei3: 41.7% Compression
Beispiel 2
Der Inhalt des Verzeichnisses ABT3 soll komprimiert werden. Für die
darin enthaltene Datei druck sind jedoch keine Leserechte gesetzt, und
die Datei user.neu hat die Länge 0. Diese beiden Dateien bleiben daher
im Originalzustand.
$ ls -l ABT3
total 272
-rw-r--r-- 1 seume abt3 117865 Aug 19 09:27 daten80-90
---x--x--x 1 seume abt3 5366 Mar 15 12:50 druck
-rw-r--r-- 1 seume abt3 1447 Jan 10 17:02 user.alt
-rw-r--r-- 1 seume abt3 0 Mar 14 13:16 user.neu
$ pack -f ABT3/*
pack: ABT3/daten80-90: 39.5% Compression
pack: ABT3/druck: cannot open
pack: ABT3/user.alt: 37.9% Compression
pack: ABT3/user.neu: cannot pack a zero length file
$ echo $?
2
$ ls -l ABT3
total 154
-rw-r--r-- 1 seume abt3 71311 Aug 19 09:27 daten80-90.z
---x--x--x 1 seume abt3 5366 Mar 15 12:50 druck
-rw-r--r-- 1 seume abt3 899 Jan 10 17:02 user.alt.z
-rw-r--r-- 1 seume abt3 0 Mar 14 13:16 user.neu
SIEHE AUCH
compress(1), pcat(1), uncompress(1), unpack(1), zcat(1).
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98