Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

 << zurück
Shell-Programmierung von Jürgen Wolf
Einführung, Praxis, Referenz
Buch: Shell-Programmierung

Shell-Programmierung
782 S., mit CD, 44,90 Euro
Rheinwerk Computing
ISBN 3-89842-683-1
gp Kapitel 14 Linux-UNIX-Kommandoreferenz
  gp 14.1 Kurzübersicht
  gp 14.2 Dateiorientierte Kommandos
  gp 14.3 Verzeichnisorientierte Kommandos
  gp 14.4 Verwaltung von Benutzern und Gruppe
  gp 14.5 Programm- und Prozessverwaltung
  gp 14.6 Speicherplatzinformationen
  gp 14.7 Dateisystem-Kommandos
  gp 14.8 Archivierung und Backup
  gp 14.9 Systeminformationen
  gp 14.10 System-Kommandos
  gp 14.11 Druckeradministration
  gp 14.12 Netzwerkbefehle
  gp 14.13 Benutzerkommunikation
  gp 14.14 Bildschirm- und Terminalkommandos
  gp 14.15 Online-Hilfen
  gp 14.16 Alles rund um PostScript-Kommandos
  gp 14.17 Gemischte Kommandos


Rheinwerk Computing

14.8 Archivierung und Backudowntop


Rheinwerk Computing

bzip2/bunzip2 – (De-)Komprimieren von Dateien  downtop

bzip2 ist dem Kommando gzip nicht unähnlich, nur dass bzip2 einen besseren Komprimierungsgrad als gzip erreicht. bzip arbeitet mit dem Burrows-Wheeler Block-Sorting-Algorithmus, der den Text zwar nicht komprimiert, aber leichter komprimierbar macht, sowie mit der Huffman-Kodierung. Allerdings ist die Kompression mit bzip2 erheblich besser, aber dafür auch erheblich langsamer, sofern die Geschwindigkeit eine Rolle spielen sollte. Alle Dateien, die mit bzip2 komprimiert werden, bekommen automatisch die Dateiendung ».bz2«. TAR-Dateien, die mit bzip2 komprimiert werden, erhalten üblicherweise die Endung ».tbz«. Die »2« hinter bzip2 bzw. bunzip2 kam dadurch, dass der Vorgänger bzip lautete, der allerdings aus patentrechtlichen Gründen nicht mehr weiterentwickelt wurde. Komprimieren können Sie Dateien mit bzip2 folgendermaßen:

you@host > bzip2 file.txt

Entpacken können Sie die komprimierte Datei wieder mit der Option –d und bzip2 oder mit bunzip2.

you@host > bzip2 -d file.txt.bz2

oder

you@host > bunzip2 file.txt.bz2

Sie können gern bzip2 mit der Option –d bevorzugen, weil bunzip2 wieder nichts anderes ist als ein Link auf bzip2, wobei allerdings automatisch die Option –d verwendet wird:

you@host > which bunzip2
/usr/bin/bunzip2
you@host > ls -l /usr/bin/bunzip2
lrwxrwxrwx  1 root root 5  /usr/bin/bunzip2 -> bzip2

Interessant in diesem Zusammenhang ist auch das Kommando bzcat, womit Sie bzip2-komprimierte Dateien lesen können, ohne diese vorher zu dekomprimieren.

you@host > bzcat file.txt.bz2
...

Rheinwerk Computing

compress/uncompress – (De-)Komprimieren von Dateien  downtop

compress zum Komprimieren und uncompress zum Dekomprimieren wird heute zwar kaum noch verwendet, aber man sollte beide aus Kompatibilitätsgründen hier doch erwähnen, falls Sie einmal auf ein Uralt-Archiv stoßen, bei dem die Dateien mit einem ».Z« enden. compress beruht auf einer älteren Version des Lempel-Ziv-Algorithmus.


Rheinwerk Computing

cpio, afio – Dateien und Verzeichnisse archivieren  downtop

cpio (copy in and out) eignet sich hervorragend, um ganze Verzeichnisbäume zu archivieren. Etwas ungewöhnlich auf de ersten Blick ist, dass cpio die zu archivierenden Dateien nicht von der Kommandozeile, sondern von der Standardeingabe liest. Häufig wird daher cpio in Verbindung mit den Kommandos ls oder find und einer Pipe verwendet. Damit ist es möglich, ein spezielles Archiv zu erzeugen, das den Eigentümer, die Zugriffsrechte, die Erzeugungszeit, die Dateigröße usw. berücksichtigt. Gewöhnlich wird cpio in drei verschiedenen Arten aufgerufen.

