Erstellen und Entpacken von tar.gz-Archiven unter Linux

Linux 3 Min. Lesezeit

Unter Linux ist „tar.gz“ (oder „.tgz“) die gängigste Form zur Archivierung von Dateien und Ordnern: Das Programm „tar“ fasst die Dateien zusammen mit den Berechtigungen und Eigentümern in einem einzigen Archiv zusammen, während „gzip“ diese komprimiert. Auch bei Sicherungen, Umzügen und heruntergeladenen Programmen werden Sie am häufigsten damit konfrontiert. Die Handhabung von ZIP-Dateien wird im Artikel „Entpacken einer ZIP-Datei in einen bestimmten Ordner“ behandelt.

Erstellung eines Archivs

tar -czvf weboldal.tar.gz weboldal/

Die Bedeutung der Schaltflächen:

  • -c (create): Neues Archiv erstellen,
  • -z: gzip-Komprimierung,
  • -v (verbose): Gibt die verarbeiteten Dateien aus (kann weggelassen werden),
  • -f: Darauf folgt der Name des Archivs. Dieser muss immer am Ende der Befehlszeile stehen: Im Test hat der Befehl „tar -cfz w.tgz weboldal“ ein Archiv namens „z“ erstellt und „w.tgz“ als zu packende Datei betrachtet („Cannot stat: No such file or directory“).

Es können mehrere Dateien oder Ordner angegeben werden:

tar -czvf mentes.tar.gz public_html/ adatbazis.sql .htaccess

Ordner und Dateien ausschließen

tar -czvf weboldal.tar.gz --exclude='weboldal/wp-content/cache' --exclude='*.log' weboldal/

Das Datum im Dateinamen

Bei regelmäßigen Backups ist es hilfreich, wenn der Dateiname das Datum enthält:

tar -czf weboldal-$(date +%Y-%m-%d).tar.gz weboldal/

Archiv entpacken

# Kicsomagolás az aktuális könyvtárba
tar -xzvf weboldal.tar.gz

# Kicsomagolás egy megadott könyvtárba (a célkönyvtárnak léteznie kell)
mkdir -p /var/www/uj
tar -xzvf weboldal.tar.gz -C /var/www/uj

Wenn das nach „-C“ angegebene Verzeichnis nicht existiert, bricht „tar“ mit folgender Meldung ab: „tar: /var/www/uj: Cannot open: No such file or directory“.

Der Schalter -x (extract) steht für das Entpacken. Beim Entpacken werden gleichnamige Dateien im Zielverzeichnis ohne Rückfrage überschrieben.

Inhalt ohne Entpacken anzeigen

tar -tzvf weboldal.tar.gz

Der Schalter „-t“ (Liste) listet den Inhalt des Archivs auf. Vor dem Entpacken sollten Sie prüfen, ob das Archiv einen Ordner enthält oder direkt die Dateien; im letzteren Fall werden die Dateien im aktuellen Verzeichnis verstreut abgelegt.

Entpacken einer einzelnen Datei

Geben Sie den Pfad zur Datei genau so an, wie er vom Befehl „tar -tzf“ ausgegeben wird:

tar -xzvf weboldal.tar.gz weboldal/wp-config.php

Andere Komprimierungsformate

Die Art der Komprimierung wird durch den Schalter festgelegt:

Erweiterung Weiterleitung Merkmale
.tar.gz, .tgz -z schnell und überall verfügbar
.tar.bz2 -j Kleinere Datei, langsamer
.tar.xz -J Die kleinste Datei, die langsamste
.tar.zst --zstd schnell und mit guter Komprimierung; dazu wird das Programm „zstd“ benötigt
.tar (keine) ohne Komprimierung

Beim Entpacken erkennt das moderne „tar“ das Format automatisch, sodass der Komprimierungsschalter weggelassen werden kann:

tar -xvf archivum.tar.xz

tar ruft für die Komprimierung ein externes Programm auf. Auf dem AlmaLinux 10-Cloud-Image war zstd standardmäßig nicht installiert: Der Befehl „tar --zstd“ führte daher zu folgender Fehlermeldung: „zstd: command not found“. Bitte installieren Sie es (sudo dnf install zstd bzw. sudo apt install zstd); gzip und xz sind bereits vorhanden.

Komprimierung einer einzelnen Datei mit gzip

Wenn Sie nur eine Datei (beispielsweise eine Datenbanksicherung oder eine Protokolldatei) komprimieren möchten, benötigen Sie „tar“ nicht:

# Tömörítés: a fájl helyére adatbazis.sql.gz kerül
gzip adatbazis.sql

# Kicsomagolás
gunzip adatbazis.sql.gz

# Tömörítés úgy, hogy az eredeti is megmaradjon
gzip -k adatbazis.sql

Berechtigungen und Inhaber

Das tar-Archiv speichert die Berechtigungen und den Eigentümer der Dateien. Beim Entpacken wird der Eigentümer nur dann auf den Root-Benutzer zurückgesetzt; als normaler Benutzer gehen die entpackten Dateien in den Besitz des entpackenden Benutzers über. Im Test wurde eine Datei mit dem Eigentümer „root/root“ (wie vom Befehl „tar -tvzf“ angezeigt) beim Entpacken als normaler Benutzer in den Besitz des Benutzers übertragen. Sollte der Webserver nach dem Entpacken nicht auf die Dateien zugreifen können, überprüfen Sie bitte den Eigentümer und die Berechtigungen (siehe: Dateiberechtigungen (chmod, chown) unter Linux).

Wenn Sie einen absoluten Pfad angeben (z. B. tar -czf mentes.tar.gz /var/www), entfernt tar das führende /-Zeichen (und gibt dies auch aus: tar: Removing leading `/' from member names) und speichert die Dateien unter den Namen var/www/.... Beim Entpacken werden die Dateien daher im aktuellen Verzeichnis (oder an dem mit dem Schalter -C angegebenen Ort) erstellt und überschreiben nicht die Dateien an ihrem ursprünglichen Speicherort.

Zurück: Linux-Artikel (62)