Frage Welchen Befehl brauche ich, um eine .tar.gz-Datei zu entpacken / extrahieren?


Ich habe eine riesige .tar.gz-Datei von einem Client erhalten, der etwa 800 MB Bilddateien enthält (wenn unkomprimiert). Das ftp unseres Hosting-Unternehmens ist sehr langsam, so dass das Extrahieren aller Dateien lokal und das Senden über FTP nicht praktikabel ist. Ich war in der Lage, die .tar.gz-Datei auf unsere Hosting-Site zu übertragen, aber wenn ich mich in mein Verzeichnis stopfe und versuche, unzip zu benutzen, gibt es mir diesen Fehler:

[esthers@clients locations]$ unzip community_images.tar.gz
Archive:  community_images.tar.gz
  End-of-central-directory signature not found.  Either this file is not a zipfile, or it constitutes one disk of a multi-part archive.  In the latter case the central directory and zipfile comment will be found on the last disk(s) of this archive.
note:  community_images.tar.gz may be a plain executable, not an archive
unzip:  cannot find zipfile directory in one of community_images.tar.gz or community_images.tar.gz.zip, and cannot find community_images.tar.gz.ZIP, period.

Welchen Befehl benötige ich, um alle Dateien in einer .tar.gz-Datei zu extrahieren?


627
2018-02-08 22:50


Ursprung




Antworten:


Art man tar für weitere Informationen, aber dieser Befehl sollte den Trick machen:

tar -xvzf community_images.tar.gz

Um etwas weiter zu erklären, sammelte tar alle Dateien in einem Paket, community_images.tar. Das gzip-Programm hat Komprimierung angewendet, daher die Erweiterung gz. Der Befehl macht also ein paar Dinge:

  • f: Dies muss die letzte Flagge des Befehls und der Teer sein fIch muss sofort danach sein. Er teilt tar den Namen und den Pfad der komprimierten Datei mit.
  • z: weist tar an, das Archiv mit g zu dekomprimierenzIP
  • x: tar kann Dateien sammeln oder extrakt sie. x tut das letztere.
  • v: macht Teer viel reden. VErbose-Ausgabe zeigt Ihnen alle extrahierten Dateien.

1058
2018-02-08 22:57



@Shiki Ich habe deine vorgeschlagene Bearbeitung gesehen. Ich denke nicht, dass es eine angemessene Veränderung ist, ich bevorzuge die Art, wie ich dieses Tool erklärt habe. ich machen Denk an dein tar -xf Vorschlag würde eine großartige zusätzliche Antwort geben. - djeikyb
Dies ist eine der besseren Erklärungen aus den Millionen von ähnlich formulierten Fragen - JohnMerlino
@KasunSiyambalapitiya Steht standardmäßig im aktuellen Ordner. Siehe auch man tar; Suche nach -C Möglichkeit. Oder schau dir die andere Antwort an - djeikyb
@nikoss ich füge die hinzu v schalte die ganze Zeit, weil ich mögen Die Datei wird während der Extraktion angezeigt. das lehrend bereitet auch den Leser auf andere tar-Befehle vor tar -tvf foo.tar welches den Archivinhalt ohne Extrahieren anzeigt. - djeikyb
Erinnert mich an xckds Artikel über Teer.Ich muss jedes Mal wiederkommen. - mgarey


Wenn Sie möchten, dass die Dateien an ein bestimmtes Ziel extrahiert werden, können Sie sie hinzufügen -C /destination/path/
Stellen Sie sicher, dass Sie das Verzeichnis zuerst erstellen, in diesem Fall: ~ / Pictures / Community

Beispiel:

mkdir ~/Pictures/Community
tar xf community_images.tar.gz -C /home/emmys/Pictures/Community/

Sie können es sich leicht einprägen, wenn Sie überlegen, es zu erzählen Teer zu e X Trakt a F Ile

gif of process done at terminal

Hinweis: Denken Sie daran, dass Sie in Manpages mit suchen können ?+ Begriff zu suchen, und dann n und N um zur nächsten oder vorherigen Instanz des gesuchten Begriffs zu gelangen.


130
2017-08-20 11:02



vergiss nicht C zum "change directory "! Außerdem denke ich, dass es besser ist, Bindestrich- und Nicht-Bindestrich-Optionen nicht zu mischen (besonders verwirrend bei der Verwendung) ps). - djeikyb
Warum ist es nicht - wie jeder andere Befehl? - Jan M.
Ich liebe deinen Hinweis 'Teer zu e X Trakt a F ile' - Nam G VU
1+ für das animierte gif - Nick Steele


Irgendwann tar wurde auf automatische Dekomprimierung aktualisiert. Alles was du jetzt brauchst ist:

tar xf community_images.tar.gz

Die gleiche Erklärung gilt:

  • f: Dies muss die letzte Flagge des Befehls und der Teer sein fIch muss sofort danach sein. Er teilt tar den Namen und den Pfad der komprimierten Datei mit.
  • x: exTrakt die Dateien.

Beachten Sie den fehlenden Bindestrich für die Befehlsflags. Dies liegt daran, dass die meisten Versionen von tar sowohl gnu als auch bsd style Optionen erlauben (simplistisch, gnu benötigt einen Bindestrich, bsd nicht).


89
2017-12-31 23:54



Gibt es dazu Unterlagen? Ich habe überall nach einer Referenz gesucht, ich benutze nie die -z-Flagge und alles wird gezippt, also habe ich mir Sorgen gemacht, wenn ich meine Tarballs überhaupt nicht komprimiert habe, haha. Vielen Dank. - neurosnap
@neurosnap siehe die Gnu Handbuch und von der BSD Handbuch - djeikyb
Wahrscheinlich wäre es besser gewesen, deine ursprüngliche Antwort zu bearbeiten. - Seth♦
@Seth fühlt / fühlte sich deutlich genug, um eine separate Antwort zu sein, besonders im Kontext der destruktiven Bearbeitung, die es provoziert hat. Ich werde es nach der Arbeit noch einmal überdenken, könnte ein einfacherer Weg zum Zusammenführen sein, als ich ursprünglich dachte. - djeikyb
@EnricoMariaDeAngelis bsd tar seit mindestens 2004 und gnu tar seit mindestens 2010 unterstützt automatische Auswahl eines Dekompressors. Es ist möglich, dass keine "aktuelle" Version (dieses Jahrhundert? Neunziger +?) von tar die manuelle Auswahl eines Dekomprimierers erfordert. - djeikyb


Falls Sie nicht in der Lage sind zu extrahieren .tar.gz Datei mit

tar -xvzf fileName.tar.gz

Versuchen Sie, mit zu extrahieren

tar xf fileName.tar.gz

4
2018-01-05 06:29



Wenn es sich um eine gezippte TAR-Datei handelt, wird der erste Befehl immer funktionieren. Wenn es nicht funktioniert, haben Sie keine gezippte TAR-Datei. Der letztere Befehl ist eine großartige Empfehlung für Leute, denen es egal ist, welcher Komprimierungsalgorithmus für ihre TAR-Datei verwendet wurde. - djeikyb