copy out

Diese Art wird mit der Option –o bzw. ––create verwendet. So werden die Pfadnamen der zu kopierenden Dateien von der Standardeingabe eingelesen und auf die Standardausgabe kopiert. Dabei können Dinge, wie etwa der Eigentümer, die Zugriffsrechte, die Dateigröße etc., berücksichtigt bzw. ausgegeben werden. Gewöhnlich verwendet man copy out mit einer Pipe und einer Umlenkung:

you@host > cd Shellbuch
you@host > ls
Kap003.txt   kap005.txt~  Kap008.txt   Kap010.txt~  Kap013.txt
Kap001.doc   Kap003.txt~  Kap006.txt   Kap008.txt~  Kap011.txt
Kap013.txt~  Kap001.sxw   kap004.txt   Kap006.txt~  Kap009.txt
Kap011.txt~  Kap014.txt   Kap002.doc   kap004.txt~  Kap007.txt
Kap009.txt~  Kap012.txt   Kap014.txt~  Kap002.sxw   kap005.txt  
Kap007.txt~  Kap010.txt   Kap012.txt~  Planung_und_Bewerbung
chm_pdf
you@host > ls *.txt | cpio -o > Shellbuch.cpio
1243 blocks

Hier wurden z. B. alle Textdateien im Verzeichnis Shellbuch zu einem cpio-Archiv (Shellbuch.cpio) gepackt. Allerdings konnten hier nur bestimmte Dateien erfasst werden. Wollen Sie ganze Verzeichnisbäume archivieren, dann verwenden Sie das Kommando find:

you@host > find $HOME/Shellbuch -print | cpio 
  -o > Shellbuch.cpio
cpio: ~/Shellbuch: truncating inode number
cpio: ~/Shellbuch/Planung_und_Bewerbung: truncating inode number
cpio: ~/Shellbuch/chm_pdf: truncating inode number
130806 blocks

Natürlich können Sie hierbei mit find-üblichen Anweisungen nur bestimmte Dateien archivieren. Ebenso lassen sich Dateien auch auf ein anderes Laufwerk archivieren:

you@host > ls -a | cpio -o > /dev/fd0

Hier wurden beispielsweise alle Dateien des aktuellen Verzeichnisses auf die Diskette kopiert. Dabei können Sie genauso gut einen Streamer, eine andere Festplatte oder gar einen anderen Rechner verwenden.

copy in

Wollen Sie das mit cpio –o erzeugte Archiv wieder entpacken bzw. zurückspielen, so wird cpio mit dem Schalter –i bzw. ––extract verwendet. Damit liest cpio die archivierten Dateien von der Standardeingabe ein. Es ist sogar möglich, hierbei reguläre Ausdrücke zu verwenden. Mit folgender Befehlsausführung entpacken Sie das Archiv wieder:

you@host > cpio -i < Shellbuch.cpio

Wollen Sie nicht das komplette Archiv entpacken, sondern nur bestimmte Dateien, können Sie dies mit einem regulären Ausdruck wie folgt angeben:

you@host > cpio -i "*.txt" < Shellbuch.cpio

Hier entpacken Sie nur Textdateien mit der Endung ».txt«. Natürlich funktioniert das Ganze auch mit den verschiedensten Speichermedien:

you@host > cpio -i "*.txt" < /dev/fd0

Hier werden alle Textdateien von einer Diskette entpackt. Allerdings werden die Dateien immer ins aktuelle Arbeitsverzeichnis zurückgespielt, sodass Sie den Zielort schon zuvor angeben müssen, zum Beispiel:

you@host > cd $HOME/Shellbuch/testdir ; \
> cpio -i < /archive/Shellbuch.cpio

Hier wechseln Sie zunächst in entsprechendes Verzeichnis, wo Sie anschließend das Archiv entpacken wollen. Wollen Sie außerdem erst wissen, was Sie entpacken, also was sich in einem cpio-Archiv für Dateien befinden, müssen Sie cpio nur mit der Option –t verwenden:

you@host > cpio -t < Shellbuch.cpio
...

copy pass

