Files
it-know-how/Linux/BASH Basics/tar.md
T

5.8 KiB

tar - Archive erstellen und Software installieren

Der tar-Befehl (tape archive) erstellt und entpackt Archive. Oft in Kombination mit Kompression (gzip, bzip2, xz).

Grundsyntax

tar [OPTIONEN] [ARCHIV] [DATEIEN...]

Archive erstellen

Einfaches Archiv (unkomprimiert)

tar -cf archiv.tar verzeichnis/
  • -c = create (erstellen)
  • -f = file (Dateiname)

Mit gzip-Kompression (.tar.gz)

tar -czf archiv.tar.gz verzeichnis/
  • -z = gzip

Mit bzip2-Kompression (.tar.bz2)

tar -cjf archiv.tar.bz2 verzeichnis/
  • -j = bzip2

Mit xz-Kompression (.tar.xz)

tar -cJf archiv.tar.xz verzeichnis/
  • -J = xz (beste Kompression)

Mit Fortschrittsanzeige

tar -czf archiv.tar.gz verzeichnis/ -v
  • -v = verbose (Details anzeigen)

Archive entpacken

Automatische Kompressionserkennung

tar -xf archiv.tar.gz
  • -x = extract (entpacken)

In bestimmtes Verzeichnis

tar -xf archiv.tar.gz -C /ziel/verzeichnis

Mit Fortschrittsanzeige

tar -xvf archiv.tar.gz

Archiv-Inhalt anzeigen

tar -tf archiv.tar.gz
  • -t = list (auflisten)

Mit Details:

tar -tvf archiv.tar.gz

Praktische Beispiele

Backup erstellen

tar -czf backup-$(date +%Y%m%d).tar.gz /home/user/dokumente

Bestimmte Dateien ausschließen

tar -czf archiv.tar.gz --exclude='*.tmp' --exclude='.git' verzeichnis/

Nur bestimmte Dateien hinzufügen

tar -czf logs.tar.gz /var/log/*.log

Zu bestehendem Archiv hinzufügen

tar -rf archiv.tar neue_datei.txt

Hinweis: Funktioniert nur bei unkomprimierten Archiven!

Einzelne Datei aus Archiv extrahieren

tar -xzf archiv.tar.gz pfad/zur/datei.txt

Archiv auf andere Maschine übertragen

tar -czf - verzeichnis/ | ssh user@server "cd /ziel && tar -xzf -"

Dateirechte bewahren

tar -czpf archiv.tar.gz verzeichnis/
  • -p = preserve permissions

Als Root entpacken und Eigentümer bewahren:

sudo tar -xpf archiv.tar.gz

Inkrementelles Backup

tar -czf backup-full.tar.gz -g snapshot.file verzeichnis/
tar -czf backup-incr.tar.gz -g snapshot.file verzeichnis/
  • -g = incremental (inkrementell)

Geschwindigkeit vs. Kompression

Format Geschwindigkeit Kompression Empfehlung
.tar Sehr schnell Keine Lokale Kopien
.tar.gz Schnell Gut Standard
.tar.bz2 Mittel Besser Archivierung
.tar.xz Langsam Beste Langzeit-Archiv

Fehler vermeiden

Führenden Slash entfernen

tar -czf archiv.tar.gz --absolute-names /home/user/dokumente  # Mit /
tar -czf archiv.tar.gz -C /home/user dokumente                # Ohne /

Zweite Variante ist sicherer beim Entpacken.

Große Archive

Prüfe Speicherplatz vorher:

du -sh verzeichnis/
df -h .

Testen vor Löschen

tar -czf backup.tar.gz daten/
tar -tzf backup.tar.gz | head  # Inhalt prüfen
# Erst dann löschen:
rm -rf daten/

Mit Verschlüsselung

# Erstellen und verschlüsseln
tar -czf - verzeichnis/ | gpg -c > archiv.tar.gz.gpg

# Entschlüsseln und entpacken
gpg -d archiv.tar.gz.gpg | tar -xzf -

Software aus tar.gz installieren

Eine .tar.gz-Datei kann verschiedene Inhalte haben:

  1. Quellcode → muss kompiliert werden
  2. Kompilierte Binaries → nur entpacken und ausführen
  3. Paket für Distribution → mit Paketmanager installieren

Archiv entpacken und untersuchen

tar -xvzf paket.tar.gz
cd paket
ls -la

Prüfe immer README, INSTALL oder INSTALL.txt:

cat README
cat INSTALL

Installation aus Quellcode

Voraussetzungen installieren:

Debian/Ubuntu:

sudo apt install build-essential

Fedora:

sudo dnf groupinstall "Development Tools"

Standard-Kompilierung (autotools):

./configure
make
sudo make install

CMake-basierte Projekte:

mkdir build
cd build
cmake ..
make
sudo make install

Installation von fertigen Binaries

Wenn das Archiv fertige Programme enthält:

chmod +x programmname
./programmname

Permanent installieren nach /usr/local/bin:

sudo cp programmname /usr/local/bin/

Oder nach ~/.local/bin (ohne sudo):

mkdir -p ~/.local/bin
cp programmname ~/.local/bin/

Stelle sicher, dass ~/.local/bin im PATH ist:

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

Deinstallation

Bei selbst kompilierten Programmen:

cd paket/
sudo make uninstall

Falls make uninstall nicht verfügbar ist:

Mit checkinstall (empfohlen):

sudo apt install checkinstall  # Debian/Ubuntu

# Statt "sudo make install"
sudo checkinstall

# Später deinstallieren wie normales Paket
sudo apt remove paketname

Manuell:

# Liste der installierten Dateien erstellen
sudo make install > install.log 2>&1

# Zum Deinstallieren Dateien aus log löschen

Beispiel-Workflow

# 1. Entpacken
tar -xzf programm-1.0.tar.gz
cd programm-1.0

# 2. Dokumentation lesen
cat README
cat INSTALL

# 3. Konfigurieren und kompilieren
./configure --prefix=/usr/local
make

# 4. Optional: Tests ausführen
make check

# 5. Installieren
sudo make install

# 6. Testen
which programmname
programmname --version

Typische Verzeichnisse

Nach make install werden Dateien meist hier installiert:

  • /usr/local/bin/ - Programme
  • /usr/local/lib/ - Bibliotheken
  • /usr/local/share/ - Daten/Dokumentation
  • /usr/local/etc/ - Konfiguration

Siehe auch

  • rsync - Alternative für Backups
  • find - Dateien für Archivierung finden
  • grep - Archiv-Inhalte durchsuchen
  • Dateiberechtigungen - Rechte in Archiven bewahren
  • ls - Archive anzeigen