tar ist das Standard-Archivierungstool unter Linux. In Kombination mit Komprimierungstools wie gzip, bzip2 oder xz werden effiziente Backups und Archive erstellt.

tar Grundlagen

Archiv erstellen

# Verzeichnis archivieren
tar -cvf archiv.tar /pfad/zum/verzeichnis

# Mehrere Dateien
tar -cvf archiv.tar datei1.txt datei2.txt

# Mit Komprimierung (gzip)
tar -czvf archiv.tar.gz /pfad/zum/verzeichnis

# Mit bzip2
tar -cjvf archiv.tar.bz2 /pfad/zum/verzeichnis

# Mit xz
tar -cJvf archiv.tar.xz /pfad/zum/verzeichnis

Optionen

| Option | Bedeutung | |--------|-----------| | -c | Create (erstellen) | | -x | Extract (entpacken) | | -t | List (auflisten) | | -v | Verbose (ausführlich) | | -f | File (Dateiname) | | -z | gzip | | -j | bzip2 | | -J | xz | | -p | Berechtigungen erhalten |

Archiv entpacken

# tar-Archiv
tar -xvf archiv.tar

# gzip-komprimiert
tar -xzvf archiv.tar.gz

# bzip2-komprimiert
tar -xjvf archiv.tar.bz2

# xz-komprimiert
tar -xJvf archiv.tar.xz

# In Verzeichnis entpacken
tar -xzvf archiv.tar.gz -C /ziel/verzeichnis/

Archiv-Inhalt anzeigen

tar -tvf archiv.tar
tar -tzvf archiv.tar.gz

Einzelne Dateien

# Einzelne Datei hinzufügen
tar -rvf archiv.tar neue_datei.txt

# Einzelne Datei extrahieren
tar -xvf archiv.tar pfad/zur/datei.txt

Komprimierungstools

gzip

# Komprimieren
gzip datei.txt
# Ergebnis: datei.txt.gz (Original gelöscht)

# Original behalten
gzip -k datei.txt

# Dekomprimieren
gunzip datei.txt.gz
gzip -d datei.txt.gz

# Kompressionsgrad (1-9)
gzip -9 datei.txt  # Maximum

# Mehrere Dateien
gzip datei1.txt datei2.txt

# Rekursiv
gzip -r verzeichnis/

bzip2

# Komprimieren
bzip2 datei.txt
# Ergebnis: datei.txt.bz2

# Original behalten
bzip2 -k datei.txt

# Dekomprimieren
bunzip2 datei.txt.bz2
bzip2 -d datei.txt.bz2

# Maximum
bzip2 -9 datei.txt

xz

# Komprimieren (beste Kompression)
xz datei.txt
# Ergebnis: datei.txt.xz

# Original behalten
xz -k datei.txt

# Dekomprimieren
unxz datei.txt.xz
xz -d datei.txt.xz

# Threads nutzen
xz -T 0 datei.txt  # Alle CPUs

Vergleich

| Tool | Extension | Geschwindigkeit | Kompression | |------|-----------|-----------------|-------------| | gzip | .gz | Schnell | Gut | | bzip2 | .bz2 | Mittel | Besser | | xz | .xz | Langsam | Beste | | zstd | .zst | Sehr schnell | Sehr gut |

zstd (Modern)

# Installation
apt install zstd

# Komprimieren
zstd datei.txt
tar --zstd -cvf archiv.tar.zst verzeichnis/

# Dekomprimieren
unzstd datei.txt.zst
tar --zstd -xvf archiv.tar.zst

# Kompressionsgrad (1-19)
zstd -19 datei.txt

# Multi-threaded
zstd -T0 datei.txt

ZIP-Archive

# ZIP erstellen
zip archiv.zip datei1.txt datei2.txt

# Verzeichnis
zip -r archiv.zip verzeichnis/

# Entpacken
unzip archiv.zip

# In Verzeichnis
unzip archiv.zip -d /ziel/

# Inhalt anzeigen
unzip -l archiv.zip

# Mit Passwort
zip -e archiv.zip dateien*
unzip archiv.zip  # Fragt nach Passwort

Praktische Beispiele

Backup erstellen

#!/bin/bash
# backup.sh

