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.

Seetha Raman
quelle
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).

Jacob Vlijm
quelle
4
Der Punkt am Ende Ihres zweiten Befehls schließt alle Dateien im aktuellen Verzeichnis ein ...
David Duncan