tar.gz erstellen und entpacken: Dateien, Dotfiles und Rechte sauber sichern

Eine tar.gz Datei erstellen gehört zu diesen Linux-Basics, die man nicht jeden Tag bewusst nutzt, aber genau dann braucht, wenn es schnell gehen soll. Ob Backup, Umzug auf einen anderen Server oder einfach ein sauber gepacktes Verzeichnis: Mit tar und gzip bekommst du Dateien platzsparend in ein Archiv und kannst sie später genauso sauber wieder entpacken.

Ich nutze tar.gz gerne für kleine Server-Backups, Konfigurationsordner oder Projektverzeichnisse. Es ist schnell, auf fast jedem Linux-System vorhanden und macht genau das, was es soll. Kein buntes Fenster, keine Zauberei, nur ein Werkzeug, welches schon länger zuverlässig arbeitet als manche Admin-Kaffeetasse im Schrank steht.

📦 Was ist tar.gz eigentlich?

Ein .tar.gz Archiv besteht im Grunde aus zwei Dingen:

  • tar fasst Dateien und Verzeichnisse zu einem Archiv zusammen.
  • gzip komprimiert dieses Archiv anschließend.

Das Ergebnis ist eine einzelne Datei wie backup.tar.gz. Darin können einzelne Dateien, ganze Ordner, versteckte Dateien, Rechte, Besitzerinformationen und bei Bedarf sogar ACLs oder Extended Attributes stecken. Genau deshalb ist das Format im Server-Alltag so praktisch.

Die wichtigsten Optionen kurz erklärt

Bei tar stolpert man am Anfang gerne über die Buchstaben. Dabei sind die wichtigsten Optionen recht logisch:

  • c erstellt ein neues Archiv.
  • x entpackt ein Archiv.
  • t zeigt den Inhalt eines Archivs an.
  • z nutzt gzip für die Komprimierung.
  • v zeigt die verarbeiteten Dateien an.
  • f sagt tar, dass danach der Dateiname des Archivs folgt.
  • C wechselt vor dem Packen oder Entpacken in ein bestimmtes Verzeichnis.

🛠️ tar.gz Datei erstellen

Der Klassiker sieht so aus:

tar -czvf archiv.tar.gz datei1.txt datei2.txt

Damit erstellst du ein gzip-komprimiertes tar-Archiv mit den beiden Dateien. Wenn du keine Dateiliste sehen möchtest, lässt du das v einfach weg:

tar -czf archiv.tar.gz datei1.txt datei2.txt

Für Scripte lasse ich v meistens weg, weil die Ausgabe sonst schnell zum halben Roman wird. Beim manuellen Arbeiten ist es aber ganz nett zu sehen, was gerade passiert.

📁 Verzeichnisse mit tar.gz packen

Ein komplettes Verzeichnis packst du genauso einfach:

tar -czvf projekt.tar.gz /home/patrick/projekt

Das funktioniert, hat aber einen kleinen Haken: Im Archiv landet dann auch der Pfad home/patrick/projekt. Das ist nicht falsch, aber beim Entpacken manchmal unpraktisch.

Schöner ist oft diese Variante mit -C:

tar -czvf projekt.tar.gz -C /home/patrick projekt

Damit wechselt tar zuerst nach /home/patrick und packt von dort aus den Ordner projekt. Das Archiv enthält dann sauber den Ordner projekt, aber nicht den kompletten absoluten Pfad.

🙈 Dotfiles wirklich mitnehmen

Jetzt kommt ein Punkt, der gerne übersehen wird: Dotfiles. Also Dateien wie .env, .htaccess, .gitignore oder ganze Ordner wie .config.

Wenn du ein Verzeichnis direkt packst, nimmt tar die Dotfiles darin automatisch mit:

tar -czvf projekt.tar.gz projekt

Problematisch wird es, wenn du im Ordner stehst und mit einem Sternchen arbeitest:

tar -czvf backup.tar.gz *

Das * kommt von der Shell und überspringt versteckte Dateien standardmäßig. Genau da fehlen dann plötzlich .env oder .htaccess. Klassiker. Und natürlich merkt man es erst beim Restore, weil das Universum Humor hat.

Besser ist diese Variante:

tar -czvf ../backup.tar.gz .

Der Punkt steht für das aktuelle Verzeichnis inklusive Dotfiles. Alternativ kannst du wieder mit -C arbeiten:

tar -czvf backup.tar.gz -C /home/patrick/projekt .

