Home · Kontakt · Impressum
contents index previous up next
Next: 13.6.3 compress und uncompress Up: 13.6 Kompression Previous: 13.6.1 gzip, gunzip und

Unterabschnitte



13.6.2 Komprimieren mit bzip2

Das Tool bzip2 komprimiert Dateien auf der Basis des ``Burrows Wheeler block sorting text compression''-Algorithmus. Dieses Verfahren ermöglicht bessere Komprimierungsraten als die der Programme gzip oder compress.

 bzip2 [OPTIONEN] [DATEILISTE]

Obgleich sich bzip2 und gzip sehr ähnlich sind, sind sie nicht identisch.

Optionen
-c Zeigt den Inhalt an ohne die komprimierte Datei zu löschen; zusammen mit -d (content)
-d Dekomprimiert die Datei (decompress)
-f Überschreibt vorhandene Dateien (force)
-n Speichert nicht die originalen Zeitstempel und Dateinamen(no name)
-k Quelldatei wird nicht gelöscht (keep)
-N Speichert die originalen Zeitstempel (Standard) (!(no name))
-q Unterdrückt Warnmeldungen (quiet)
-t Test der Datenintegrität(test)
-v Name und Kompressiongrad werden ausgegeben(verbose)
-z Komprimiert die Datei, Standardeinstellung
-ZAHL Gibt den Kompressionsgrad mit ZAHL an; Wert zwischen 1 (niedrig) und 9 (hoch).
 

Durch den besseren Algorithmus kann bzip2 deutlich besser komprimieren als gzip. Das Beispiel einer großen DVI-Datei (ASCII-Code) zeigt, daß die Kompressionsrate von bzip2 deutlich größer ist als die von gzip.

ole@enterprise:~/test> ls -l
insgesamt 2584
-rw-r--r--    1 ole      users     1692688 2004-06-27 07:51 lk.dvi
-rw-r--r--    1 ole      users      409181 2004-06-27 07:59 lk.dvi.bz2
-rw-r--r--    1 ole      users      528016 2004-06-27 07:59 lk.dvi.gz

Beim Komprimieren zerlegt bzip2 die Datei in einzelne Blöcke. Je größer die Blöcke sind, desto besser ist der Komprimierungsgrad. Einen direkten Einfluß auf die Größe der Blöcke können Sie mit den Optionen -1 bis -9 ausüben. Diese geben direkt die Größe des Blocks in 100.000 Bytes an. Defaulteinstellung ist -9. Die Verwendung von größeren Blocks hat keinen signifikanten Einfluß mehr auf die Komprimierungsrate. Je kleiner die zu komprimierende Datei ist, desto geringer ist auch der Einfluß der Komprimierungseinstellung.

Der Komprimierer bzip2 benutzt eine 32-Bit-CRC-Checksumme um die Datenintegrität des Archivs überprüfen zu können Die Überprüfung wird durch den Schalter -t aktiviert.

Für weitere Informationen, speziell zu den verwendeten Blockgrößen und Speichernutzung, konsultieren Sie die Manualpage bzip2(1).

Wie auch bei gzip besitzt bzip2 weitere Namen, die bestimmte Aktionen von bzip2 aufrufen. Das Tool bzip2recover ist dagegen ein eigenständiges Programm.

ole@enterprise:~> ls -lG /usr/bin/{bzip2,bunzip2,bzcat,bzip2recover}
lrwxrwxrwx    1 root            5 2004-04-03 09:17 /usr/bin/bunzip2 -> bzip2
lrwxrwxrwx    1 root            5 2004-04-03 09:17 /usr/bin/bzcat -> bzip2
-rwxr-xr-x    1 root        26464 2003-09-23 17:23 /usr/bin/bzip2
-rwxr-xr-x    1 root         8352 2003-09-23 17:23 /usr/bin/bzip2recover


13.6.2.1 bunzip2

Dieser Name zeigt auch auf das Tool bzip2. Unter diesem Namen aufgerufen, aktiviert es den Schalter -d zum dekomprimieren.

 bunzip2 [OPTIONEN] [DATEILISTE]

Beim Dekomprimieren werden die Endungen wie folgt umgewandelt. Bei den Endungen .bz2 und bz werden die Endungen vom Dateinamen entfernt. Die Endungen .tbz2 und .tbz weisen auf komprimierte Tar-Archive hin und werden in .tar umgewandelt. Handelt es sich um keine der genannten Endungen, dann wird an die entkomprimierte Datei die Endung .out angehängt.


