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 
Avatar
Andreas Maier
Data Alchemist

My interests include machine learning, software development, physics and mathematics

Related