# tar — Archive packen und entpacken

> Praxis-Guide zu tar — Archive erstellen und entpacken, mit gzip-, bzip2- und xz-Kompression, Backups, SSH-Transfer und gezieltem Extrahieren.

Source: https://www.jpkc.com/db/cheatsheets/archives/tar/

<!-- PROSE:intro -->
tar ist das Standardwerkzeug, um unter Linux und Unix ganze Verzeichnisbäume in eine einzige Archivdatei zu bündeln – samt Rechten, Zeitstempeln und Symlinks. Ursprünglich für Bandlaufwerke gedacht („tape archive"), ist es heute das Rückgrat fast jedes Backups und jeder Software-Distribution. tar komprimiert nicht selbst, sondern reicht den Datenstrom an gzip, bzip2 oder xz weiter – du steuerst das einfach über ein zusätzliches Flag. Dieser Guide zeigt dir die wichtigsten Befehle zum Packen, Entpacken, Durchsuchen und für fortgeschrittene Backup-Workflows.
<!-- PROSE:intro:end -->

## Archive erstellen

`tar -cf <archive.tar> <files>` — Erstellt ein unkomprimiertes tar-Archiv.

```bash
tar -cf backup.tar /home/user/docs/
```

`tar -czf <archive.tar.gz> <files>` — Erstellt ein gzip-komprimiertes Archiv.

```bash
tar -czf backup.tar.gz /home/user/docs/
```

`tar -cjf <archive.tar.bz2> <files>` — Erstellt ein bzip2-komprimiertes Archiv.

```bash
tar -cjf backup.tar.bz2 /home/user/docs/
```

`tar -cJf <archive.tar.xz> <files>` — Erstellt ein xz-komprimiertes Archiv (beste Kompression).

```bash
tar -cJf backup.tar.xz /home/user/docs/
```

`tar -cf <archive.tar> -C <directory> .` — Erstellt ein Archiv aus einem Verzeichnis, ohne den übergeordneten Pfad mit aufzunehmen.

```bash
tar -cf backup.tar -C /home/user/docs/ .
```

`tar -czf <archive.tar.gz> --exclude='<pattern>' <files>` — Erstellt ein Archiv und lässt Dateien aus, die auf ein Muster passen.

```bash
tar -czf backup.tar.gz --exclude='*.log' /home/user/docs/
```

## Archive entpacken

`tar -xf <archive.tar>` — Entpackt ein tar-Archiv in das aktuelle Verzeichnis.

```bash
tar -xf backup.tar
```

`tar -xzf <archive.tar.gz>` — Entpackt ein gzip-komprimiertes Archiv.

```bash
tar -xzf backup.tar.gz
```

`tar -xjf <archive.tar.bz2>` — Entpackt ein bzip2-komprimiertes Archiv.

```bash
tar -xjf backup.tar.bz2
```

`tar -xJf <archive.tar.xz>` — Entpackt ein xz-komprimiertes Archiv.

```bash
tar -xJf backup.tar.xz
```

`tar -xf <archive.tar> -C <directory>` — Entpackt in ein bestimmtes Verzeichnis.

```bash
tar -xf backup.tar -C /tmp/restore/
```

`tar -xf <archive.tar> <file>` — Entpackt nur eine bestimmte Datei aus dem Archiv.

```bash
tar -xf backup.tar home/user/docs/readme.txt
```

`tar -xf <archive.tar> --wildcards '*.txt'` — Entpackt nur Dateien, die auf ein Wildcard-Muster passen.

```bash
tar -xf backup.tar --wildcards '*.txt'
```

## Inhalt anzeigen

`tar -tf <archive.tar>` — Listet alle Dateien eines Archivs auf, ohne es zu entpacken.

```bash
tar -tf backup.tar
```

`tar -tzf <archive.tar.gz>` — Listet den Inhalt eines gzip-komprimierten Archivs auf.

```bash
tar -tzf backup.tar.gz
```

`tar -tvf <archive.tar>` — Listet den Inhalt mit detaillierten Dateiinfos auf (Rechte, Größe, Datum).

```bash
tar -tvf backup.tar
```

`tar -tf <archive.tar> | grep <pattern>` — Sucht nach einer bestimmten Datei im Archiv.

```bash
tar -tf backup.tar | grep config
```

## Anhängen & Aktualisieren

`tar -rf <archive.tar> <files>` — Hängt Dateien an ein bestehendes tar-Archiv an (nur unkomprimiert).

```bash
tar -rf backup.tar newfile.txt
```

`tar -uf <archive.tar> <files>` — Aktualisiert Dateien im Archiv nur, wenn sie neuer sind.

```bash
tar -uf backup.tar /home/user/docs/
```

`tar --delete -f <archive.tar> <file>` — Entfernt eine Datei aus dem Archiv (nur unkomprimiert).

```bash
tar --delete -f backup.tar oldfile.txt
```

## Fortgeschrittene Optionen

`tar -czf - <files> | ssh <host> "cat > backup.tar.gz"` — Erstellt ein komprimiertes Archiv und sendet es per SSH an einen entfernten Server.

```bash
tar -czf - /home/user/docs/ | ssh server "cat > backup.tar.gz"
```

`tar -czf <archive.tar.gz> --newer-mtime='<date>' <files>` — Archiviert nur Dateien, die nach einem bestimmten Datum geändert wurden.

```bash
tar -czf recent.tar.gz --newer-mtime='2025-01-01' /home/user/docs/
```

`tar -czf <archive.tar.gz> -T <filelist>` — Erstellt ein Archiv aus einer Dateiliste in einer Textdatei.

```bash
tar -czf backup.tar.gz -T files.txt
```

`tar -czf - <files> | split -b <size> - <prefix>` — Erstellt ein in Teile zerlegtes Archiv für große Backups.

```bash
tar -czf - /data/ | split -b 100M - backup_part_
```

`cat <prefix>* | tar -xzf -` — Entpackt ein in Teile zerlegtes Archiv.

```bash
cat backup_part_* | tar -xzf -
```

<!-- PROSE:outro -->
## Fazit

tar ist erstaunlich vielseitig: ein einziges Werkzeug für Backups, Software-Pakete und den Transport ganzer Verzeichnisbäume über das Netz. Merke dir die zwei Buchstaben-Paare `-c` (create) und `-x` (extract) plus den Kompressions-Schalter (`z` für gzip, `j` für bzip2, `J` für xz) – damit deckst du den Alltag ab. Beim Erstellen entfernt tar führende `/` aus absoluten Pfaden, sodass Archive standardmäßig relativ entpackt werden. Sei dennoch vorsichtig beim Auspacken fremder Archive: Prüfe den Inhalt vorab mit `-t`, da manipulierte Pfade (Path-Traversal über `../`) Dateien außerhalb des Zielverzeichnisses überschreiben könnten.

## Weiterführende Links

- [GNU tar – Handbuch](https://www.gnu.org/software/tar/manual/) – die offizielle, vollständige Referenz zu allen Optionen (englisch)
- [tar – Wikipedia](https://de.wikipedia.org/wiki/Tar_(Packprogramm)) – Hintergrund zum Dateiformat und seiner Geschichte
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [7z](https://www.jpkc.com/db/cheatsheets/archives/7z/) – Hochkompressions-Archivierer mit eigenem 7z-Format
- [gzip](https://www.jpkc.com/db/cheatsheets/archives/gzip/) – schnelle Stromkompression, oft mit tar kombiniert
- [zip](https://www.jpkc.com/db/cheatsheets/archives/zip/) – plattformübergreifendes Archivformat mit Kompression pro Datei