So bekommst du den Inhalt des Projektordners inklusive versteckter Dateien ins Archiv, ohne den kompletten Pfad mitzuschleppen.

🔐 Dateiberechtigungen erhalten

Normale Unix-Rechte wie 755, 644 oder ausführbare Bits speichert tar grundsätzlich im Archiv. Beim Entpacken kommt es aber darauf an, mit welchem Benutzer du entpackst und ob du Besitzerinformationen wiederherstellen darfst.

Für einfache Verzeichnisse reicht meistens:

tar -czvf backup.tar.gz -C /var/www html

Wenn du aber ein echtes Server-Backup erstellen möchtest, bei dem Besitzer, Gruppen, ACLs und Extended Attributes wichtig sind, würde ich es so machen:

sudo tar --acls --xattrs --numeric-owner -czvf backup.tar.gz -C /var/www html

--numeric-owner speichert Benutzer und Gruppen numerisch. Das ist bei Umzügen zwischen Servern oft sinnvoller als Namen, weil ein Benutzername auf dem Zielsystem auch mal zu einer anderen ID gehören kann.

Wichtig: Besitzer und Gruppen kannst du beim Entpacken in der Regel nur als root sauber wiederherstellen. Als normaler Benutzer bekommst du zwar Dateien zurück, aber nicht zwingend die originalen Eigentümer.

📂 tar.gz entpacken

Ein Archiv entpackst du mit x statt c:

tar -xzvf backup.tar.gz

Möchtest du in ein bestimmtes Zielverzeichnis entpacken, nutzt du wieder -C:

mkdir -p /tmp/restore
tar -xzvf backup.tar.gz -C /tmp/restore

Und wenn du Rechte, Besitzer, ACLs und Extended Attributes möglichst vollständig wiederherstellen willst:

sudo tar --same-owner --same-permissions --acls --xattrs -xzvf backup.tar.gz -C /tmp/restore

Das ist vor allem bei Webservern, Docker-Volumes, Maildaten, Home-Verzeichnissen oder anderen sensibleren Daten interessant. Kurz gesagt: überall dort, wo Rechte nicht nur Deko sind.

🔎 Archiv prüfen, bevor du es entpackst

Bevor du ein fremdes oder altes Archiv irgendwo blind entpackst, schau dir den Inhalt an:

tar -tzvf backup.tar.gz

So siehst du, welche Dateien enthalten sind und ob das Archiv mit absoluten Pfaden, einem Unterordner oder nur mit losem Inhalt arbeitet. Gerade bei Backups ist dieser kleine Kontrollblick Gold wert.

🧾 Meine Kurzfassung für den Alltag

Wenn ich mir nur drei Befehle merken müsste, wären es diese hier:

tar -czvf backup.tar.gz -C /pfad/zum verzeichnis
tar -tzvf backup.tar.gz
tar -xzvf backup.tar.gz -C /ziel/verzeichnis

Der erste Befehl packt, der zweite prüft, der dritte entpackt. Mehr braucht man erstaunlich oft nicht. Und wenn Dotfiles oder Rechte wichtig sind, nimmst du die oben gezeigten Varianten mit Punkt, --numeric-owner, --acls und --xattrs.

🧩 Fazit

tar.gz ist kein spektakuläres Tool, aber genau das macht es so gut. Es ist schnell, zuverlässig und auf Linux-Servern praktisch überall verfügbar. Wenn du Verzeichnisse direkt packst oder mit -C sauber arbeitest, nimmst du Dotfiles zuverlässig mit. Und wenn Berechtigungen wichtig sind, solltest du beim Erstellen und Entpacken bewusst auf Besitzer, ACLs und Extended Attributes achten.

Mein persönlicher Tipp: Ein Backup ist erst dann ein Backup, wenn du es mindestens einmal testweise entpackt hast. Alles andere ist eher eine optimistische Datei mit schöner Endung.

👥 Techniverse Community

Lust auf Austausch rund um Matrix, Selfhosting und andere smarte IT-Lösungen?
In der Techniverse Community triffst du Gleichgesinnte, kannst Fragen stellen oder einfach nerdigen Talk genießen. 🚀

👉 Jetzt der Gruppe auf Matrix beitreten
~ Direkte Raumadresse: #community:techniverse.net

👉 Für lockere Gespräche abseits der Kernthemen komm in den Talkraum
~ Direkte Raumadresse: #talk:techniverse.net

Wir freuen uns, wenn du dabei bist!

Vielen Dank fürs Teilen!