Tutoriel Linux

Tar unter Linux: Erstellen und Extrahieren eines Archivs ohne Pfadverlust

Débutant6 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Sie haben ein Archiv abgerufen Teer Oder tar.gzSie möchten die Datei ordnungsgemäß öffnen oder einen Ordner vor dem Verschieben packen. Der Befehl scheint einfach, bis das Archiv versehentlich eine ganze Verzeichnisstruktur am falschen Ort wiederherstellt oder eine Datei überschreibt, die Sie behalten wollten.

Ich rate Ihnen zur Behandlung Teer Dieser Leitfaden zeigt Ihnen, wie Sie ein Archiv erstellen, dessen Inhalt auflisten, es in einen ausgewählten Ordner extrahieren und das Ergebnis überprüfen, bevor Sie die Produktionsdateien bearbeiten.

Tux organisiert ein Linux-Tar-Archiv mit Ordnern und abstrakten Pfaden.
Bei tar sind der Zielordner und die gespeicherten Pfade genauso wichtig wie der Befehl selbst.

Tar wird zur Archivierung verwendet, nicht unbedingt zur Komprimierung.

Der wichtigste Punkt, den man beachten sollte: tar gruppiert Dateien und behält deren Pfade beiDie Komprimierung erfolgt oft zusätzlich mit gzip, xz oder bzip2. Deshalb findet man Dateien in .Teer, .tar.gz, .tgz, .tar.xz Oder .tar.bz2.

Bevor Sie ein unbekanntes Archiv extrahieren, führen Sie nicht direkt einen beliebigen Befehl in Ihrem persönlichen Ordner oder in /var/wwwListen Sie den Inhalt auf. Sie werden sehen, ob er einen leeren Stammordner, mehrere einfache Dateien oder längere Pfade als erwartet enthält.

tar -tf backup.tar

tar -tzf backup.tar.gz

tar -tJf backup.tar.xz

DER T Die Liste enthält den Inhalt. F bezeichnet die Archivdatei. Die Optionen z Und J Sie bezeichnen jeweils gzip und xz.

Erstelle ein sauberes Tar-Archiv

Um ein unkomprimiertes Archiv eines Ordners zu erstellen, navigieren Sie zunächst zum richtigen Verzeichnis. Dies ist wichtig, weil tar speichert die Pfade, die Sie ihm angeben..

cd /home/nathan/projets

tar -cf site.tar site

Dieser Befehl erstellt site.tar mit der Datei Website darin enthalten. Wenn Sie es später extrahieren, erhalten Sie einen Ordner. Website/, nicht etwa eine Verstreuung von Dateien im aktuellen Verzeichnis.

Um ein gzip-komprimiertes Archiv zu erstellen, fügen Sie Folgendes hinzu: z :

tar -czf site.tar.gz site

Für xz, das oft kompakter, aber langsamer ist, verwenden Sie J :

tar -cJf site.tar.xz site

Auf einem Server bevorzuge ich manchmal ein einfaches gzip-Archiv. Es lässt sich schnell erstellen, ist überall lesbar und mehr als ausreichend, um einen Konfigurationsordner zu verschieben oder eine einmalige Sicherung zu erstellen.

Vermeiden Sie absolute Pfade in einem Archiv

Eine schlechte Angewohnheit ist es, einen absoluten Weg aufzuzeichnen, ohne darüber nachzudenken:

tar -czf site.tar.gz /var/www/site

Teer weiß normalerweise, wie man das entfernt / Anfangs warnt Sie das zwar, aber es ist keine optimale Grundlage für eine reibungslose Übertragung. Außerdem riskieren Sie, nicht genau zu wissen, wo die Dateien nach dem Entpacken landen.

Ich benutze es lieber -C um tar klar mitzuteilen, wo es sich vor dem Einlesen der Dateien positionieren soll:

tar -czf /tmp/site.tar.gz -C /var/www Seite

Hier enthält das Archiv Website/, nicht var/www/site/Es ist besser lesbar, portabler und lässt sich viel einfacher auf einen anderen Rechner übertragen.

Entpacken Sie das Archiv in den richtigen Ordner.

Um ein Archiv zu extrahieren .Teer im aktuellen Ordner:

tar -xf site.tar

Für ein gzip-Archiv:

tar -xzf site.tar.gz

In der Praxis empfehle ich jedoch oft, einen leeren Ordner vorzubereiten und die Dateien dorthin zu extrahieren. So sieht man sofort, was das Archiv enthält, ohne das aktuelle Verzeichnis zu überladen.

mkdir -p /tmp/test-extraction

tar -xzf site.tar.gz -C /tmp/test-extraction

find /tmp/test-extraction -maxdepth 2 -type f | head

