Möchte man unter
Linux einen ganzen Ordner bequem in einer Datei archivieren, sozusagen
sämtliche Dateien als Paket verschnüren, gibt es das Programm
tar.
tar = Archivierungsprogramm
unter Linux (ohne Kompression!)
Syntax= tar [option]...
[File(s)]...
Optionen:
-c (create) erzeugt (packt) ein neues Archiv
-t (table of contents) zeigt den Inhalt eines Archives
-v gibt ausführlichere Informationen
-x (extract) extrahiert (entpackt) ein Archiv
-j ruft das Komprimierungsprogramm bzip2 auf
-z ruft das Komprimierungsprogramm gzip auf
-f ermöglicht die Angabe eines Dateinamens. Wird -f
nicht angegeben, wird die Standard Ein- und Ausgabe benutzt.
tar arbeitet implizit immer rekursiv, d.h. wird eine Dateiname angegeben,
wird je nach Modus (-c,-x) die Datei ins Archiv gepackt oder ausgepackt.
Ein Verzeichnisname bewirkt hingegen, dass tar das ganze Verzeichnis
mit Unterverzeichnissen bearbeitet. So können ganze Ordner
inklusive dem relativiertem Pfad in ein Archiv gepackt werden. Zum
Beispiel:
# tar -cvf /tmp/archiv.tar
/home/tux /var/mail/tux
Erstellt das
Archiv archiv.tar, das die kompletten Verzeichnisse home/tux
und var/mail/tux enthält (die Pfade sind relativiert!
Man beachte das fehlende / am Anfang, daher kann das Archiv in jedem
beliebigem Verzeichnis ausgepackt werden, ohne bestehende Verzeichnisse
zu überschreiben!).
# tar -tvf archiv.tar
Zeigt den Inhalt des Archives archiv.tar an (Option -t),
wobei -v eine Ausgabe ähnlich ls -l bewirkt.
# tar -xvf archiv.tar
entpackt das Archiv archiv.tar im aktuellen Verzeichnis. Um nur bestimmte Teile des Archivs zu entpacken, kann man die entsprechenden Dateien und/oder Ordner angeben, z.B.
# tar -xvf archiv.tar Datei1 Verzeichnis2/ Verzeichnis3/Datei3
Dabei muß man den kompletten Pfad zu den Dateien im Archiv mitangeben, daher ist es sinnvoll sich vorher das Archiv mittels -t auflisten zu lassen und die entsprechenden Einträge zu kopieren. Möchte man zum entpacken ein anderes Verzeichnis als das Aktuelle angeben, hilft die Option -C:
# tar -xvf archiv.tar -C Entpack-Verzeichnis/
Natürlich ist das
verschnüren von vielen Dateien zu einem Paket ja ganz schön
und recht, aber noch schöner wäre es natürlich, wenn
man dabei auch noch Platz sparen kann. Hier kommen die Programme
gzip und bzip2 ins Spiel...
gzip, bzip2
Gemäß der
Unix-Philosophie "Mach nur eine Sache, die aber richtig!"
komprimiert tar keine Archive. tar arbeitet aber mit Kompressions-Programmen
zusammen und kann sie aufrufen, daher ist es ein leichtes das Archiv
auch noch in einem Rutsch zu komprimieren.
# tar -cvzf archiv.tar.gz
Verzeichnis
Archiviert das angegebene Verzeichnis in archiv.tar und ruft
anschließend gzip auf (Option -z) um das Archiv
zu komprimieren, daher ist dieser Befehl analog zu:
# tar -c Verzeichnis | gzip > archiv.tar.gz
oder auch in zwei Schritten:
# tar -cf achiv.tar Verzeichnis
# gzip archiv.tar
Und jetzt das ganze umgekehrt:
# tar -xvzf archiv.tar.gz
ruft gzip auf um die Datei archiv.tar.gz zu dekomprimieren
und anschließend zu entpacken und ist das gleiche wie:
# gzip -dc archiv.tar.gz | tar -x
Wem gzip nicht gefällt,
der kann auch bzip2 nehmen:
# tar -cvjf
archiv.tar.bz2 Verzeichnis
packt die Dateien aus dem angegebenen Verzeichnis in ein Archiv
und ruft dann bzip2 auf, um es zu komprimieren (option j
für bzip2).
# tar -xvjf archiv.tar.bz2
ruft bzip2 auf zum dekomprimieren und entpackt dann.
Und wem weder gzip noch
bzip2 gefällt, der nimmt halt compress:
# tar -cvZf archiv.tar.Z Verzeichnis
packt ein Archiv und komprimiert es anschließend mit compress
(Option Z).
# tar -xvZf archiv.tar.Z
dekomprimiert und entpackt ein compress-Archiv.
zip - unzip
Natürlich kann Linux
auch mit der klassischen Windows-Komprimierung, also mit zip-Files
umgehen. Der grundlegende Befehl dazu lautet:
# zip options archiv inpattern inpattern ...
Ein Beispiel:
# zip -r archiv.zip home/
packt den ganzen Ordner home in das zip-archiv (option
-r für rekursiv). Existiert das Archiv schon, werden vom
Namen her identische Einträge überschrieben und Einträge
mit neuem Namen hinzu gefügt. Bereits existierende Dateien
für die kein File mit gleichem Namen existiert bleiben unangetastet.
Der Ordner wird mit allen Unterordner und relativen Pfadangaben
gespeichert. Beim auspacken wird die Verzeichnisstruktur relativ
zum Extraktionsverzeichnis wieder hergestellt. Natürlich kann
man auch mit sogenannten "Wildcards" arbeiten:
# zip archiv.zip *.jpg
packt alle jpg-Dateien in das angegebene Archiv.
Möchte man einzelne
Einträge aus einem Archiv löschen, hilft -d (delete),
z.B.
# zip -d archiv.zip *.jpg
entfernt alle jpg-Dateien aus dem Archiv.
Um den Inhalt eines Archivs
anzeigen zu lassen oder es wieder auszupacken, gibt es das Programm
unzip. Das Auspacken ist ganz simpel:
# unzip archiv.zip -d Directory/
extrahiert das zip-File in das mit -d angegebene Verzeichnis.
Gibt man kein Verzeichnis an, wird in das momentane Verzeichnis
in dem man sich gerade befindet entpackt. Möchte man lediglich
den Inhalt eines Archivs sehen, ohne es zu extrahieren, hilft -l
(list):
# unzip -l archiv.zip
Dabei wird nicht nur die Dateigröße jeder einzelnen Datei
angezeigt, sondern auch eine Zusammenfassung aller Dateien.
|