Packen, Entpacken, Archivieren
Eine gute Einführung übers Archivieren und Komprimieren gibts in bei
Welsh et al. 2000.
Ich beschränke mich daher im weiteren auf ein paar eigene Bemerkungen.
- *.gz-Dateien entpacken:
> gunzip dateiname.gz
Achtung: gunzip ersetzt die gepackte Datei (dateiname.gz)
mit der ungepackten Version (dateiname).
Achtung2: gunzip ist ungeeignet um *.zip-Dateien
zu entpacken. gunzip unterstützt nur *.zip-Archive,
die aus genau einer Datei bestehen (siehe auch man gunzip).
Zum Entpacken von *.zip-Archiven die aus mehrerer Dateien bestehen
(was praktisch immer der Fall ist) muß man unzip verwenden.
- *.zip-Dateien entpacken:
> unzip dateiname.zip
Dabei werden alle Dateien und Verzeichnisse ins aktuelle Verzeichnis entpackt.
Um Chaos zu vermeiden empfiehlt es sich daher vor dem Entpacken ein neues
Verzeichnis dateiname anzulegen, die Datei dateiname.zip
in dieses zu verschieben und dort erst zu entpacken. Das gleiche Vorgehen
empfiehlt sich natürlich auch für *.tar-Archive.
- *.tar.gz-Dateien entpacken:
> tar zxvf dateiname.tar.gz
Die obige Schreibweise entspricht der sogennanten BSD-Unix-Schreibweise.
tar unterstützt auch die Standart-Schreibweise. Mit dieser
würde die obige Befehlszeile folgendermaßen aussehen:
> tar -z -x -v -f dateiname.tar.gz
Zu beachten ist, dass die Option -f stets die letzte ist, da diese
den zu entpackenden Dateinamen angibt und daher dieser direkt im Anschluß
an die Option -f stehen muß. Die weiteren Optionen sind:
- -v (verbose): Damit gibt tar Informationen über den
Entpackprozess an. Kann auch mehrfach angegeben werden, dann gibt tar
immer mehr Informationen an.
- -x (extract): Sagt nur, dass die Datei hinter -f entpackt
bzw. dearchiviert werden soll.
- -z: Gibt an, dass die Datei hinter -f zunächst mit
gunzip entpackt und dann erst weiter mit tar dearchiviert werden
soll. Dies erspart den Extraaufruf von gunzip zum Entpacken der
*.tar.gz-Datei. Statt -x kann man hier übrigens auch andere Optionen
und damit andere Packprogramme verwenden. Verwendet man -X wird
uncompress (für *.tar.z-Dateien) aufgerufen, verwendet man -j
wird bunzip2 (für *.tar.bz2-Dateien) benutzt.
Hinweis: Auf FAT32-Filesystemen ist zusätzlich die
Option -m anzugeben, welche das Entpacken der Dateimodifikationszeit
verhindert, da es ansonsten beim Entpacken zu Fehlermeldungen kommt.
- *.tar.gz-Dateien packen:
> tar zcvf verzeichnis.tar.gz verzeichnis
Zu Beachten ist hier, dass
(im Gegensatz zu anderen Kommandos wie z.B. cp oder scp)
die zu erzeugende Datei (das Ziel) zuerst angegeben
werden muß und dann erst das zu archivierende Verzeichnis (die Quelle).
Die Optionen dazu sind die gleichen wie oben beschrieben, nur steht nun
-c dafür, dass tar jetzt archivieren soll und -z
steht dafür, dass nach der Archivierung durch tar das Archiv noch
mittels gzip komprimiert werden soll.
- *.tar.gz-Dateien erzeugen, wobei versteckte Verzeichnisse von Subversion (.svn) ausgeschlossen werden:
> tar --exclude='.svn' -zcvf verzeichnis.tar.gz verzeichnis
oder in neueren tar Versionen auch mit
> tar --exclude-vcs -zcvf verzeichnis.tar.gz verzeichnis
Siehe auch
http://www.linuxquestions.org.
- Entpackprozess beobachten:
Hat man beim Aufruf des Entpackprogramms die Verbose-Option vergessen und man möchte
trotzdem wissen, ob der Entpackprozess vorangeht, kann man dies mit Hilfe von
watch erreichen. Hat man z.B. das Entpacken mehrerer
*.iso.gz-Dateien mittels gunzip gestartet, kann man mittels
>watch ls -l *.iso
sehen, wie sich die Größe der entpackten Datei (im Abstand von zwei Sekunden,
da watch einfach alle 2 Sekunden den Befehl ls -l ausführt)
mit der Zeit entwickelt.
Hinweis: watch ll *.iso funktioniert nicht, da watch
anscheinend nicht mit Aliasen umgehen kann.
- Inhalt von *.war-Dateien anzeigen
> jar -tf datei.war
war-Dateien sind übrigens keine Dateien für den
Verteidigungsfall sondern
sogenannte Web Application Archive-Dateien
abgeleitet von
Java Archive-Dateien (*.jar).
- Dateien aufteilen (splitten) und wieder zusammenfügen
Moechte man eine sehr große Datei namens file in Teile zu je 1GB = 1024MB aufteilen, so hilft das
split-Kommando:
> split -b 1024m file file.split
Um die so entstandenen Teile namens file.split.aa, file.split.ab, ... wieder zusammenzufuegen nutzt man cat:
> cat file.split.* > file