Diese Methode vermeidet viele unangenehme Überraschungen, insbesondere bei Archiven, die von jemand anderem heruntergeladen oder gesendet wurden.

Prüfen Sie, was vor der Extraktion zerkleinert wird.

Tar kann vorhandene Dateien ersetzen, wenn die Pfade übereinstimmen. Auf einem Testrechner ist das kein Problem. In einem Anwendungsordner kann es jedoch schnell zu einem echten Ärgernis werden.

Bevor Sie die Dateien in einen Ordner extrahieren, der bereits Dateien enthält, listen Sie das Archiv auf und vergleichen Sie es mit dem Zielordner:

tar -tzf site.tar.gz | head

ls -la /var/www/site

Wenn Sie testen möchten, ohne Dateien zu vermischen, verwenden Sie weiterhin einen temporären Ordner:

rm -rf /tmp/test-extraction
mkdir -p /tmp/test-extraction

tar -xzf site.tar.gz -C /tmp/test-extraction

diff -qr /tmp/test-extraction/site /var/www/site

DER diff -qr Es ersetzt zwar keine echte Datensicherungsstrategie, vermittelt aber bereits einen guten Überblick über die verschiedenen Dateien.

Extrahieren, ohne den gesamten ersten Ordner neu zu erstellen

Manche Projekte verfügen über einen Stammordner des Typs app-1.4.2/Wenn Sie den Inhalt nur an einem bestimmten Zielort abrufen möchten, --strip-components=1 kann nützlich sein.

mkdir -p /tmp/app

tar -xzf app-1.4.2.tar.gz -C /tmp/app --strip-components=1

Warnung: Verwenden Sie diese Option nicht, ohne vorher das Archiv aufzulisten. Enthält das Archiv nicht die erwartete Ordnerebene, erhalten Sie möglicherweise ein anderes Ergebnis als beabsichtigt.

Eine Datei aus einem Archiv ausschließen

Beim Sichern eines Anwendungsordners möchten Sie nicht immer Caches, große Protokolldateien oder regenerierbare Abhängigkeiten mitsichern. Die Option --ausschließen ermöglicht es, das Archiv sauber zu halten.

tar -czf site.tar.gz --exclude='site/cache' --exclude='site/logs' site

Wenn Sie ein ordnungsgemäßes Backup erstellen, ersetzen Sie nicht eine kontrollierte rsync-Synchronisierung Durch das Erstellen eines manuellen Archivs. `tar` eignet sich gut zum Verpacken, Transportieren oder Einfrieren eines Ordners. Für regelmäßige Backups sollten Sie außerdem die Rotation, Wiederherstellungstests und separate Speicherung in Betracht ziehen.

Tar.gz-Datei zur Installation: Archiv und Programm nicht verwechseln.

Eine Datei .tar.gz Es kann Software enthalten, aber das bedeutet nicht, dass sie immer mit demselben Befehl installiert wird. Manchmal enthält es eine ausführbare Binärdatei, manchmal ein Skript, manchmal Quellcode zum Kompilieren.

Wenn Ihr Ziel tatsächlich darin besteht, heruntergeladene Software zu installieren als tar.gzBeginnen Sie damit, den Inhalt der Datei zu lesen. README oder der Dokumentation des Herausgebers. Ich habe diesen Fall im Leitfaden gesondert beschrieben. Installation einer tar.gz-Datei unter Linux ohne Ausführung zufälliger Befehle.

Vor der Wiederherstellung des Archivs

Bevor Sie ein Archiv verschieben oder wiederherstellen, sollten Sie mindestens die folgenden Punkte prüfen:

  • den genauen Inhalt mit tar -tf, tar -tzf Oder tar -tJf ;
  • den Zielordner mit pwd Und ls -la ;
  • eine Testextraktion in /tmp wenn das Archiv aus einer externen Quelle stammt;
  • die Rechte und Eigentümer nach der Extraktion mit ls -l ;
  • Die mit geänderten Dateien diff -qr wenn Sie einen bestehenden Ordner überschreiben.

Falls Sie die extrahierten Dateien anschließend umbenennen oder verschieben müssen, gehen Sie dabei ordnungsgemäß vor. der mv-BefehlNicht durch Herumprobieren beim Entpacken in den falschen Ordner. Ein gut vorbereitetes TAR-Archiv sollte Ihnen Zeit sparen und Sie nicht mit einer Verzeichnisstruktur zurücklassen, die Sie manuell korrigieren müssen.

Um mehr zu erfahren, können Sie auch die folgende Website konsultieren: GNU tar-Handbuch und die Seite tar(1) von man7.orgSie sind weniger leicht verständlich als ein praktischer Leitfaden, aber sehr nützlich, sobald man mit erweiterten Optionen arbeitet.

sudo apt update && sudo apt upgrade