Linux Deutsch

Dateien mit tar archivieren und komprimieren

Lerne, wie du mit tar Dateien und Verzeichnisse archivierst, Archive prüfst, gzip oder bzip2 verwendest und Inhalte sicher wieder entpackst.

tar ist ein Linux-Kommandozeilenprogramm, mit dem du mehrere Dateien und Verzeichnisse in einer einzigen Archivdatei bündeln kannst. Diese Anleitung zeigt das Erstellen, Prüfen, Komprimieren, Entpacken und Zusammenführen von Tar-Archiven.

Grundkenntnisse im Terminal, mit cd, ls sowie relativen und absoluten Pfaden sind hilfreich. Eine Einführung findest du unter Einführung in Linux.

Grundlagen von tar

Der Name tar ist eine Abkürzung für Tape Archiver. Das Programm wurde ursprünglich entwickelt, um Dateien für Bandarchive zusammenzufassen. Heute wird es vor allem für Sicherungen, Quellcodepakete und den Austausch vieler Dateien verwendet.

Ein Archiv ist eine Containerdatei. Sie kann mehrere Dateien, Verzeichnisse und die zugehörige Verzeichnisstruktur enthalten. Ein Tar-Archiv bündelt diese Inhalte, ohne sie automatisch zu komprimieren.

Das ist der wichtige Unterschied:

  • Archivieren bedeutet, mehrere Dateien und Verzeichnisse in einer Datei zusammenzufassen.
  • Komprimieren bedeutet, die benötigte Datenmenge durch ein Kompressionsverfahren zu verringern.

Eine Datei mit der Endung .tar ist normalerweise ein unkomprimiertes Tar-Archiv. Die Bezeichnung Tarball wird allgemein für ein Tar-Archiv verwendet, besonders für komprimierte Varianten wie .tar.gz.

Aufbau eines tar-Befehls

Eine typische Syntax lautet:

tar AKTION OPTIONEN -f ARCHIVDATEI QUELLEN

Die Aktion bestimmt, was tar tun soll. Häufige Aktionen sind Erstellen mit -c, Auflisten mit -t, Extrahieren mit -x und Anhängen mit -A.

Die Option -f legt die Archivdatei fest. Der Archivname folgt direkt auf -f, wenn die Optionen mit Bindestrichen geschrieben werden:

tar -cf archiv.tar datei1.txt datei2.txt

Mehrere kurze Optionen lassen sich kombinieren. Daher sind beispielsweise -cvf und -czf üblich. Bei -f ist der nächste Wert der Archivname; die Reihenfolge sollte deshalb eindeutig bleiben. Die Schreibweise ohne führenden Bindestrich, etwa tar cvf archiv.tar verzeichnis/, wird von vielen tar-Versionen ebenfalls unterstützt, die Schreibweise mit Bindestrich ist jedoch leichter zu lesen.

Relative Pfade beziehen sich auf das aktuelle Arbeitsverzeichnis. Absolute Pfade beginnen mit / und verweisen unabhängig vom aktuellen Verzeichnis auf einen festen Ort. Für portable Archive sind relative Pfade meist besser geeignet.

Wichtige tar-Optionen

OptionFunktionTypischer Einsatz

-c – Erstellt ein neues Archiv – Dateien oder Verzeichnisse archivieren

-t – Listet den Archivinhalt auf – Vor dem Entpacken prüfen

-x – Extrahiert Inhalte – Dateien und Verzeichnisse wiederherstellen

-A – Hängt ein Tar-Archiv an ein anderes an – Unkomprimierte Archive zusammenführen

-f – Gibt die Archivdatei an – Name des zu lesenden oder schreibenden Archivs

-z – Verwendet gzip – .tar.gz oder .tgz erstellen und öffnen

-j – Verwendet bzip2 – .tar.bz2 erstellen und öffnen

-v – Zeigt verarbeitete Pfade ausführlich an – Fortschritt beim Archivieren oder Entpacken beobachten

-C – Wechselt für den Vorgang in ein Verzeichnis – Zielverzeichnis beim Entpacken festlegen

Archive erstellen

Mehrere Dateien archivieren

Mit -c erzeugst du ein neues Archiv. Die Option -f gibt dessen Namen an:

tar -cf archive.tar results.txt sample_text

Die beiden angegebenen Quellen werden in archive.tar zusammengefasst. Das ursprüngliche Verzeichnis und die Quelldateien bleiben dabei unverändert.

Ein ganzes Verzeichnis archivieren

tar -cvf projekt.tar projekt/

