Packen und Komprimieren mit tar
Wer wie ich aus dem Windows-Umfeld kommt, der hat mit tar-Dateien im Normalfall nicht viel zu tun. Wer mehrere Dateien in eine Datei verpacken und komprimieren will, verwendet dort zip.
Dadurch, dass ich aber immer mehr mit Linux zu tun habe, ist die Frage aufgekommen, was eigentlich der Unterschied zwischen tar und tar.gz/tar.z/… ist.
Unter Linux waren/sind das Verpacken mehrerer Dateien in eine Datei und das Komprimieren dieser zwei unterschiedliche Schritte.
Mit tar werden mehrere Dateien in eine Datei übernommen (was zu einer tar-Datei führt) und mit gzip wir diese im Anschluss komprimiert (was zu einer tar.gz-Datei führt).
Ein Nachteil an tar ist, dass diese Datei kein Inhaltsverzeichnis hat und somit muss die gesamte Datei zuerst eingelesen werden, um zu wissen, was sich darin befindet. Erst danach können Teile daraus extrahiert werden. Dafür ist es möglich, im Nachhinein einfach Inhalte zu ergänzen.
Die Schalter bei tar
-c = Neues Archiv erzeugen
-r = Dateien an bestehendes Archiv anhängen (nicht für gezippte Dateien!)
-x = Dateien aus Archiv extrahieren
-t = Inhalt der Datei anzeigen
-v = Detaillierte Ausgabe aktivieren
-z = Zusätzliches Komprimieren bzw. Dekomprimieren mit zip
-p = Zugriffsrechte behalten
-f = Archiv in angegebene Datei schreiben bzw. daraus auslesen: Wichtig: dieser Parameter ist immer der letzte aus der Liste, da es sonst zu einem Fehler kommt!
Spezielle Parameter zum Extrahieren
-C = plus Angabe des Verzeichnisses, wohin die Daten extrahiert werden sollen
Nachfolgend einige Beispiele:
Ein Archiv mit einer Datei erstellen
tar -cf archive.tar datei.pdf
Ein Archiv mit einer Datei und einem Ordner erstellen
tar -cf archive.tar datei.pdf ./ordner
Nochmal das gleiche, aber dieses Mal mit Komprimierung
tar -czf archive.zip datei.pdf ./ordner
Inhalt eines Archivs anzeigen
tar -tvf archive.tar
Archiv in einen bestimmten Ordner extrahieren
tar -xf archive.tar -C c:\temp\dest
Nur eine Datei aus dem Archiv in einen bestimmten Ordner extrahieren
tar -xf archive.tar -C c:\temp\dest datei.pdf
PS: tar steht übrigens für „tape archiver“ (Bandarchivierer), da damit ursprünglich Daten auf Bandlaufwerke gesichert wurden. Weiters ist tar auch das englische Wort für Teer. Dateien mit der Endung tar werden daher auch oft Tarball genannt, was auf Deutsch so viel heißt wie Teerklumpen. Quelle Wikipedia.