Mit copy pass werden die Dateien von der Standardeingabe gelesen und in ein entsprechendes Verzeichnis kopiert, ohne dass ein Archiv erzeugt wird. Hierzu wird die Option –p eingesetzt. Voraussetzung ist natürlich, dass ein entsprechendes Verzeichnis existiert. Wenn nicht, können Sie zusätzlich die Option –d verwenden, womit dann ein solches Verzeichnis erzeugt wird.

you@host > ls *.txt | cpio -pd /archive/testdir2

Hiermit werden aus dem aktuellen Verzeichnis alle Textdateien in das Verzeichnis testdir2 kopiert. Der Aufruf entspricht demselben wie:

you@host > cp *.txt /archive/testdir2

Einen ganzen Verzeichnisbaum des aktuellen Arbeitsverzeichnisses könnten Sie somit mit folgendem Aufruf kopieren:

you@host > find . -print | cpio -pd /archiv/testdir3

afio

afio bietet im Gegensatz zu cpio die Möglichkeit, die einzelnen Dateien zu komprimieren. Somit stellt afio eine interessante tar-Alternative dar (für jeden, der tar mit seinen typischen Optionsparametern nicht mag). afio komprimiert die einzelnen Dateien noch, bevor Sie in ein Archiv zusammengefasst werden. Ein einfaches Beispiel:

you@host > ls *.txt | afio -o -Z Shellbook.afio

Sie komprimieren zunächst alle Textdateien im aktuellen Verzeichnis und fassen dies dann in das Archiv Shellbook.afio zusammen. Die Platzeinsparung im Vergleich zu cpio ist beachtlich:

you@host > ls -l Shellbook*
-rw-------  1 tot users 209920 2005–04–24 14:59 Shellbook.afio
-rw-------  1 tot users 640512 2005–04–24 15:01 Shellbook.cpio

Entpacken können Sie das Archiv wieder wie bei cpio mit dem Schalter –i:

you@host > afio -i -Z Shellbook.afio

Rheinwerk Computing

crypt – Dateien verschlüsseln  downtop

Mit dem Kommando crypt wird ein ver-/entschlüsselnder Text von der Standardeingabe gelesen, um diesen wieder ver-/entschlüsselnd auf die Standardausgabe auszugeben.

crypt 32asdf32 < file.txt > file.txt.crypt

Hier wird beispielsweise die Datei file.txt eingelesen. Zum Verschlüsseln wurde das Passwort »32asdf32« verwendet. Der verschlüsselte, nicht mehr lesbare Text wird nun unter file.txt.crypt gespeichert. Jetzt sollte die Datei file.txt gelöscht werden.

Wenn es um wichtige Daten geht, sollte man auch dafür sorgen, dass diese nicht wieder sichtbar gemacht werden können. Zuerst mit Zufallsdaten überschreiben und dann löschen – natürlich ein Fall für awk:

you@host > dd if=/dev/urandom of=file.txt bs=1 \
> count=`wc -c file.txt | awk '{ print $1 }'`; rm file.txt

Die Datei file.txt.crypt können Sie mit

crypt 32asdf32 < file.txt.crypt > file.txt

wieder entschlüsseln. Wenn Sie das Passwort vergessen haben, dann werden Sie wohl ein großes Problem haben, die Verschlüsselung zu knacken.


Hinweis   Beachten Sie bitte die Gesetzeslage zur Verschlüsselung in Ihrem Heimatland. Kryptographie ist inzwischen in einigen Ländern verboten. So darf man in Frankreich zum Beispiel kein PGP einsetzen. crypt gilt übrigens nicht wirklich als »starke« Kryptographie, da gibt es »Härteres«. Was nicht heißen soll, dass das so einfach knackbar wäre. Ich wüsste noch nicht einmal, ob es überhaupt knackbar ist.



Rheinwerk Computing

dump/restore bzw. ufsdump/ufsrestore – Vollsicherung bzw. Wiederherstellen eines Dateisystems  downtop

Mit dump und restore (unter Solaris als ufsdump und ufsrestore bekannt) werden nicht einzelne Dateien oder Verzeichnisse ausgelesen, sondern das komplette Dateisystem. Da hierbei blockweise ausgelesen und auch wieder zurückgeschrieben wird, entsteht ein ziemlicher Geschwindigkeitsvorteil. Nebenbei wird außerdem vor den eigentlichen Daten noch ein Inhaltsverzeichnis erstellt, was Sie zum Wiederherstellen mit restore verwenden können, um einzelne Dateien auszuwählen, die wieder hergestellt werden sollen (sehr elegant diese interaktive Rücksicherung).


