Wie kann man einen anderen "Top Level" -Namen für Teer angeben?


10

Ich möchte tar root (/) und es als / abc im tar-Archiv erscheinen lassen.

Gibt es ein Teer-Flag zum Angeben eines benutzerdefinierten Namens der obersten Ebene?

Antworten:


6

Der nächste, den ich finden kann, ist die --transformOption. Ich weiß es nicht genau, aber ich vermute, dass dies nur eine GNU-Flagge ist:

 --transform, --xform EXPRESSION
       use sed replace EXPRESSION to transform file names

Mit diesem können Sie einen sedErsetzungsbefehl übergeben und Folgendes ändern /in /abc:

tar cf root.tgz --transform 's/^\//\/abc/' /

Dadurch werden /beim Erstellen des Archivs weiterhin Pfade gedruckt , diese werden jedoch /abcbeim Extrahieren erstellt.


Ein anderer Ansatz, wenn Sie tarnicht die --transformOption haben, besteht darin, /abceinen Symlink zu erstellen, der auf Folgendes verweist, /und dann Folgendes zu tun:

$ ln -s / /abc
$ tar chf root.tgz /abc

Das -hist wichtig, da dies bedeutet, tarLinks zu folgen:

 -h, --dereference
       follow symlinks; archive and dump the files they point to

Dadurch wird das /abcVerzeichnis der obersten Ebene festgelegt.


2

Mit GNU tar können Sie diesen Befehl verwenden:

tar --transform="s|/|/abc/|" -Pcf bar.tar /

Andernfalls ist hier eine tragbare Methode, dh eine, die nicht auf einer GNU oder einer anderen spezifischen Tar-Erweiterung basiert, sondern auf einem POSIX-Tool basiert, das auf jedem Unix-kompatiblen Computer verfügbar sein sollte:

pax -w -s '/\//\/abc\//' -f foo.tar /

1

Hier ist, wie ich es gemacht habe, was zum Teern von jedem Ort aus funktioniert (nicht nur /):

tar --transform 's|^|/abc/|' -zcvf /path/to/dest.tgz *

Es wird einfach ein /abc/an den Anfang jedes Pfades angehängt .


1
Beim Extrahieren eines auf diese Weise erstellten Archivs wird eine Warnung angezeigt tar: Removing leading / from member names. Die Verwendung 's|^|abc/|'hat bei mir gut funktioniert.
Michael Platings
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.