Komprimieren eines Ordners (tar) ohne das darin enthaltene Verzeichnis im Ordnernamen


21

Ich versuche, einen Ordner mit dem tarBefehl zu komprimieren .

Wenn ich versuche, es zu komprimieren, funktioniert es gut. Das Problem ist mit dem Dateinamen.

Quellpfad:

/data/file/

Weg zum Ziel:

/data/repo/temp/file.tar.gz

tar zcvf $srcpath $destinationpath

Ich führe den Befehl aus einem anderen Ordner aus und beim Extrahieren des Ordners erhalte ich alle Unterverzeichnisse anstatt nur den Dateiordner.


1
Die TAR-Syntax lautet: tar zcvf file.tar.gz /path/dir/to/compressVielleicht sollten Sie Ihren Befehl ändern, tar zcvf $destinationpath $srcpathaber mir ist nicht klar, was Sie brauchen. Können Sie Ihre Frage anhand eines Beispiels erläutern, das Sie von dem Befehl tar erwarten?
Lety

danke für den kommentar, mein problem besteht darin, dem kommentar zu folgen, den du hier geteilt hast "tar zcvf file.tar.gz / pfad / dir / to / compres" dies sollte gut funktionieren, wenn wir uns im selben verzeichnis "file" befinden, in dem mein fall ist Wir arbeiten in einem anderen Verzeichnis, z. B .: / home / testuser1 / file: file ist der Ordner, den ich komprimieren möchte, und führt den Befehl von root aus, der sich nicht in home befindet. Daher müssen wir möglicherweise den gesamten Pfad zum Ordner angeben, während wir extrahieren Ich erhalte alle Unterverzeichnisse von / home / testuser1 / file anstelle von file folder
Seetha Raman

Wahrscheinlich ein Tippfehler, aber in Ihrem Beispiel haben Sie Quelle und Ziel vertauscht.
Jacob Vlijm

Antworten:


49

Der einfachste Weg, dies zu tun, besteht darin, zuerst in das Verzeichnis zu wechseln:

cd /path/to/containing/folder && tar -zcvf tarfile.tar.gz foldername_tocompress

Damit wird das Verzeichnis des (enthaltenden) Ordners zum Stammverzeichnis Ihrer komprimierten Datei.

Etwas fortgeschrittener ist die Verwendung der Option -C:

tar -zcvf tarfile.tar.gz -C /path/to/foldername_tocompress .

Dadurch wird eine tar.gzDatei im aktuellen (Arbeits-) Verzeichnis erstellt, die alle darin enthaltenen Dateien / Ordner enthält foldername_tocompress(beachten Sie den Punkt, der besagt, dass alle Dateien / Ordner enthalten sein sollten).


4
Der Punkt am Ende Ihres zweiten Befehls schließt alle Dateien im aktuellen Verzeichnis ein ...
David Duncan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.