Hinweis   Da dump ein komplettes Dateisystem sichert, sollten Sie sicher sein, dass sich dieses in einem stabilen Zustand befindet. Denn ist das Dateisystem inkonsistent und Sie führen einen dump aus und wollen diesen dump irgendwann wieder einspielen, so spielen Sie auch sämtliche Instabiltäten mit ein. Daher empfiehlt sich als sicherster Weg der Single-User-Mode zum »Dumpen«.


Eine feine Sache sind auch die Dump-Levels, welche einfache inkrementelle Backups erlauben. Dazu verwendet man ein Backup-Level zwischen 0 bis 9. 0 steht hierbei für ein Full-Backup und alle anderen Zahlen sind inkrementelle Backups. Dabei werden immer nur die Dateien gesichert, die sich seit dem letzten Backup verändert haben – sprich dessen Level kleiner oder gleich dem aktuellen war. Geben Sie bspw. einen Level-2-Backup-Auftrag mit dump an, so werden alle Dateien gesichert, die sich seit dem Level 0, 1, 2 und 3 verändert haben.

Die Syntax zu dump/usfdump:

dump -[0–9][u]f Archiv Verzeichnis

In der Praxis schreiben Sie bspw. Folgendes:

dump –0uf /dev/rmt/1 /

Damit führen Sie ein komplettes Backup des Dateisystems durch. Alle Daten werden auf ein Band /dev/rmt/1 gesichert. Dieses Full-Backup müssen Sie zum Glück nur beim ersten Mal vornehmen (können es aber selbstverständlich immer durchführen), was gerade bei umfangreichen Dateisystemen Zeit raubend ist. Wollen Sie beim nächsten Mal jetzt immer die Dateien sichern, die sich seit dem letzten Dump-Level verändert haben, so müssen Sie nur den nächsten Level angeben:

dump –1uf /dev/rmt/1 /

Hierbei lassen sich richtige dump-Strategien einrichten, z. B. einmal in der Woche mit einem Shellscript einen Full-Backup-dump mit Level 0. In den darauf folgenden Tagen können Sie bspw. den Dump-Level jeweils um den Wert 1 erhöhen.

Damit die Dump-Levels auch tadellos funktionieren, wird die Datei /etc/dumpdates benötigt, worin das Datum der letzten Sicherung gespeichert wird. Gewöhnlich müssen Sie diese Datei vor dem ersten inkrementellen Dump mittels »touch /etc/dumdates« anlegen. Damit dies auch mit dem dump-Aufruf klappt, wird die Option –u verwendet. Mit dieser Option wird das aktuelle Datum in der Datei /etc/dumpdates vermerkt. Die Option –u ist also sehr wichtig, wenn ein inkrementelles »Dumpen« funktionieren soll. Außerdem wurde die Option –f dateiname für die Standardausgabe verwendet. Fehlt diese Option, dann wird auf die Umgebungsvariable TAPE und letztlich auf einen einkompilierten »Standard« zurückgegriffen. Zwangsläufig müssen Sie also einen dump nicht auf ein Tape vornehmen (auch wenn dies ein häufiger Einsatz ist), sondern können auch mit der Angabe von –f eine andere Archiv-Datei nutzen:

dump –0f /pfadzumArchiv/archiv_usr.121105 /usr

Hier wird bspw. das Verzeichnis /usr in einer Archiv-Datei gesichert.

Zum Wiederherstellen bzw. Zurücklesen von mit dump/ufsdump gesicherten Daten wird restore verwendet. Die Syntax von restore ähnelt der des Gegenstücks dump – allerdings findet man hier weitere Optionen für den Arbeitsmodus:


Tabelle 14.20   Optionen für das Kommando restore/ufsrestore

Option Bedeutung
i Interaktives Rückspielen (interactive)
r Wiederherstellen eines Dateisystems (rebuild)
t Auflisten des Inhalts (table)
x Extrahieren einzelner, als zusätzliche Argumente aufgeführter Dateien (extract). Verzeichnisse werden dabei rekursiv ausgepackt.

So können Sie zum Beispiel das /usr-Dateisystem folgendermaßen mit restore wieder zurücksichern:

# cd /usr
# restore rf /pfadzumArchiv/archiv_usr.121105

