it-swarm.com.de

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.

Aus dem Grafikprogramm erhalte ich den vollständigen Namen der Datei, für die ich ein Teerarchiv erstellen möchte.

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

Mein tar-Archiv enthält home, Benutzername, dir1, dir2 und selecteddir, während tar nur ein Archiv mit selecteddir erstellen soll.

65
Sujit Maharjan

Du kannst den ... benutzen -C Option von tar, um dies zu erreichen:

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.
82
mkc

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

Der erste ist meiner Meinung nach einfacher. Einfach cd in ein Verzeichnis direkt über dem Verzeichnis, das Sie komprimieren möchten. In diesem Fall wäre es dir2.

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

Die zweite Möglichkeit besteht darin, die Option --transform Zu verwenden, die einen sed - Ausdruck verwendet und ihn für die Dateinamen ausführt. Hinweis: Sie müssen / Im Ausdruck sed maskieren.

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

Gehen Sie zunächst zum Arbeitsverzeichnis.

cd /your/working/directory/ 

Dann benutze Magie * :-)

tar -cvf temp.tar *
5
Yas

Eigentlich habe ich ein Problem mit Ketans Antwort gefunden

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

Wenn Sie nur alle Dateien nur in dir2 kopieren möchten, nur alle Dateien, dann komme ich zuerst auf die Idee:

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

Wenn Sie sich jedoch nicht im Verzeichnis dir2 befinden, würde dies zu Problemen führen, da * Dateien in Ihrem aktuellen Diectroy tarieren würde. Und ich habe das Problem mit dem folgenden Befehl behoben:

 tar -C /home/username/dir1/dir2 -cvf temp.tar ./
3
Guan YANG