So extrahieren Sie Dateien aus einer .tar.gz- oder .tar.bz2-Datei unter Linux

Tar-Dateien sind komprimierte Archive. Sie werden ihnen häufig begegnen, wenn Sie eine Linux-Distribution wie Ubuntu verwenden oder sogar das Terminal unter macOS verwenden. So extrahieren – oder enttarnen – Sie den Inhalt einer Tar-Datei, auch bekannt als Tarball.

Was bedeutet .tar.gz und .tar.bz2?

Dateien mit der Erweiterung .tar.gz oder .tar.bz2 sind komprimierte Archivdateien. Eine Datei mit nur der Erweiterung .tar ist unkomprimiert, aber diese werden sehr selten sein.

Der .tar-Teil der Dateierweiterung steht für Tape Archive und ist der Grund dafür, dass diese beiden Dateitypen Tar-Dateien genannt werden. Tar-Dateien reichen bis ins Jahr 1979 zurück, als der Befehl tar erstellt wurde, um es Systemadministratoren zu ermöglichen, Dateien auf Band zu archivieren. Vierzig Jahre später verwenden wir immer noch den tar-Befehl, um tar-Dateien auf unsere Festplatten zu extrahieren. Irgendjemand verwendet wahrscheinlich immer noch Teer mit Klebeband.

Das Erweiterungssuffix .gz oder .bz2 zeigt an, dass das Archiv mit dem Komprimierungsalgorithmus gzip oder bzip2 komprimiert wurde. Der tar-Befehl funktioniert mit beiden Dateitypen problemlos, daher spielt es keine Rolle, welche Komprimierungsmethode verwendet wurde – und er sollte überall verfügbar sein, wo Sie eine Bash-Shell haben. Sie müssen nur die entsprechenden tar-Befehlszeilenoptionen verwenden.

Extrahieren von Dateien aus Tar-Dateien

Angenommen, Sie haben zwei Notendateien heruntergeladen. Eine Datei heißt ukulele_songs.tar.gz , die andere heißt guitar_songs.tar.bz2. Diese Dateien befinden sich im Downloads-Verzeichnis.

Lassen Sie uns die Ukulele-Songs extrahieren:

tar -xvzf ukulele_songs.tar.gz

Wenn die Dateien extrahiert werden, werden sie im Terminalfenster aufgelistet.

Die von uns verwendeten Befehlszeilenoptionen sind:

-x: Extrahieren, holen Sie die Dateien aus der tar-Datei.
-v: Ausführlich, listet die Dateien auf, während sie extrahiert werden.
-z: Gzip, verwenden Sie gzip, um die tar-Datei zu dekomprimieren.
-f: Datei, der Name der tar-Datei, mit der tar arbeiten soll. Dieser Option muss der Name der tar-Datei folgen.

  So installieren Sie GitCola unter Linux

Listen Sie die Dateien im Verzeichnis mit ls auf und Sie werden sehen, dass ein Verzeichnis namens Ukulele Songs erstellt wurde. Die extrahierten Dateien befinden sich in diesem Verzeichnis. Woher kommt dieses Verzeichnis? Es war in der tar-Datei enthalten und wurde zusammen mit den Dateien extrahiert.

Jetzt extrahieren wir die Gitarrensongs. Dazu verwenden wir fast genau den gleichen Befehl wie zuvor, jedoch mit einem wichtigen Unterschied. Das Erweiterungssuffix .bz2 sagt uns, dass es mit dem Befehl bzip2 komprimiert wurde. Anstelle der Option -z (gzip) verwenden wir die Option -j (bzip2).

tar -xvjf guitar_songs.tar.bz2

Auch hier werden die Dateien beim Extrahieren auf dem Terminal aufgelistet. Um es klarzustellen, die Befehlszeilenoptionen, die wir mit tar für die .tar.bz2-Datei verwendet haben, waren:

-x: Extrahieren, holen Sie die Dateien aus der tar-Datei.
-v: Ausführlich, listet die Dateien auf, während sie extrahiert werden.
-j: Bzip2, verwenden Sie bzip2, um die tar-Datei zu dekomprimieren.
-f: Datei, Name der tar-Datei, mit der tar arbeiten soll.

Wenn wir die Dateien im Download-Verzeichnis auflisten, sehen wir, dass ein weiteres Verzeichnis namens Guitar Songs erstellt wurde.

Auswählen, wohin die Dateien extrahiert werden sollen

Wenn wir die Dateien an einen anderen Ort als das aktuelle Verzeichnis extrahieren möchten, können wir mit der Option -C (angegebenes Verzeichnis) ein Zielverzeichnis angeben.

tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/