Wichtiges zu dump und restore noch zum Schluss. Da diese Werkzeuge auf einer Dateisystemebene arbeiten, ist die »Portabilität« der Archive recht unzuverlässig. Bedenken Sie, dass Sie unter Linux häufig einen dump auf ext2/ext3-Ebene durchführen und unter Solaris mit ufsdump eben auf UFS-Ebene. Sie können also nicht mal eben einen dump auf einem anderen Rechner vornehmen, bei dem bspw. als Dateisystem ext2 verwendet wurde, und diesen auf einen Rechner mit UFS als Dateisystem einspielen. Zwar klappt dies manchmal, wie bspw. zwischen Linux (ext2) und FreeBSD (UFS), doch leider kann man hierbei keine generelle Aussage treffen. Also sollten Sie sich mit den Dateisystemen schon sehr gut auskennen, um hier mit dump und restore zu experimentieren!

Des Weiteren benötigt dump zum Erstellen eines kompletten Indexes des Dateisystems eine Menge Arbeitsspeicher. Bei einem kleinen Hauptspeicher sollten Sie den Swap-Bereich erheblich vergrößern.


Rheinwerk Computing

gzip/gunzip – (De-)Komprimieren von Dateien  downtop

gzip komprimiert Dateien und fügt am Ende des Dateinamen die Endung ».gz« an. Die Originaldatei wird hierbei durch die komprimierte Datei ersetzt. gzip basiert auf dem deflate-Algorithmus, der eine Kombination aus LZ77 und Huffman-Kodierung ist. Der Zeitstempel einer Datei und auch die Zugriffsrechte bleiben beim Komprimieren und auch beim Entpacken mit gunzip erhalten.


Hinweis   Sofern Sie Software-Entwickler in bspw. C sind und Datenkompression verwenden wollen, sollten Sie sich die Bibliothek zlib ansehen. Diese Bibliothek unterstützt das gzip-Dateiformat.


Komprimieren können Sie eine oder mehrere Datei(en) ganz einfach mit:

you@host > gzip file1.txt

Und Dekomprimieren geht entweder mit gzip und der Option –d

you@host > gzip -d file1.txt.gz

oder mit gunzip:

you@host > gunzip file1.txt.gz

Wobei gunzip hier kein symbolischer Link ist, sondern ein echtes Kommando. gunzip kann neben gzip-Dateien auch Dateien dekomprimieren, die mit zip (eine_Datei), compress oder pack komprimiert wurden.

Wollen Sie, dass beim (De-)Komprimieren nicht die Originaldatei berührt wird, so müssen Sie die Option –c verwenden:

you@host > gzip -c file1.txt > file1.txt.gz

Dies können Sie ebenso mit gunzip anwenden:

you@host > gunzip -c file1.txt.gz > file1_neu.txt

Damit lassen Sie die gzip-komprimierte Datei file1.txt.gz unberührt und erzeugen eine neue dekomprimierte Datei file1_neu.txt. Selbiges können Sie auch mit zcat erledigen:

you@host > zcat file1.txt.gz > file1_neu.txt

Rheinwerk Computing

mt – Streamer steuern  downtop

Mit mt können Magnetbänder vor- oder zurückgespult, positioniert und gelöscht werden. mt wird häufig in Shellscripts in Verbindung mit tar, cpio oder afio verwendet, weil jedes der Kommandos zwar auf Magnetbänder schreiben kann, aber diese nicht steuern können. So wird mt wie folgt in der Praxis verwendet:

mt -f tape befehl [nummer]

Mit »tape« geben Sie den Pfad zu Ihrem Bandlaufwerk an und mit »nummer«, wie oft »befehl« ausgeführt werden soll. Hierzu die gängigsten Befehle, die dabei eingesetzt werden:


Tabelle 14.21   Befehle für das Kommando mt

Befehl Bedeutung
eom Band bis zum Ende der letzten Datei spulen. Ab hier kann mit tar, cpio und afio (oder gar dump/ufsdump) ein Backup aufgespielt werden.
fsf Anzahl Das Band um »Anzahl« Archive (Dateiendemarken) vorspulen. Nicht gleichzusetzen mit der letzten Datei (eom).
nbsf Anzahl Das Band um »Anzahl« Archive (Dateiendemarken) zurückspulen
rewind Das Band an den Anfang zurückspulen
status Statusinformationen vom Magnetlaufwerk ermitteln und ausgeben (bspw. ist ein Band eingelegt oder nicht)
erase Das Band löschen und initialisieren
retension Das Band einmal ans Ende spulen und wieder zum Anfang zurück, um es neu zu »spannen«
offline Band zum Anfang zurückspulen und auswerfen


