tar: So erstellen Sie eine tar-Datei mit beliebig führenden Verzeichnissen, ohne sie in das übergeordnete Verzeichnis zu kopieren


23

Angenommen, ich habe ein Dateiverzeichnis unter

/home/user1/dir1

und ich möchte einen tar mit nur "dir1" als führendem Verzeichnis erstellen:

/dir1/file1
/dir1/file2

Ich weiß, ich kann zuerst in das Verzeichnis CD

cd /home/user1/
tar czvf dir1.tar.gz dir1

Beim Schreiben von Skripten ist es jedoch nicht immer günstig, von Verzeichnis zu Verzeichnis zu springen. Ich frage mich, gibt es eine Möglichkeit, dies mit absoluten Pfaden zu tun, ohne die aktuellen Verzeichnisse zu ändern?

Ich weiß, ich kann immer eine TAR-Datei mit absoluten Pfaden INSIDE erstellen und verwenden

--strip-components 

Beim Extrahieren sind aber manchmal zusätzliche Pfadnamen zusätzliche private Informationen, die Sie nicht mit Ihren tar-Dateien verteilen möchten.

Vielen Dank!

Antworten:


24

tar -C wechselt das Verzeichnis

tar -C /home/user1/ -cvzf dir1.tar.gz dir1

Übrigens, praktisch, um den Überblick über das Wechseln von Verzeichnissen zu behalten ... benutze pushd und popd.

pushd .
cd /home/user1
tar cvfz dir1.tar.gz
popd

1
Vielen Dank. Ich wusste nicht, dass die Option "-C" vor anderen Optionen verwendet werden muss ... Ich habe zuvor "tar -cvzf dir1.tar.gz dir1 -C / home / user1 /" ausprobiert, aber es hat nicht funktioniert.
Yan

1
Funktioniert nicht: tar: dir: Kann nicht angeben: Keine solche Datei oder kein solches Verzeichnis (vorausgesetzt, dir1 befindet sich unter / home / user1 /)
tribbloid

21

Mit gnu tar können Sie ein Archiv mit einem anderen Basisverzeichnis erstellen als mit:

tar -c --transform 's,^\.,mybasedir,' .

Passen Sie den sed-Ausdruck einfach an Ihre Bedürfnisse an.


5

OK, das habe ich auch herausgefunden

tar -czvf file1.tar.gz /home/user1/dir1/../dir1

hat auch so funktioniert wie ich wollte.


Obwohl Platzhalter wie "*" dann nicht funktionieren
Curtis Yallop

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.