Zitat
von http://www.uni-koeln.de/rrzk/server/unix/sicherung.html
Archivierung (tar) und Komprimierung (compress, gzip)
Eine Archivierung und/oder Komprimierung von Dateien nimmt man
immer
dann vor, wenn diese einerseits nicht permanent genutzt werden,
andererseits wenig Platz in Anspruch nehmen sollen. Früher
wurde die
Archivierung überwiegend im Zusammenhang mit der Auslagerung
von
Dateien auf Bändern vorgenommen. Heute archiviert und
komprimiert man
auch Plattendateien, um Platz zu sparen, so z.B. auf den Ftp-Servern
(siehe Ftp-Server:
Software-Server),
wo fast alle Dateien in dieser Form gespeichert sind. Der Spareffekt
liegt in einer Größenordnung von 40 bis 80 Prozent.
Der Nachteil ist,
daß die so gespeicherten Dateien nicht direkt nutzbar sind,
sondern
vorher dekomprimiert und dearchiviert werden müssen.
tar
(tape archiver) ist die Unix-Standardroutine zur Archivierung. Dies
beinhaltet zweierlei: zum einen wird durch die Archivierung ein
Dateiformat erzeugt, das auf Bänder und Kassetten
übertragbar ist, was
übrigens mit 'normalen' Dateien ohne weiteres nicht
möglich ist. Zum
anderen, und das ist auch unabhängig von der Bandverarbeitung
interessant, wird aus mehreren Dateien, normalerweise ganzen
Verzeichnissen mit all ihren Unterverzeichnissen, eine einzige
Archivierungsdatei erzeugt, die dann entsprechend tar-Datei
genannt wird. Wie bei vielen Unix-Standardroutinen gibt es auch eine
gnu-Version von tar, nämlich gtar,
die vielfach der Originalversion vorgezogen wird.
Der Standardaufruf zur Erzeugung einer solchen Datei ist:
- tar -cvf Tarfile Verzeichnis
- z.B.
- tar -cvf daten.tar daten/
Hierbei bedeuten die Optionen c
create, v verbose (Ausgabeprotokoll) und f
file. Verzeichnis ist das Verzeichnis, aus dem die tar-Datei
Tarfile erzeugt werden soll. Natürlich darf
Verzeichnis
auch eine Datei oder eine Liste mehrerer Dateien sein.
Zweckmäßigerweise führt man das Kommando
immer in dem Verzeichnis aus,
das das zu archivierende Verzeichnis als Unterverzeichnis
enthält, da
es dann als relativer Pfad, also ohne führenden / angegeben
werden
kann. Gibt man nämlich einen absoluten Pfad an, so
würde bei der
Dearchivierung versucht, wieder genau dasselbe Verzeichnis anzulegen,
was zu Problemen führen kann. Die zu archivierenden Dateien
oder
Verzeichnisse bleiben nach Ausführung bestehen und
müssen
gegebenenfalls selbst gelöscht werden, z.B. mit
- rm -r Verzeichnis
zum Löschen des Verzeichnisses mit allen
Unterverzeichnissen.
Der Inhalt einer tar-Datei kann am Bildschirm mit
- tar -tvf Tarfile
z.B. zur Kontrolle nach der Tarfile-Erstellung angeschaut
werden.
Der Standardaufruf zur Dearchivierung einer tar-Datei
ist:
- tar -xvf Tarfile
Hierbei bedeutet die Option x
extract. Verschiedene Systeme stellen standardmäßig
bei der
Dearchivierung nicht mehr die urprünglichen Zugriffsrechte
wieder her.
In solchen Fällen hilft die Option p.
Zur Komprimierung einer Datei gibt es das Standard-Unix-Programm
compress
oder besser noch das GNU-Programm
gzip :
-
- compress Datei
- bzw.
- gzip Datei
Durch
compress wird eine Datei mit dem Namen
Datei.Z
erzeugt, bzw. durch
gzip eine Datei
Datei.gz.
Diese sind binär, was für die Übertragung
z.B. mit SSH/Ftp wichtig ist.
Im Gegensatz zu tar bleibt die ursprüngliche Datei nicht
erhalten. Die
Dekomprimierung erfolgt mit
-
- uncompress Datei.Z
- bzw.
- gunzip Datei.gz
Bei der Archivierung auf Platte, so z.B. auf den Ftp-Servern,
werden Verzeichnisse zunächst mit tar
archiviert und anschließend komprimiert. Dadurch entstehen
Dateien mit der Endung ...tar.Z bzw. ...tar.gz.
Bei der Archivierung auf Bänder verzichtet man häufig
auf die
Komprimierung. Soll sie dennoch vorgenommen werden, so
müßte man nach
der Komprimierung noch einmal mit tar eine
Archivierung vornehmen, damit die komprimierte Datei auf Band/Kassette
geschrieben werden kann.