Rheinwerk Computing

pack/unpack – (De-)Komprimieren von Dateien  downtop

Diese beiden Programme werden nur noch der Vollständigkeit erwähnt und sind mittlerweile von älteren Semestern. Eine mit pack komprimiert Datei hat die Endung ».z« und kann mit unpack (oder gunzip) wieder entpackt werden.


Rheinwerk Computing

tar – Dateien und Verzeichnisse archivieren  downtop

tar (tape archiver) wurde ursprünglich zur Verwaltung von Bandarchiven verwendet. Mittlerweile aber wird tar auch auf Disketten oder normale Dateien oder Verzeichnisse angewendet. Das Kommando wird zur Erstellung von Sicherungen bzw. Archiven sowie zu ihrem Zurückladen genutzt.

tar funktion [optionen] [datei(en)]

Mit »funktion« geben Sie an, wie die Erstellung bzw. das Zurückladen von Archiven erfolgen soll. Mit »datei(en)« bestimmen Sie, welche Dateien oder Dateibäume herausgeschrieben oder wieder eingelesen werden sollen. Gibt man hierbei ein Verzeichnis an, so wird der gesamte darin enthaltene Dateibaum verwendet. Gewöhnlich werden Archive mittels tar nicht komprimiert, aber auch hier kann man mit tar die Ein- und Ausgabe durch einen Kompressor leiten. Neuere Versionen unterstützen sowohl compress als auch gzip und bzip2, das inzwischen einen recht hohen Stellenwert hat. Das gilt auch nicht nur für GNU-tar.

tar (besonders GNU-tar) ist gewaltig, was die Anzahl von Funktionen und Optionen betrifft. Da tar eigentlich zu einem sehr beliebten Archivierungswerkzeug gehört, sollen hierbei auch mehrere Optionen und Funktionen erwähnt werden.


Hinweis   Um mich hier nicht auf einen Glaubenskrieg von tar-Fanatikern einzulassen (die gibt es wirklich), sei erwähnt, dass es viele tar-Versionen gibt (GNU-tar, star, bsdtar, usw.). Gewöhnlich reicht für den Normalanwender GNU-tar aus – aber es gibt auch Anwender, die auf star schwören, was in punkto Funktionsumfang der »Overkill« ist. Ich mache es mir hier jetzt einfach, indem ich darauf hinweise, dass die Funktionen, die gleich folgen werden, nicht von allen tar-Versionen unterstützt werden (wohl aber von GNU-tar).


Hierzu die Optionen, womit Sie die Funktion von tar festlegen (es darf bei den 1-Zeichen-Funktionen auch das führende – weggelassen werden):


Tabelle 14.22   Optionen für das Kommando tar

Option Bedeutung
–A Hängt ein komplettes Archiv an ein zweites vorhandenes Archiv an (oder fügt es auf dem Band hinten an)
–c Erzeugt ein neues Archiv
–d Vergleicht die im Archiv abgelegten Dateien mit den angegebenen Dateien
––delete Datei(en) Löscht die angegebenen »Datei(en)« aus dem Archiv (nicht für Magnetbänder)
–r Erwähnte Dateien werden ans Ende von einem bereits existierenden Archiv angehängt (nicht für Magnetbänder)
–t Zeigt den Inhalt eines Archivs an
–u Benannte Dateien werden nur dann ins Archiv aufgenommen, wenn diese neuer als die bereits archivierten Versionen oder noch überhaupt nicht im Archiv vorhanden sind (nicht für Magnetbänder).
–x Bestimmte Dateien sollen aus einem Archiv gelesen werden; werden keine Dateien erwähnt, werden alle Dateien aus dem Archiv extrahiert.

Hierzu gibt es noch einige Zusatzoptionen. Die Gängigsten sind:


Tabelle 14.23   Zusatzoptionen für das Kommando tar

