linux-cli-shell cli file-management backup tar compression

Tar Mastery: Archiving & Compression (Artikel 277)

Beherrschung des tar-Werkzeugs unter Linux. Erfahren Sie alles über das Erstellen von Archiven, die Wahl der richtigen Kompression (Gzip, XZ, Zstd) und die effiziente Datensicherung.

# Tar Mastery: Mehr als nur ‘Zusammenpacken’

TL;DR / Management Summary Der Befehl tar (Tape Archiver) ist das Rückgrat des Linux-Datei-Managements. Ob für Software-Distributionen, System-Backups oder den Dateitransfer: tar bündelt tausende Dateien in einen einzelnen Stream. Ein Senior Admin muss nicht nur die Flags im Schlaf beherrschen, sondern auch wissen, wann er Gzip (schnell), XZ (klein) oder Zstd (modern & effizient) zur Kompression wählt.


# 1. Einführung & Architektur

Archivierung vs. Kompression.

  • Archivierung: Fasst viele Dateien zu einer Datei zusammen, behält Berechtigungen und Pfade bei.
  • Kompression: Reduziert die Dateigröße durch mathematische Algorithmen.

# Der Tar-Workflow (Mermaid)

graph TD
    A[Multiple Files / Folders] --> B[tar -c: Create Archive]
    B --> C[Tarball: data.tar]
    C --> D{Compression?}
    D -->|gzip -z| E[data.tar.gz]
    D -->|xz -J| F[data.tar.xz]
    D -->|zstd --zstd| G[data.tar.zst]
    subgraph "Efficiency"
        E --- E1[Fast / Low Ratio]
        F --- F1[Slow / High Ratio]
        G --- G1[Very Fast / High Ratio]
    end

# 2. Die wichtigsten Befehle

Das tägliche Handwerkszeug.

# Archiv erstellen (-c)

# -c: create, -v: verbose, -f: file, -z: gzip
tar -cvzf backup.tar.gz /etc/nginx

# Archiv entpacken (-x)

# -x: extract, -C: Zielverzeichnis
sudo tar -xvzf backup.tar.gz -C /mnt/restore

# Inhalt auflisten (-t)

Wichtig: Schauen Sie immer erst ins Archiv, bevor Sie es entpacken!

tar -tvf backup.tar.gz

# 3. Fortgeschrittene Techniken

Präzision beim Packen.

# Verzeichnisse ausschließen

# Sichert /var/www, aber ohne den Cache-Ordner
tar -cvzf site_backup.tar.gz --exclude='/var/www/html/cache' /var/www/html

# Inkrementelle Backups (Snapshot-File)

Tar kann sich merken, welche Dateien bereits gesichert wurden.

tar -cvzf backup_inc.tar.gz -g /var/log/tar-snapshot.snar /data

# 4. Day-2 Operations: Moderne Kompression (Zstd)

Die Zukunft unter Arch & Fedora.

Zstandard (Zstd) bietet ein ungeschlagenes Verhältnis zwischen Geschwindigkeit und Kompression.

# Erstellen eines Zst-Archivs
tar --zstd -cf archive.tar.zst /my/big/data

# 5. Troubleshooting & “War Stories”

Wenn der Pfad die Falle ist.

# Story 1: “Der absolute Pfad Albtraum”

Symptom: Ein Admin entpackt ein Backup und überschreibt dabei versehentlich sein Live-System. Ursache: Das Archiv wurde mit absoluten Pfaden erstellt (tar -cf backup.tar /etc). Beim Entpacken landet alles wieder in /etc, egal in welchem Ordner man sich befindet. Lösung: Nutzen Sie immer relative Pfade (cd / && tar -cf backup.tar etc) oder nutzen Sie das Flag -P (absolute names) nur, wenn Sie genau wissen, was Sie tun. Moderne Tar-Versionen entfernen das führende / standardmäßig.

# Story 2: “Der hängende Mount (NFS)”

Symptom: tar bleibt mitten im Archivieren hängen und verbraucht 100% CPU. Ursache: Das Archiv liegt auf einem NFS-Share, der die Verbindung verloren hat. Tar wartet auf den I/O-Flush. Lösung: Nutzen Sie das Flag --checkpoint=1000 --checkpoint-action=echo="%u" um zu sehen, wie weit Tar ist, und nutzen Sie lokale Puffer (SSD), bevor Sie Daten auf langsame Netzlaufwerke schieben.


# 6. Fazit & Empfehlung

  • Wahl: Nutzen Sie Zstd für tägliche Backups (Standard in Arch).
  • Wahl: Nutzen Sie XZ für Software-Releases, die selten geladen werden, aber minimal klein sein müssen.
  • Best Practice: Nutzen Sie immer -atvf, um den Inhalt eines Archivs zu prüfen, bevor Sie es entpacken. Es verhindert “Zip-Bombs” oder das Zumüllen des aktuellen Verzeichnisses.

# Anhang: Cheatsheet

Aufgabe Flag Beispiel
Erstellen -c tar -cf ...
Entpacken -x tar -xf ...
Auflisten -t tar -tf ...
Gzip -z .tar.gz
Bzip2 -j .tar.bz2
XZ -J .tar.xz
Zstd --zstd .tar.zst
Verbose -v Zeigt Fortschritt
Zielordner -C tar -xf ... -C /target
Permission behalten -p Behält chmod/chown
Dateiliste aus File -T tar -cf backup.tar -T list.txt