Das Verzeichnis projekt/ und sein gesamter Inhalt werden archiviert. Durch -v gibt tar jeden verarbeiteten Pfad aus. Das ist nützlich, um den Fortschritt zu sehen, kann bei sehr vielen Dateien aber eine große Ausgabe erzeugen.

Erfolg kontrollieren

Prüfe zunächst, ob die Archivdatei angelegt wurde:

ls -lh projekt.tar

Danach kannst du die enthaltenen Pfade anzeigen:

tar -tf projekt.tar

Die Option -t liest das Archiv, extrahiert aber keine Dateien.

Komprimierte Tar-Archive

tar selbst ist in erster Linie ein Archivierungsprogramm. Ein normales .tar-Archiv bündelt Daten, verkleinert sie aber nicht automatisch. Für die Kompression arbeitet tar mit Verfahren wie gzip oder bzip2 zusammen.

EndungArchivformatKompressionTypische Optionen

.tar – Tar-Archiv – Keine – -cf, -tf, -xf

.tar.gz – Tar-Archiv – gzip – -czf, -tzf, -xzf

.tgz – Tar-Archiv – gzip – -czf, -tzf, -xzf

.tar.bz2 – Tar-Archiv – bzip2 – -cjf, -tjf, -xjf

gzip verwenden

Mit -z wird gzip beim Erstellen oder Lesen aktiviert:

tar -czf archive.tar.gz results.txt sample.txt

Die Kurzform .tgz bezeichnet ebenfalls ein gzip-komprimiertes Tar-Archiv:

tar -czf compress.tgz results.txt sample.txt

bzip2 verwenden

Für bzip2 wird üblicherweise -j verwendet:

tar -cjf archive.tar.bz2 results.txt sample.txt

Die Kompressionsmethode muss beim Lesen zur tatsächlichen Datei passen. Die Endung ist eine wichtige Orientierung, ersetzt aber keine Prüfung des Dateiformats.

Archive untersuchen

Zeige den Inhalt möglichst vor dem Entpacken an. Für ein unkomprimiertes Archiv verwendest du:

tar -tf archive.tar

Für ein gzip-Archiv lautet der Befehl:

tar -tzf archive.tar.gz

Bei bzip2 verwendest du:

tar -tjf archive.tar.bz2

Die Ausgabe zeigt die im Archiv gespeicherten Pfade. So erkennst du, ob die Dateien direkt im aktuellen Verzeichnis oder innerhalb eines zusätzlichen Unterverzeichnisses landen werden.

Archive entpacken

In das aktuelle Verzeichnis extrahieren

Ein unkomprimiertes Archiv wird mit -x entpackt:

tar -xf archive.tar

Ein gzip-komprimiertes Archiv wird so extrahiert:

tar -xzf archive.tar.gz

Für bzip2 lautet der Befehl:

tar -xjf archive.tar.bz2

Ein bestimmtes Zielverzeichnis verwenden

Mit -C bestimmst du, in welches bereits vorhandene Verzeichnis tar extrahiert:

tar -xf archive.tar -C /tmp/wiederherstellung

Das Zielverzeichnis muss in der Regel vorher existieren:

mkdir -p /tmp/wiederherstellung
tar -xzf archive.tar.gz -C /tmp/wiederherstellung

Ein absoluter Zielpfad wie /tmp/wiederherstellung macht den Zielort eindeutig. Alternativ kannst du ein relatives Zielverzeichnis verwenden, etwa ./entpackt.

Nur einzelne Dateien extrahieren

Hinter dem Archivnamen kannst du einen oder mehrere im Archiv gespeicherte Pfade angeben:

tar -xf archive.tar results.txt

Nur der Eintrag results.txt wird extrahiert. Der angegebene Name muss zur Schreibweise im Archiv passen. Prüfe ihn daher vorher mit tar -tf. Bei einem Archiv, das beispielsweise projekt/results.txt enthält, musst du genau diesen Pfad angeben:

tar -xf projekt.tar projekt/results.txt

Tar-Archive zusammenführen

Die Option -A hängt die Einträge eines Tar-Archivs an ein anderes Tar-Archiv an. Sie ist für unkomprimierte Tar-Dateien gedacht:

tar -Af basis.tar nachtrag.tar

Danach enthält basis.tar zusätzlich die Einträge aus nachtrag.tar. Kontrolliere das Ergebnis:

tar -tf basis.tar

Sicherer Umgang mit Pfaden und Dateien

Dateinamen mit Leerzeichen

Setze Dateinamen mit Leerzeichen in Anführungszeichen oder maskiere die Leerzeichen mit einem Backslash:

tar -cf dokumente.tar "Bericht Januar.txt" "Notizen Projekt.txt"

