staging.inyokaproject.org

Frage zu archiven

Status: Ungelöst | Ubuntu-Version: Ubuntu 16.10 (Yakkety Yak)
Antworten |

chapolote

Anmeldungsdatum:
22. April 2017

Beiträge: 3

Hallo,

ich bin neu hier und hoffe, die Frage gehört in dieses Forum:

wenn ich per shell einen Ordner mit tar oder zip packe, also beispielsweise zip -r foo.zip foo und diese mit unzip foo.zip wieder entpacke, wie muß der Befehl lauten, daß mir der Inhalt von foo.zip direkt in den angegebenen Ordner entpackt wird, und nicht in einen Unterordner namens foo?

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Hi chapolote,

herzlich willkommen hier auf dem Forum !

Die Steuerung solcher Spezialitäten geschieht über die Optionen des betreffenden Programms.
(also durchaus nicht einheitlich für verschiedene Archiv-Packer !)

In Klartext: Du musst in der zugehörigen Manpage nachgucken, ob und welche Option dafür in Frage kommt.
Hier, bei unzip (und nur bei unzip) wäre das die Option -j :

-j junk paths. The archive's directory structure is not recreated; all files are deposited in the extraction directory (by default, the current one)

LG,

track

tomtomtom Team-Icon

Supporter
Avatar von tomtomtom

Anmeldungsdatum:
22. August 2008

Beiträge: 55572

Wenn du ein Archiv foo.zip anlegst, dass den Ordner foo umfasst IST dieser Ordner nunmal der Inhalt dieses Archives.

Die Frage wäre also entweder

  1. wie du ein Archiv erstellst, in dem nur die Daten und nicht der Ordner enthalten sind oder

  2. wie du nur Teile des Archives (nämlich die Dateien) entpackst.

Die Antwort zu 1. findet sich in

man zip 

die Antwort zu 2. findet sich in

man unzip 

chapolote

(Themenstarter)

Anmeldungsdatum:
22. April 2017

Beiträge: 3

Danke für die Antworten.

@track: wenn ich Dich richtig verstanden habe, ist das nicht die Lösung. Angenommen foo hat Unterordenr und ich entpacke foo.zip mit unzip -j foo.zip, werden mir die Dateien nicht nur in den aktuellen Ordner geschrieben, sonder auch die Dateien der Unterordner von foo.zip werden in den aktuellen Ordner geschrieben, d.h. es wird mir die komplette Baumstruktur gekillt.

@tomtomtom: ich habe mir die Manpage zu zip und unzip angesehen. Als unerfahrener Linuxnutzer komme ich damit nicht richtig klar, darum poste ich ja hier, um eventuell Unterstützung zu bekommen.

Hintergrund meiner Frage ist eigentlich folgender: ich nutze für typo3, welches auf einem entfernten Server läuft ein Template, welches mir in Form einer zip-Datei, also bsplsw. template.zip zur Verfügung gestellt wird. template.zip besteht aus Dateien und Ordnern und Unterordnern usw. Diese kopiere ich auf den Server und entpacke sie mit dem schlichten Befehl unzip template.zip. Danach finde ich im aktuellen verzeichnis nicht etwa den Ordner template mit der Baum- und Dateistruktur aus template.zip, sonder die Baum- und Dateistruktur direkt im aktuellen Verzeichnis. Also hat der Verfasser von template.zip seine Datei- und Ordnerstruktur ja schon so gepackt, daß beim Entpacken nicht automatisch der Ordner template erstellt wird.

Da ich öfters mal Datein und Ordner von einem Server zum anderen transferiere, wäre es für mich sehr hilfreich, zip-Archive zu erstellen, die direkt entpackt werden und nicht erst in einen Ordner mit dem Namen des Archivs.

Ich hoffe, ich konnte mich verständlich ausdrücken 😉

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

tomtomtom schrieb:

Die Frage wäre also entweder

  1. wie du ein Archiv erstellst, in dem nur die Daten und nicht der Ordner enthalten sind oder

  2. wie du nur Teile des Archives (nämlich die Dateien) entpackst.

Ein Ansatz für 1. wäre statt

zip -r foo.zip foo

sowas:

cd foo
zip -r foo.zip .

Und für 2. könnte das helfen: https://forum.ubuntuusers.de/post/8816543/, wenn einem das Ergebnis mit dem "-j" Schalter von unzip zu flach ist.

chapolote

(Themenstarter)

Anmeldungsdatum:
22. April 2017

Beiträge: 3

Ok, ich hab es jetzt verstanden ☺ 1000 Dank

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

chapolote schrieb:

@track: wenn ich Dich richtig verstanden habe, ist das nicht die Lösung. Angenommen foo hat Unterordenr und ich entpacke foo.zip mit unzip -j foo.zip, werden mir die Dateien nicht nur in den aktuellen Ordner geschrieben, sonder auch die Dateien der Unterordner von foo.zip werden in den aktuellen Ordner geschrieben, d.h. es wird mir die komplette Baumstruktur gekillt.

Ja, das wird sie, mit der Option -j ... aber Du hattest oben auch nicht verraten, dass Du Unterverzeichnisse retten willst.

In solchen Fällen nehme ich auch den Vorschlag von seahawk1986, und packe Archive grundsätzlich in dem betreffenden Ausgangsverzeichnis ein.
(→ Guck Dir mal mit unzip -t an, wie die Pfade bei den einzelnen Varianten genau gespeichert sind ! - dann verstehst Du.)
Auf jeden Fall wüsste ich nicht, wie man nachträglich die gespeicherten Pfade umbiegen kann.

Oder Du entpackst sie mit der (überflüssigen) Ordnerstruktur, und verschiebst sie anschließend um die nötigen Ebenen zurück in das Verzeichnis, wo sie hin sollen.
(Der Vorschlag mit dem Bastelskript wäre mir zu kompliziert, und solange ich nicht kapiere was er da tut, bin ich vorsichtig)

LG,

track

Antworten |