13.6.2.2 bzcat

Auch dieser Name zeigt auf das Tool bzip2. Unter diesem Namen aufgerufen, aktiviert es die Schalter -cd zum dekomprimieren und gleichzeitiger Ausgabe auf der Standardausgabe.

 bzcat [OPTIONEN] [DATEILISTE]


13.6.2.3 Datenrettung mit bzip2recover

Sehr selten kommt es vor, daß eine komprimierte Datei z. B. durch ein Bitkipper fehlerhaft wird. In diesem Fall meldet bunzip2 bzw. bzip2 einen Fehler und verweigert das Dekomprimieren. Trotzdem ist die Datei nicht vollständig verloren. Da die Komprimierung in unabhängigen Blöcken erfolgt, können diese durch das Tool als einzelne Bzip2-Dateien ausgegeben werden.

bzip2recover DATEI

Aus der beschädigten Datei erstellt das Tool für jeden Block eine Datei mit dem Namen rec00001file.bz2, rec00002file.bz2, usw. Die einzelnen Dateien können nun mit bzip2 -t auf ihre Integrität überprüft und dann einzeln entpackt werden. Das Verfahren ist natürlich nur sinnvoll bei großen Dateien, die viele Blöcke enthalten. Dateien, die nur aus einem Block bestehen, können nicht wiederhergestellt werden. Wenn Sie die Sicherheit der komprimierten Dateien erhöhen wollen, sollten Sie bei der Komprimierung eine kleine Blockgröße einstellen.

ole@enterprise:~/test> bunzip2 lk.dvi.bz2

bunzip2: Data integrity error when decompressing.
        Input file = lk.dvi.bz2, output file = lk.dvi

It is possible that the compressed file(s) have become corrupted.
You can use the -tvv option to test integrity of such files.

You can use the `bzip2recover' program to attempt to recover
data from undamaged sections of corrupted files.

bunzip2: Deleting output file lk.dvi, if it exists.
ole@enterprise:~/test> bunzip2 -tvv lk.dvi.bz2
  lk.dvi.bz2:
    [1: huff+mtf rt+rld]
    [2: huff+mtf rt+rld]
...
    [11: huff+mtf rt+rld]
    [12: huff+mtf data integrity (CRC) error in data

You can use the `bzip2recover' program to attempt to recover
data from undamaged sections of corrupted files.
ole@enterprise:~/test> bzip2recover lk.dvi.bz2
bzip2recover 1.0.2: extracts blocks from damaged .bz2 files.
bzip2recover: searching for block boundaries ...
   block 1 runs from 80 to 47833
   block 2 runs from 47882 to 85493
...
   block 17 runs from 3647046 to 3864608
   block 18 runs from 3864657 to 3864696 (incomplete)
bzip2recover: splitting into blocks
   writing block 1 to `rec00001lk.dvi.bz2' ...
   writing block 2 to `rec00002lk.dvi.bz2' ...
...
   writing block 16 to `rec00016lk.dvi.bz2' ...
   writing block 17 to `rec00017lk.dvi.bz2' ...
bzip2recover: finished
ole@enterprise:~/test> ls
lk.dvi.bz2          rec00005lk.dvi.bz2  rec00010lk.dvi.bz2  rec00015lk.dvi.bz2
rec00001lk.dvi.bz2  rec00006lk.dvi.bz2  rec00011lk.dvi.bz2  rec00016lk.dvi.bz2
rec00002lk.dvi.bz2  rec00007lk.dvi.bz2  rec00012lk.dvi.bz2  rec00017lk.dvi.bz2
rec00003lk.dvi.bz2  rec00008lk.dvi.bz2  rec00013lk.dvi.bz2
rec00004lk.dvi.bz2  rec00009lk.dvi.bz2  rec00014lk.dvi.bz2
ole@enterprise:~/test> bzip2 -t rec*
bzip2: rec00012lk.dvi.bz2: data integrity (CRC) error in data

You can use the `bzip2recover' program to attempt to recover
data from undamaged sections of corrupted files.

ole@enterprise:~/test> rm rec00012lk.dvi.bz2
ole@enterprise:~/test> bunzip2 -c rec*.bz2 > lk.dvi


contents index previous up next
Next: 13.6.3 compress und uncompress Up: 13.6 Kompression Previous: 13.6.1 gzip, gunzip und
  © 2004 by IT-Dozent Ole Vanhoefer · Zum Seitenanfang