Option Bedeutung
–f Datei Benutzt »Datei« oder das damit verbundenen Gerät als Archiv; die Datei darf auch Teil von einem anderen Rechner sein.
–l Geht beim Archivieren nicht über die Dateisystemgrenze hinaus
–v tar gibt gewöhnlich keine speziellen Meldungen aus; mit dieser Option wird jede Aktion von tar gemeldet.
–w Schaltet tar in einen interaktiven Modus, wo zu jeder Aktion eine Bestätigung erfolgen muss
–y Komprimiert oder dekomrimiert die Dateien bei einer tar-Operation mit bzip2
–z Komprimiert oder dekomprimiert die Dateien bei einer tar-Operation mit gzip bzw. gunzip
–Z Komprimiert oder dekomprimiert die Dateien bei einer tar-Operation mit compress bzw. uncompress

Neben diesen zusätzlichen Optionen bietet tar noch eine Menge Schalter mehr an. Weitere Informationen entnehmen Sie bei Bedarf der man-Seite zu tar. Allerdings dürften Sie mit den hier genannten Optionen recht weit kommen. Daher hierzu einige Beispiele.

Am häufigsten wird tar wohl in folgender Grundform verwendet:

tar cf Archiv_Name Verzeichnis

Damit wird aus dem Verzeichniszweig Verzeichnis ein Archiv mit dem Namen Archiv_Name erstellt. In der Praxis:

you@host > tar cf Shellbuch_mai05 Shellbuch

Aus dem kompletten Verzeichniszweig Shellbuch wird das Archiv Shellbuch_mai05 erstellt. Damit Sie beim Zurückspielen der Daten flexibler sind, sollten Sie einen relativen Verzeichnispfad angeben:

cd Verzeichnis ; tar cf Archiv_Name .

Im Beispiel:

you@host > cd Shellbuch ; tar cf Shellbuch_mai05 .

Hierfür steht Ihnen für das relative Verzeichnis auch die Option –C Verzeichnis zur Verfügung:

tar cf Archiv_Name -C Verzeichnis .

Wollen Sie die Dateien und Verzeichnisse des Archivs wiederherstellen, lautet der gängige Befehl hierzu wie folgt:

tar xf Archiv_Name

Um auf unser Beispiel zurückzukommen:

you@host > tar xf Shellbuch_mai05

Wollen Sie einzelne Dateien aus einem Archiv wiederherstellen, so ist dies auch kein allzu großer Aufwand:

tar xf Shellbuch_mai05 datei1 datei2 ...

Beachten Sie allerdings, wie Sie die Datei ins Archiv gesichert haben (relativer oder absoluter Pfad). Wollen Sie bspw. die Datei Shellbook.cpio mit dem relativen Pfad wiederherstellen, so können Sie dies wie folgt tun:

you@host > tar xf Shellbuch_mai05 ./Shellbook.cpio

Hinweis   Ein häufiger Fehler, wenn etwas mit tar nicht klappt, ist eine falsche Pfadangabe. Man sollte daher immer überlegen, wo liegt das Archiv, wo soll rückgesichert werden und wie wurden die Dateien ins Archiv aufgenommen (absoluter oder relativer Pfad).


Wollen Sie außerdem mitverfolgen, was beim Erstellen oder Auspacken eines Archivs alles passiert, sollten Sie die Option v verwenden. Hierbei können Sie außerdem gleich erkennen, ob Sie die Dateien mit dem absoluten oder relativen Pfad gesichert haben.

# neues Archiv erzeugen mit Ausgabe aller Aktionen
tar cvf Archiv_Name Verzeichnis
# Archiv zurückspielen, mit Ausgabe aller Aktionen
tar xvf Archiv_Name

Den Inhalt eines Archivs können Sie mit der Option t ansehen:

tar tf Archiv_Name

In unserem Beispiel:

you@host > tar tf Shellbuch_mai05
./
./Planung_und_Bewerbung/
./Planung_und_Bewerbung/shellprogrammierung.doc
./Planung_und_Bewerbung/shellprogrammierung.sxw
./kap004.txt
./kap005.txt
./testdir2/
...

Hier wurde also der relative Pfadname verwendet. Wollen Sie ein ganzes Verzeichnis auf Diskette sichern, erledigen Sie dies folgendermaßen:

tar cf /dev/fd0 Shellbuch

Hier kopieren Sie das ganze Verzeichnis auf eine Diskette. Zurückspielen können Sie das Ganze wieder wie folgt:

tar xvf /dev/fd0 Shellbuch

Wollen Sie einen kompletten Verzeichnisbaum mit Kompression archivieren (bspw. mit gzip), gehen Sie so vor:

