Public Domain: Archive, aber ohne Staub

Schaut man in ein amerikanisches Bulletin Board (so heißen dort die Mailboxen für einen MS-DOS-Benutzer), sieht man fast nur Dateien mit der Extension » .ARC«. Dahinter verbirgt sich eine raffinierte Methode Speicherplatz zu sparen.

Das Geheimnis dieser Dateiendung liegt in der besonderen Form, in der die Daten dieser Dateien »gepackt« sind. Unter »Packen« versteht man das Komprimieren von Daten auf einen geringeren Umfang, als diese bei normaler Speicherung besitzen würden. Dateien mit der Endung ARC wurden mit einem sogenannten Archivprogramm, ARC.COM erzeugt. Das komplette ARC-Programm, das vom Hersteller als Public-Domain-Programm entwickelt wurde, besteht aus dem eigentlichen Kommandofile ARC.COM und einer 10seitigen Anleitung ARC.DOC. Man darf es unter drei Bedingungen legal kopieren und weitergeben:

  1. Man darf keine Gebühren für das Kopieren und Weitergeben nehmen.
  2. Beide Dateien müssen gemeinsam weitergegeben werden.
  3. Man darf das Programm nur in seiner nicht geänderten Originalversion weiterreichen.

Wir haben ARC in der Version 4.1 und 5.10 getestet. Das Urteil vorweg: Das Programm ist allererste Klasse, und wer es einmal hat, der mag es nicht mehr hergeben. Es wird auf die folgende Art und Weise benutzt: Man gibt die Zeile
ARC <b> <Archivname> <Filename>
ein. Hierbei ist < b > das Kommando, das ARC ausführen soll. Möglich sind im wesentlichen die Kommandos in Bild 1.

Ein Aufruf mit »ARC« ohne alle Zusätze listet eine Kurzanweisung mit den Kommandos auf. <Archivname> steht für den Namen des Archivs. Der Name darf Zugriffspfade enthalten. < Filename > steht für einen oder mehrere, durch Leerzeichen getrennte Dateinamen derjenigen Dateien, die archiviert werden sollen. In der Version 5.10 dürfen diese Dateinamen ebenfalls Zugriffspfade enthalten sowie die Jokerzeichen »*« und »?«. So speichert zum Beispiel ARC A ARCHIV_1 .
alle Dateien auf der Diskette in der Datei ARCHIV 1.ARC. Mit
ARC E ARCHIV_1 *.COM
werden alle Dateien mit der Extension »COM« aus dem Archiv geholt und im Originalzustand wieder hergestellt. Die gute englische Anleitung (ARC.DOC) erklärt jeden einzelnen Befehl im Detail. Hat man sie einmal gelesen, so kann man schon mit dem Programm arbeiten, da die Kommandobuchstaben einfach die Abkürzungen für die englischen Befehlsworte sind.

ARC erzeugt also eine Archivdatei, in der beliebig viele einzelne Dateien sein können. Es sorgt damit für Übersicht im Directory. Aber der eigentliche Knüller ist natürlich, wie am Anfang schon angedeutet, die Fähigkeit, Dateien beim Archivieren zu komprimieren. In einzelnen Fällen haben wir eine Reduktion der Dateigröße um mehr als 90 Prozent erreicht! Der Durchschnitt bei der älteren Version 4.1 lag bei etwa 30 Prozent, bei der Version 5.10 sogar bei rund 50 Prozent. Es gibt aber auch Dateien die sich nicht komprimieren lassen. Das Bild 2 zeigt ein typisches Beispiel eines Archivinhalts, wie er mit dem Befehl ARC V (Archivname) auf dem Bildschirm oder Drucker aufgelistet wird. Dabei ist Aae ~rvonnon oincr ~rnhü.rlafoi relativ zeitaufwendig und kann pro 10 KByte schon mal einige Minuten dauern.

Die beachtlichen Platzersparnisse erreicht ARC durch vier verschiedene Komprimierungsverfahren. a) Die Datei wird unverändert in Originallänge im Archiv abgelegt.
b) Folgt das gleiche Byte mehrfach aufeinander wird die Bytefolge in 3 Byte komprimiert (»Packed«).
c) »Huffman Squeezing«; Hier wird die Häufigkeit der Bytes untersucht. Kommen einige Bytes häufig vor, so werden sie in kürzere Bitfolgen codiert (»Squeezed«).
d) »Lempel-Zev Compression«: Hier wird nach Bytefolgen gesucht, die häufig vorkommen. In einem deutschen Text kommen Folgen wie »die« oder »der« oder », daß« öfter vor als andere. Diese Bytemakros werden dann in einem 12-Bit-Code abgespeichert (»Crunched«).

