Wie man eine .tar.gz-Datei in Linux entpackt: Vollständiger Leitfaden mit erweiterten Tipps
Die Arbeit mit komprimierten Dateien ist eine tägliche Realität in jeder Linux-Umgebung. Zu den am häufigsten verwendeten Formaten gehört .tar.gz, ein zweistufiges Format, das tar zum Archivieren und gzip zur Komprimierung kombiniert. Egal ob Sie Softwarequellcode entpacken, Sicherungen wiederherstellen oder Konfigurationsdateien auf einem VPS Hosting Server bereitstellen – das effiziente und sichere Handhaben von .tar.gz Archiven ist eine grundlegende Linux-Fähigkeit.
Dieser Leitfaden behandelt alles vom grundlegenden Extraktionsbefehl bis zu fortgeschrittenen Techniken für große Archive, Sicherheitshärtung und Best Practices beim Scripting.
Was ist eine .tar.gz Datei?
Eine .tar.gz Datei – oft auch Tarball genannt – wird in zwei Schritten erstellt:
- tar bündelt mehrere Dateien und Verzeichnisse in einem einzigen Archiv (
.tar) - gzip komprimiert dieses Archiv, um seine Größe zu reduzieren (
.tar.gzoder.tgz)
Häufige Anwendungsfälle
- Verteilung von Softwarequellcode
- Verpackung von Konfigurationsdateien und Sicherungen
- Archivierung von Protokolldateien für die Langzeitspeicherung
- Übertragung großer Verzeichnisbäume zwischen Servern
Beispieldateiname: project-files.tar.gz
Grundlegender Extraktionsbefehl
Der Standardbefehl zum Extrahieren einer .tar.gz Datei ist:
tar -xvzf file.tar.gzFlag-Aufschlüsselung
| Flag | Bedeutung |
|---|---|
-x | Dateien aus dem Archiv extrahieren |
-v | Ausführlicher Modus – listet jede Datei beim Extrahieren auf |
-z | Dekomprimierung mit gzip |
-f | Gibt den Dateinamen an, mit dem gearbeitet werden soll |
Dieser einzelne Befehl bewältigt die große Mehrheit der alltäglichen Extraktionsaufgaben.
In ein bestimmtes Verzeichnis extrahieren
Standardmäßig extrahiert tar Dateien in das aktuelle Arbeitsverzeichnis. Um die Ausgabe an einen bestimmten Ort umzuleiten, verwenden Sie das Flag -C:
tar -xvzf file.tar.gz -C /path/to/target-directory> Hinweis: Das Zielverzeichnis muss bereits vorhanden sein. Erstellen Sie es zuerst mit mkdir -p /path/to/target-directory falls erforderlich.
Dieser Ansatz ist besonders nützlich in automatisierten Bereitstellungsskripten oder beim Organisieren mehrerer Archive auf einem Produktionsserver.
Archivinhalt vor dem Extrahieren anzeigen
Bevor Sie ein Archiv extrahieren – besonders eines aus einer unbekannten Quelle – ist es eine gute Praxis, seinen Inhalt zuerst zu überprüfen:
tar -tvzf file.tar.gzDas Flag -t listet alle Dateien und Verzeichnisse im Archiv auf, ohne etwas zu extrahieren. Dies hilft Ihnen:
- Die interne Verzeichnisstruktur zu verstehen
- Versehentliches Überschreiben vorhandener Dateien zu vermeiden
- Verdächtige oder unerwartete Pfade zu erkennen
Spezifische Dateien oder Verzeichnisse extrahieren
Sie müssen nicht immer ein gesamtes Archiv extrahieren. Um eine einzelne Datei oder einen Ordner zu extrahieren, geben Sie seinen Pfad genau so an, wie er im Archiv angezeigt wird:
tar -xvzf file.tar.gz path/to/specific-file.txtUm den genauen internen Pfad zu finden, führen Sie zuerst den Befehl --list aus:
tar -tvzf file.tar.gz | grep filename> Wichtig: Verwenden Sie den relativen Pfad, der in der Archivauflistung angezeigt wird, nicht einen absoluten Pfad, der mit / beginnt.
Sicherheitsüberlegungen beim Extrahieren nicht vertrauenswürdiger Archive
Das Extrahieren von .tar.gz Dateien aus unbekannten oder nicht vertrauenswürdigen Quellen kann ernsthafte Sicherheitsrisiken bergen, einschließlich Path-Traversal-Angriffen, bei denen bösartige Archive kritische Systemdateien überschreiben. Wenden Sie diese Schutzmaßnahmen an:
Verhindern Sie das Überschreiben von Verzeichnissen
tar --no-overwrite-dir -xvzf file.tar.gzEntfernen Sie führende Pfadkomponenten
Das Flag --strip-components entfernt führende Verzeichnisebenen aus extrahierten Pfaden, was Versuche der Injektion absoluter Pfade neutralisiert:
tar --strip-components=1 -xvzf untrusted-archive.tar.gzIn ein isoliertes Verzeichnis extrahieren
Extrahieren Sie nicht vertrauenswürdige Archive immer in ein dediziertes Sandbox-Verzeichnis und überprüfen Sie den Inhalt, bevor Sie Dateien an ihren endgültigen Bestimmungsort verschieben:
mkdir /tmp/sandbox && tar -xvzf untrusted-archive.tar.gz -C /tmp/sandboxDiese Praktiken sind besonders wichtig auf gemeinsam genutzter Infrastruktur. Wenn Sie mehrere Websites oder Clients verwalten, erwägen Sie die Verwendung von Shared Web Hosting Umgebungen mit strikten Berechtigungsgrenzen.
Effiziente Handhabung großer Archive
Bei Archiven mit mehreren Gigabyte kann die Standardextraktion wie eine Black Box wirken. Diese Techniken verbessern die Sichtbarkeit und Leistung.
Überwachen Sie den Fortschritt mit pv
pv (Pipe Viewer) zeigt eine Echtzeit-Fortschrittsleiste und Übertragungsgeschwindigkeit an:
pv file.tar.gz | tar xzvf -Installieren Sie pv falls noch nicht vorhanden:
# Debian/Ubuntu
sudo apt install pv
# CentOS/RHEL/AlmaLinux
sudo dnf install pvDeaktivieren Sie den ausführlichen Modus für schnellere Extraktion
Beim Extrahieren sehr großer Archive kann das Flag -v die Dinge verlangsamen, indem es Tausende von Dateinamen auf dem Terminal ausgibt. Lassen Sie es weg für bessere Leistung:
tar -xzf file.tar.gzVerwenden Sie parallele Dekomprimierung mit pigz
Für Multi-Core-Server ersetzt pigz gzip durch eine parallele Implementierung und kann die Dekomprimierungszeit dramatisch reduzieren:
tar -I pigz -xf file.tar.gzDekomprimieren Sie in zwei separaten Schritten
Manchmal benötigen Sie eine feinere Kontrolle – zum Beispiel bei der Integration in eine Pipeline oder beim Überprüfen der Zwischendatei .tar vor dem Entpacken. Sie können den Prozess in zwei Befehle aufteilen:
# Step 1: Decompress gzip to get a plain .tar archive
gunzip file.tar.gz
# Step 2: Extract the .tar archive
tar -xvf file.tarDieser Ansatz ist nützlich, wenn:
- Sie die rohe
.tarvor der Extraktion überprüfen möchten - Ihre Pipeline
.tarund.gzStufen separat verarbeitet - Sie die
.tarDatei an ein anderes Tool übergeben müssen
Erstellen Sie ein .tar.gz Archiv
Zu wissen, wie man Archive erstellt, ist genauso wichtig wie sie zu extrahieren. Die Syntax spiegelt die Extraktion wider, verwendet aber -c (erstellen) statt -x:
tar -czvf archive-name.tar.gz /path/to/directory/Schließen Sie spezifische Dateien oder Verzeichnisse aus
tar -czvf archive.tar.gz /path/to/directory/ --exclude='*.log' --exclude='node_modules'Dies ist wertvoll für die Erstellung sauberer Bereitstellungspakete oder Sicherungen ohne unnötige Ballast.
Automatisieren Sie .tar.gz Operationen in Skripten
Auf Produktionsservern – egal ob Sie einen Dedicated Server oder eine verwaltete VPS betreiben – spart die Automatisierung von Archivoperationen Zeit und reduziert menschliche Fehler.
Beispiel: Automatisiertes Sicherungsskript
#!/bin/bash
BACKUP_DIR="/var/backups"
SOURCE_DIR="/var/www/html"
DATE=$(date +%Y-%m-%d)
ARCHIVE="$BACKUP_DIR/website-backup-$DATE.tar.gz"
mkdir -p "$BACKUP_DIR"
tar -czf "$ARCHIVE" --exclude='*.tmp' "$SOURCE_DIR"
echo "Backup created: $ARCHIVE"Planen Sie dies mit einem Cron-Job für vollständig automatisierte tägliche Sicherungen:
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1Verwenden Sie GUI-Archive-Manager (Optional)
Wenn Sie in einer Linux-Desktop-Umgebung arbeiten, bieten grafische Tools eine Drag-and-Drop-Alternative:
| Desktop-Umgebung | Archive Manager |
|---|---|
| GNOME | File Roller |
| KDE Plasma | Ark |
| Xfce | Thunar Archive Plugin |
Diese Tools unterstützen .tar.gz nativ und sind für gelegentliche Verwendung geeignet.