Ohne Anführungszeichen würde die Shell einen Namen mit Leerzeichen in mehrere Argumente aufteilen.

Vor dem Entpacken prüfen

Archive aus nicht vertrauenswürdigen Quellen können unerwartete Pfade enthalten. Dazu gehören beispielsweise absolute Pfade oder Pfade mit ../, die auf Bereiche außerhalb des gewünschten Zielverzeichnisses zeigen können.

  1. Liste den Inhalt mit tar -tf, tar -tzf oder tar -tjf auf.
  2. Achte auf absolute Pfade und ungewöhnliche Verzeichnisnamen.
  3. Extrahiere zunächst in ein leeres, ausdrücklich gewähltes Verzeichnis.
  4. Prüfe die entpackten Dateien, bevor du sie in ein produktives Verzeichnis verschiebst.

Vermeide beim Erstellen unnötige absolute Quellpfade. Wechsle stattdessen in das passende übergeordnete Verzeichnis und archiviere mit relativen Pfaden:

cd /home/alex
 tar -czf projekt.tar projekt/

Dadurch enthält das Archiv projekt/ statt eines vollständigen, systemabhängigen Pfads wie /home/alex/projekt/.

Bestehende Dateien schützen

Beim Entpacken können Dateien im Zielverzeichnis ersetzt werden, wenn gleichnamige Einträge im Archiv vorhanden sind. Ein leeres Zielverzeichnis reduziert dieses Risiko:

mkdir -p /tmp/test-entpacken
tar -xzf projekt.tar.gz -C /tmp/test-entpacken

Wenn vorhandene Dateien keinesfalls überschrieben werden dürfen, prüfe die Schutzoptionen der installierten tar-Version mit man tar. Die verfügbaren Optionen unterscheiden sich je nach Implementierung und Version.

Typische Fehler und Lösungen

Archiv kann nicht geöffnet oder gefunden werden

Prüfe das aktuelle Arbeitsverzeichnis und den Dateinamen:

pwd
ls -lh
tar -tf archive.tar

Häufig liegt das Archiv in einem anderen Verzeichnis oder der Name nach -f wurde falsch geschrieben. Verwende bei Bedarf einen korrekten relativen oder absoluten Pfad.

Formatfehler bei einem .tar.gz-Archiv

Bei einem gzip-Archiv muss -z verwendet werden:

tar -tzf archive.tar.gz

Wenn dieser Test fehlschlägt, können die Endung und das tatsächliche Format nicht übereinstimmen oder das Archiv kann beschädigt beziehungsweise unvollständig sein. Prüfe außerdem, ob die Datei vollständig übertragen wurde.

Dateien landen an einem unerwarteten Ort

Der aktuelle Verzeichniswechsel und die im Archiv gespeicherten Pfade bestimmen den Zielort. Zeige zuerst den Inhalt an und nutze anschließend -C:

tar -tf archive.tar
tar -xf archive.tar -C /tmp/wiederherstellung

Zusammenführen mit -A funktioniert nicht

Prüfe, ob beide Dateien unkomprimierte Tar-Archive sind. Komprimierte Archive können nicht einfach als Tar-Daten aneinandergehängt werden. Verwende für -A beispielsweise basis.tar und nachtrag.tar ohne Kompressionsschicht.

Praktische Befehlsübersicht

tar -cf archive.tar DATEI...
tar -cvf archive.tar VERZEICHNIS/
tar -czf archive.tar.gz DATEI...
tar -cjf archive.tar.bz2 DATEI...
tar -tf archive.tar
tar -tzf archive.tar.gz
tar -xf archive.tar
tar -xzf archive.tar.gz
tar -xjf archive.tar.bz2
tar -xf archive.tar -C ZIELVERZEICHNIS
tar -xf archive.tar PFAD/IM/ARCHIV
tar -Af ZIELARCHIV.tar QUELLARCHIV.tar

Zusammenfassung

  • tar bündelt Dateien und Verzeichnisse, komprimiert ein normales .tar-Archiv aber nicht.
  • -c erstellt, -t listet auf und -x extrahiert.
  • -f bestimmt die Archivdatei; -v zeigt die verarbeiteten Pfade an.
  • -z steht für gzip, -j für bzip2.
  • Mit -C legst du beim Erstellen oder Entpacken ein Verzeichnis fest.
  • Prüfe fremde Archive vor dem Entpacken und verwende möglichst relative Pfade.

Für verwandte Archivierungsaufgaben eignet sich auch die Anleitung Dateien mit cpio archivieren. Grundlagen zum Arbeiten mit Dateien findest du unter Arbeiten mit Dateien und zum Umgang mit Verzeichnissen unter Arbeiten mit Verzeichnissen.