DATE=$(date +%Y%m%d)
BACKUP_DIR="/backup"
SOURCE="/var/www"

tar -czvf $BACKUP_DIR/www-$DATE.tar.gz \
    --exclude='*.log' \
    --exclude='node_modules' \
    --exclude='.git' \
    $SOURCE

Inkrementelles Backup

# Erstes Backup (Full)
tar -cvzf backup-full.tar.gz \
    --listed-incremental=snapshot.snar \
    /data/

# Inkrementelles Backup
tar -cvzf backup-incr-$(date +%Y%m%d).tar.gz \
    --listed-incremental=snapshot.snar \
    /data/

Mit Ausschlüssen

# Bestimmte Dateien ausschließen
tar -czvf archiv.tar.gz \
    --exclude='*.log' \
    --exclude='*.tmp' \
    --exclude='.git' \
    /pfad/

# Aus Datei
tar -czvf archiv.tar.gz \
    --exclude-from=exclude.txt \
    /pfad/

# exclude.txt:
# *.log
# *.tmp
# .git
# node_modules

Verschlüsselt

# Mit OpenSSL
tar -cz verzeichnis/ | openssl enc -aes-256-cbc -salt -out archiv.tar.gz.enc

# Entschlüsseln
openssl enc -d -aes-256-cbc -in archiv.tar.gz.enc | tar -xz

# Mit GPG
tar -cz verzeichnis/ | gpg -c > archiv.tar.gz.gpg

# Entschlüsseln
gpg -d archiv.tar.gz.gpg | tar -xz

Remote-Backup

# Direkt auf Remote-Server
tar -czvf - /data/ | ssh user@server "cat > /backup/data.tar.gz"

# Von Remote-Server holen
ssh user@server "tar -cz /data/" > backup.tar.gz

# Mit rsync-ähnlichem Verhalten
tar -cz /data/ | ssh user@server "cd /backup && tar -xz"

Split-Archive

# Große Datei aufteilen
tar -czvf - /data/ | split -b 1G - backup.tar.gz.

# Ergebnis: backup.tar.gz.aa, backup.tar.gz.ab, ...

# Zusammenfügen und entpacken
cat backup.tar.gz.* | tar -xzvf -

Archiv-Integrität

# Prüfsumme erstellen
tar -czvf archiv.tar.gz /data/
md5sum archiv.tar.gz > archiv.tar.gz.md5

# Prüfen
md5sum -c archiv.tar.gz.md5

# In tar integriert
tar -tzvf archiv.tar.gz > /dev/null && echo "OK"

Schnelle Tipps

Progress anzeigen

# Mit pv
tar -cf - /data/ | pv | gzip > archiv.tar.gz

# Mit tar --totals
tar --totals -czvf archiv.tar.gz /data/

Berechtigungen

# Berechtigungen erhalten
tar -cpzvf archiv.tar.gz /data/

# Als Root entpacken
sudo tar -xpzvf archiv.tar.gz -C /

Timestamps

# Timestamps erhalten
tar --atime-preserve -cvf archiv.tar /data/

Zusammenfassung

| Befehl | Funktion | |--------|----------| | tar -cvf | Archiv erstellen | | tar -xvf | Archiv entpacken | | tar -tvf | Inhalt anzeigen | | gzip | Komprimieren | | gunzip | Dekomprimieren |

| Extension | Tool | tar-Option | |-----------|------|------------| | .tar.gz | gzip | -z | | .tar.bz2 | bzip2 | -j | | .tar.xz | xz | -J | | .tar.zst | zstd | --zstd |

| Aufgabe | Befehl | |---------|--------| | Backup | tar -czvf backup.tar.gz /data/ | | Restore | tar -xzvf backup.tar.gz -C /ziel/ | | Inhalt | tar -tzvf archiv.tar.gz | | Exclude | tar --exclude='*.log' ... |

Fazit

tar ist das Standard-Tool für Archivierung unter Linux. Die Kombination mit gzip bietet den besten Kompromiss aus Geschwindigkeit und Kompression. xz eignet sich für maximale Kompression bei Archive für lange Aufbewahrung. zstd ist die moderne Alternative mit exzellenter Geschwindigkeit. Für Backups sind Ausschlüsse und Berechtigungserhalt wichtig.