ARC prüft bei jeder Datei, welche der vier Methoden die größte Platzeinsparung bringt. Methode a (Speichern ohne Reduktion) ist nötig, um die Archivdatei in keinem Fall länger werden zu lassen als das Original. Schauen wir uns als Beispiel Methode b an. Kommt in einem Text eine Folge von 35 »!«-Zeichen vor, und man codiert das als 23h 21h, so ist die Bedeutung dieser Werte nicht eindeutig. Sie können die Codierung für 35 »!«-Zeichen sein oder aber einfach die Werte für die beiden Zeichen »#!«. Man braucht also ein drittes Byte, um anzugeben, daß eine besondere Codierung folgt. Wählen wir dafür das Byte OOh. Dann ist klar, daß OOh 21h eine spezielle 3-Byte-Codierung für 35mal »!« ist. Was aber, wenn das Byte OOh in der Datei schon als eigener Wert vorkommt? Dazu brauchen wir dann einen 2-Byte-Code: 00h OOh. Das ist dann endlich eindeutig, da zum Beispiel OOh 00 21h als Folge für 0 mal »!« nie vorkommt. Haben wir jetzt aber eine Datei, in dem keine Zeichen öfter als zweimal hintereinande vorkommen, so wird dies durch die beschriebene Codierung länger. Und zwar um ein Byte für jedes Byte OOh. Gleiches gilt für die Codierungstabelle die ARC anlegt und die selbst Platz brauchen. Wenn mit ihrer Hilfe innerhalb einer Datei nur wenig Platz gespart werden kann, ist die Datei trotz Kompression mit Tabelle länger als ohne. Ein Effekt, den wir nicht haben wollen. Für diese und ähnliche Fälle kann ARC die Datei unverändert abspeichern. Die große Beliebtheit von ARC zeigt sich an der schnellen Ausbreitung des Programms in den USA. Die erste Version wurde im März 1985 geschrieben. Schon im Oktober 1985 haben wir in den USA in vielen Mailboxen ARC-Dateien gefunden. Zwischenzeitlich gibt es kaum noch welche ohne.

Ein kleiner Fehler trat während des Versuchs mit Version 4.1 auf, als mangels freier Diskettenkapazität eine Datei zwar im Archiv eingetragen und als fehlerfrei deklariert wurde, aber nach dem Eintrag tatsächlich nicht mehr vorhanden war.

Vor allem die Version 5.1 von ARC ist in der Tat eine Softwareperle, die nicht nur nichts kostet (für 50 Dollar erhält man aber eine gedruckte Gebrauchsanweisung und eine Diskette mit der neuesten Version in den USA), sondern sogar viele Disketten und damit Geld sparen hilft.

Rainer W Gerling/lg

a,u: eine Datei (oder mehrere) in die Archivdatei kopieren eine Datei in die Archivdatei einbinden und gleichzeitig auf Diskette (oder Harddisk) löschen
d: eine Datei im Archiv löschen
x,e: eine Datei aus dem Archiv holen
p: eine Archivdatei drucken r: eine Archivdatei ausführen
l,v: den Inhalt eines Archivs listen
t: die Dateien im Archiv auf Übereinstimmung mit den Originaldateien prüfen (besonders sinnvoll bei Archivdateien, die man mit DFÜ aus einer Mailbox geholt hat).
g: ein Leckerbissen. Mit »g« kann man beim Archivieren die Datei mit einem Paßwort verschlüsseln.

Bild 1. Diese Kommandos bietet ARC

Name       Length Stawage   SF Size now Date Time        CRC
-------------------------------------------------------------
PB-INST.BAS   251 Crunched 16% 211      24 Sep 85 10:13p 61CD
PB.BAS       4104 Crunched 76% 1019     24 Sep 85 9:07p  5EDA
PB1.COM     64512 Squeezed 53% 30717    24 Sep 85 10:30p 00B8
PBALL.DOC     363 Crunched 35% 239      23 Sep 85 9:26p  8BF0
PBL-12.BAT     13         --0% 13        0     80 0:00a  432D
PBL-15.COM  64512 Squeezed 47% 34566     0     80 0:00a  EA2C
PBL-16.COM  64512 Squeezed 49% 32946     0     80 0:00a  A2F6
PBL12.COM   64512 Squeezed 49% 33093     0     80 0:00a  73C7
-------------------------------------------------------------
Total 8    262779          50% 132804

Bild 2. Ein typisches Beispiel für eine Inhaltsliste einer Archivdatei, die um 50 Prozent kürzer als die Summe der Original



Aus: Happy Computer 01 / 1987, Seite 154

Links

Copyright-Bestimmungen: siehe Über diese Seite