you@host > tar czvf Shellbuch_mai05.tgz Shellbuch

Dank der Option z wird jetzt das ganze Archiv auch noch komprimiert. Ansehen können Sie sich das komprimierte Archiv weiterhin mit der Option t:

you@host > tar tzf Shellbuch_mai05.tgz Shellbuch
Shellbuch/
Shellbuch/Planung_und_Bewerbung/
Shellbuch/Planung_und_Bewerbung/shellprogrammierung.doc
Shellbuch/Planung_und_Bewerbung/shellprogrammierung.sxw
Shellbuch/kap004.txt
Shellbuch/kap005.txt
Shellbuch/testdir2/
...

Hier wurde also der absolute Pfadname verwendet. Entpacken und wieder einspielen können Sie das komprimierte Archiv wieder mit (mit Meldungen):

you@host > tar xzvf Shellbuch_mai05.tgz Shellbuch

Wollen Sie allerdings nur Dateien mit der Endung ».txt« aus dem Archiv extrahieren, können Sie dies so vornehmen:

you@host > tar xzf Shellbuch_mai05.tgz '*.txt'

Rheinwerk Computing

zip/unzip – (De-)Komprimieren von Dateien  downtop

Mit zip können Sie einzelne Dateien bis hin zu ganzen Verzeichnissen komprimieren und archivieren. Besonders gern werden zip und unzip allerdings verwendet, weil diese gänzlich mit den Versionen von Windows und DOS kompatibel sind. Wer sich also immer schon geärgert hat, dass sein Mail-Anhang wieder einmal etwas im ZIP-Format enthält, kann hier auf unzip zurückgreifen.

Ein ZIP-Archiv aus mehreren Dateien können Sie so erstellen:

you@host > zip files.zip file1.txt file2.txt file3.txt
  adding: file1.txt (deflated 56  %)
  adding: file2.txt (deflated 46  %)
  adding: file3.txt (deflated 24  %)

Hier packen und komprimieren Sie die Dateien zu einem Archiv namens files.zip. Wollen Sie eine neue Datei zum Archiv hinzufügen, nichts einfacher als das:

you@host > zip files.zip hallo.c
  adding: hallo.c (deflated 3  %)

Möchten Sie alle Dateien des Archivs in das aktuelle Arbeitsverzeichnis entpacken, dann tun Sie dies so:

you@host > unzip files.zip
Archive:  files.zip
  inflating: file1.txt
  inflating: file2.txt
  inflating: file3.txt
  inflating: hallo.c

Wenn Sie eine ganze Verzeichnishierarchie packen und komprimieren wollen, so müssen Sie die Option –r (rekursive) verwenden:

you@host > zip -r Shellbuch.zip $HOME/Shellbuch
...

Entpacken können Sie das Archiv allerdings wieder wie gewohnt mittels unzip.


Rheinwerk Computing

Übersicht zu Dateiendungen und den Pack-Programmen  toptop

In der folgenden Tabelle wird eine kurze Übersicht zu den Dateiendungen und den zugehörigen (De-)Komprimierungsprogrammen gegeben.


Tabelle 14.24   Gängige Endungen und deren (De-)Kompremierungs-Kommando

Endung gepackt mit entpackt mit
*.bz und *.bz2 bzip2 bzip2
*.gz gzip gzip, gunzip oder zcat
*.zip Info–Zip, PKZip, zip Info–Unzip, PKUnzip, unzip, gunzip (eineDatei)
*.tar tar tar
*.tbz tar und bzip2 tar und bzip2
*.tgz; *.tar.gz tar und gzip tar und g(un)zip
*.Z compress uncompress; gunzip
*.tar.Z tar und compress tar und uncompress
*.pak pack unpack, gunzip



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.

>> Zum Feedback-Formular
 << zurück
  
  Zum Katalog
Zum Katalog: Shell-Programmierung
Shell-Programmierung
bestellen
 Buchtipps
Zum Katalog: Shell-Programmierung






 Shell-Programmierung


Zum Katalog: Linux-Server






 Linux-Server


Zum Katalog: Das Komplettpaket LPIC-1 & LPIC-2






 Das Komplettpaket
 LPIC-1 & LPIC-2


Zum Katalog: Linux-Hochverfügbarkeit






 Linux-
 Hochverfügbarkeit


Zum Katalog: Linux Handbuch






 Linux Handbuch


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2005
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de