Die unter DOS übliche Kombination von Archivierung und Komprimierung gibt es unter Unix zunächst mal nicht automatisch. Es gibt Programme wie tar oder cpio, die mehrere Dateien in eine Archivdatei packen, und es gibt Programme wie gzip oder compress, die Dateien komprimieren. In der Kombination sind natürlich dann auch komprimierte Archive möglich, die Linux-Version von tar unterstützt z.B. die Anwendung von gzip oder compress schon in der Kommandozeile.

Archivierung mit tar

Das Wesen der Archivierung liegt ja darin, dass mehrere Dateien in einen sequentiellen Datenstrom geschrieben werden, der zusätzlich noch die Verwaltungsinformation (Inhaltsverzeichnis) benötigt, an welcher Stelle des Datenstroms welche Datei beginnt und endet. In der Regel wurde diese Technik benötigt, um Dateien auf einen sequentiellen Datenträger – meist ein Magnetband – zu schreiben. Dazu gibt es unter Unix das Programm tar (Tape ARchiver). Dieses Programm läßt sich aber natürlich auch benutzen, um mehrere Dateien in eine andere Datei statt auf ein Magnetband zu schreiben.

Auch heute noch werden Daten mit tar auf Bänder gesichert, aber eine große Anwendungsmöglichkeit bietet tar eben auch in der Verbreitung von Programmpaketen z.B. über das Internet. In den Anfängen von Linux war das tar-Format auch das Standard-Format, mit dem neue Pakete eingespielt wurden.

Das Programm tar kennt drei hauptsächliche Modi, es sind streng genommen noch etwas mehr, aber die drei wichtigsten werden hier kurz beschrieben. Es handelt sich dabei um die Modi

  • Erzeugen eines Archivs (c – create)
  • Inhalt eines Archivs anzeigen (t – table of content)
  • Entpacken eines Archivs (x – extract)

Die drei genannten Buchstaben (c, t oder x) sind dabei zwingend die ersten Parameter von tar.

Erzeugen eines Archives mit tar -c…

tar nimmt grundsätzlich ganze Verzeichnisäste in ein Archiv auf. Wenn also unter den genannten Dateien, die archiviert werden sollen, auch Verzeichnisnamen auftauchen, dann werden die ganzen Verzeichnisse samt Inhalt in das Archiv mit aufgenommen. Wenn tar nicht speziell angegeben wird, in welche Zieldatei (normale Datei oder Gerätdatei) es das Ergebnis schreiben soll, dann nimt tar standardmäßig /dev/tape an.

Die Angabe der Zieldatei geschieht mit dem Parameter -f   Zieldatei.

Im einfachsten Fall wird also ein tar-Archiv erzeugt, indem der Befehl

tar -cf Zieldatei Dateien

eingegeben wird. Dabei sind Dateien all die Dateien und Verzeichnisse, die ins Archiv übernommen werden sollen.

Der Parameter -v macht tar etwas „geschwätziger“ (v – verbose), das heißt, tar zeigt die Dateinamen der archivierten Dateien während der Archivierung an. Der Parameter v muß dann zwischen das c und das f.

Wenn es gewünscht ist, dass das tar-Archiv gleich gepackt werden soll, so kann auch noch der Parameter -z für Kompression mit gzip oder -Z für Kompression mit compress benutzt werden. Auch dieser Parameter muß zwischen das c und das f.

tar -czvf  Zieldatei Dateien

Es hat sich eingebürgert, dass ein tar-Archiv die Endung .tar bekommt, wenn es mit gzip komprimiert wurde, dann sollte die Endung entweder .tar.gz oder kurz und DOS-konform .tgz heißen. Das ist zwar nicht zwingend, aber es erleichtert doch die Orientierung, um welche Datei es sich handelt. Ein Archiv mit der Endung .tar.Z ist in der Regel mit compress komprimiert.

Inhaltsverzeichnis eines Archivs ansehen mit tar -t…

Um den Inhalt eines bestehenden tar-Archivs anzusehen wird der Parameter -t benutzt. auch hier gilt die Regel, dass mit -fDateiname die Datei angegeben wird, die das Archiv enthält. Wenn dieser Parameter weggelassen wird, so nimmt tar wieder /dev/tape an.

Der Parameter v erzeugt wieder eine etwas ausführlichere Darstellung des Inhalts, statt einfach nur den Dateinamen zeigt er den Inhalt wie ein ls -l Kommando an.

Auch hier können bzw. müssen wieder die Parameter z oder Z angegeben werden, wenn der Inhalt eines komprimierten Archivs angezeigt werden soll, sie dürfen nicht angegeben sein, wenn das tar-Archiv nicht komprimiert ist.

tar -tzvf Archivdatei

Auspacken eines Archivs mit tar -x…

Um ein Archiv schließlich wieder zu entpacken, wird der Parameter -x benutzt. Für die anderen Parameter gilt das bereits beschriebene. -v bringt tar zu etwas detailierterer Ausgabe und -z oder -Z entpackt Archive, die mit gzip oder compress komprimiert sind.

Um ein komprimiertes Archiv ganz zu entpacken lautet also der Befehl

tar -xzvf Archivdatei

Wenn aber nur einzelne Dateien aus dem Archiv entnommen werden sollen, so müssen diese einzelnen Dateien nach der Angabe der Archivdatei angegeben werden:

tar -xzvf Archivdatei Dateien

Kompression mit gzip und compress

Um Dateien zu komprimieren, gibt es unter Unix standardmäßig den Befehl compress. Später wurde dann von der Free Software Foundation das Programm gzip entwickelt, das eine wesentlich bessere Kompressionsrate erreicht. Nachdem dieses Programm auf allen Unix-Platformen zur Verfügung steht und in der Anwendung praktisch identisch mit compress ist, ist es gerade dabei, compress zu verdrängen.

Beide Programme haben die Eigenschaft, dass sie die Originaldatei verkleinern und durch die komprimierte Datei ersetzen. Das heißt, die Originaldatei ist nach der Kompression nicht mehr vorhanden.

Die Anwendung beider Programme ist denkbar einfach, der Name der zu komprimierenden Datei wird einfach als Parameter an den Befehl angehängt.

compress Dateiname

oder eben

gzip Dateiname

Die Originaldatei wird ersetzt durch die komprimierte Datei, die dann die Endung .Z (compress) bzw. .gz (gzip) erhält.

Um eine komprimierte Datei wieder zu entpacken werden die entsprechenden Programme uncompress bzw. gunzip benutzt. Interessanterweise sind das gar keine eigenen Programme, sondern nur Links auf compress bzw. gzip. Werden komprimierte Dateien entpackt, so existieren wieder die Originaldateien, die komprimierten Dateien sind dann verschwunden.

Das Programm gzip bzw. seine Entpackerform gunzip kann auch Dateien entpacken, die mit compress gepackt worden sind.

gunzip Datei.Z

Es gibt noch eine interessante Form des gzip-Programms. Wenn ein Link auf dieses Programm zcat heißt, dann reagiert es wie cat, das heißt es gibt den Inhalt einer Datei (oder der Standard-Eingabe) entpackt auf die Standard-Ausgabe. In diesem Fall bleibt die komprimierte Datei unangetastet. So können z.B. große Textdateien mit statischen Texten komprimiert gespeichert sein und trotzdem gelesen werden.

zcat Dateiname

Abschließend muss noch gesagt werden, dass auch das Programm less, also der Standard-Pager von Linux Dateien anzeigen kann, die mit gzip oder compress gepackt wurden. Es ist also sehr gut möglich eine große Menge von Textdateien komprimiert zu speichern und so Platz auf der Festplatte zu sparen.