Erstellen eines Tar-Archivs ohne Einbeziehung des übergeordneten Verzeichnisses

Erstellen eines Tar-Archivs ohne Einbeziehung des übergeordneten Verzeichnisses

Ich versuche, ein grafisches Programm für mein Skript zu erstellen.

Innerhalb des Skripts verwende ich Tar, um ein Tar-Archiv zu erstellen.

Vom grafischen Programm erhalte ich den vollständigen Namen der Datei, für die ich ein Tar-Archiv erstellen möchte.

tar -cvf temp.tar /home/username/dir1/dir2/selecteddir 

Mein Tar-Archiv umfasst Home, Benutzername, Verzeichnis1, Verzeichnis2 und ausgewähltes Verzeichnis, während ich möchte, dass Tar nur ein Archiv erstellt, das ausgewähltes Verzeichnis enthält.

Antwort1

Sie können hierzu die -Cfolgende Option verwenden:tar

tar -C /home/username/dir1/dir2 -cvf temp.tar selecteddir

Aus der Manpage von tar:

-C directory
         In c and r mode, this changes the directory before adding the following files.  
         In x mode, change directories after opening the archive but before extracting 
         entries from the archive.

Antwort2

Es gibt zwei Methoden, mit denen Sie dieses Problem angehen können.

Die erste Möglichkeit ist meiner Meinung nach einfacher. Einfach cdin das Verzeichnis direkt über dem, das Sie komprimieren möchten. In diesem Fall wäre das dir2.

$ cd /home/username/dir1/dir2/
$ tar -cvf temp.tar selecteddir

Die zweite Möglichkeit besteht darin, die Option zu verwenden --transform, die einen Ausdruck annimmt sedund ihn für die Dateinamen ausführt. Hinweis: Sie müssen /im sedAusdruck ein Escapezeichen verwenden.

$ tar -cvf temp.tar /home/username/dir1/dir2/selecteddir --transform='s/\/home\/username\/dir1\/dir2\///g'

Antwort3

Gehen Sie zunächst in das Arbeitsverzeichnis.

cd /your/working/directory/ 

Dann benutze Magie *:-)

tar -cvf temp.tar *

Antwort4

Um dieses Punktverzeichnis zu vermeiden, können Sie es nachträglich entfernen:

tar czC /path/to/dir . --transform='s,^\./,,' >| foo.tgz

Dadurch wird ein Archiv erstellt, das nur dieInhaltvon /path/to/dir.

verwandte Informationen