In unserem Documents/Songs-Verzeichnis sehen wir, dass das Guitar-Songs-Verzeichnis erstellt wurde.

  So aktivieren Sie die Root-SSH-Anmeldung unter Linux

Beachten Sie, dass das Zielverzeichnis bereits vorhanden sein muss, tar wird es nicht erstellen, wenn es nicht vorhanden ist. Wenn Sie ein Verzeichnis erstellen und die Dateien von tar in einem einzigen Befehl hinein extrahieren müssen, können Sie dies wie folgt tun:

mkdir -p ~/Documents/Songs/Downloaded && tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/Downloaded/

Die Option -p (parents) veranlasst mkdir, alle erforderlichen übergeordneten Verzeichnisse zu erstellen, um sicherzustellen, dass das Zielverzeichnis erstellt wird.

In Tar-Dateien schauen, bevor Sie sie extrahieren

Bisher haben wir nur einen Vertrauensvorschuss gemacht und die Dateien ungesehen extrahiert. Vielleicht möchten Sie nachsehen, bevor Sie springen. Sie können den Inhalt einer tar-Datei überprüfen, bevor Sie sie extrahieren, indem Sie die Option -t (Liste) verwenden. Normalerweise ist es praktisch, die Ausgabe durch den Befehl less zu leiten.

tar -tf ukulele_songs.tar.gz | less

Beachten Sie, dass wir die Option -z nicht verwenden müssen, um die Dateien aufzulisten. Wir müssen die Option -z nur hinzufügen, wenn wir Dateien aus einer .tar.gz-Datei extrahieren. Ebenso brauchen wir die Option -j nicht, um die Dateien in einer tar.bz2-Datei aufzulisten.

Wenn wir durch die Ausgabe scrollen, können wir sehen, dass sich alles in der tar-Datei in einem Verzeichnis namens Ukulele Songs befindet, und in diesem Verzeichnis befinden sich Dateien und andere Verzeichnisse.

Wir können sehen, dass das Verzeichnis Ukulele Songs Verzeichnisse namens Random Songs, Ramones und Possibles enthält.

Um alle Dateien aus einem Verzeichnis innerhalb einer tar-Datei zu extrahieren, verwenden Sie den folgenden Befehl. Beachten Sie, dass der Pfad in Anführungszeichen eingeschlossen ist, da der Pfad Leerzeichen enthält.

tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/Ramones/"

Um eine einzelne Datei zu extrahieren, geben Sie den Pfad und den Namen der Datei an.

tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/023 - My Babe.odt"

Sie können eine Auswahl von Dateien mithilfe von Platzhaltern extrahieren, wobei * für eine beliebige Zeichenfolge steht und ? steht für ein beliebiges einzelnes Zeichen. Die Verwendung von Platzhaltern erfordert die Verwendung der Option –wildcards.

tar -xvz --wildcards -f ukulele_songs.tar.gz "Ukulele Songs/Possibles/B*"

Extrahieren von Dateien, ohne Verzeichnisse zu extrahieren

Wenn Sie nicht möchten, dass die Verzeichnisstruktur in der tar-Datei auf Ihrer Festplatte neu erstellt wird, verwenden Sie die Option –strip-components. Die Option –strip-components erfordert einen numerischen Parameter. Die Zahl gibt an, wie viele Verzeichnisebenen ignoriert werden sollen. Dateien aus den ignorierten Verzeichnissen werden weiterhin extrahiert, aber die Verzeichnisstruktur wird nicht auf Ihrer Festplatte repliziert.

  So installieren Sie den Vidiot-Videoeditor unter Linux

Wenn wir –strip-components=1 mit unserer Beispiel-Tar-Datei angeben, wird das oberste Verzeichnis der Ukulele-Songs innerhalb der TAR-Datei nicht auf der Festplatte erstellt. Die Dateien und Verzeichnisse, die in dieses Verzeichnis extrahiert worden wären, werden in das Zielverzeichnis extrahiert.

tar -xvzf ukulele_songs.tar.gz --strip-components=1

In unserer Beispiel-Tar-Datei gibt es nur zwei Ebenen der Verzeichnisverschachtelung. Wenn wir also –strip-components=2 verwenden, werden alle Dateien in das Zielverzeichnis extrahiert und keine anderen Verzeichnisse erstellt.

tar -xvzf ukulele_songs.tar.gz --strip-components=2

Wenn man sich das Linux anschaut man-Seite Sie werden sehen, dass tar ein guter Kandidat für den Titel „Befehl mit den meisten Befehlszeilenoptionen“ sein muss. Zum Glück müssen wir uns nur eine Handvoll dieser Optionen merken, damit wir Dateien aus .tar.gz- und tar.bz2-Dateien mit einem guten Maß an granularer Kontrolle extrahieren können.