Erhalten Sie beim Extrahieren des tar-Archivs das Eigentum und die Rechte des übergeordneten Verzeichnisses

669
ThaMe90

Angenommen, ich habe die folgende Verzeichnisstruktur irgendwo in meinem Dateisystem:

a/ dir; alice:work; default dir rights b/ dir; alice:work; default dir rights test.sh script; alice:work; executable 

Als Nächstes erstelle ich ein Archiv dieser Verzeichnisstruktur als Bob und liste nur test.sh als Datei auf, die ich dem Archiv hinzufügen möchte:

sudo tar cjf backup.tar.bz2 a/b/test.sh 

Jetzt habe ich ein Archiv backup.tar.bz2, das die Besitzrechte und Rechte der Datei, die ich im Befehl angegeben habe, behalten sollte (und ich erwarte auch das gleiche für die übergeordneten Verzeichnisse a & b!).

Nun, hier ist meine Notlage. Wenn ich immer noch als Bob versuche, den Inhalt des Archivs an einem anderen Ort in meinem Dateisystem als Test zu extrahieren, würde ich davon ausgehen, dass dieselbe Dateistruktur mit den gleichen Inhaberschaften und Rechten erhalten wird, als ich das Archiv mit erstellt habe . Wenn Sie jedoch den folgenden Befehl verwenden

sudo tar xjf backup.tar.bz2 

Ich bekomme stattdessen die folgende Dateistruktur:

a/ dir; root:root; default dir rights b/ dir; root:root; default dir rights test.sh script; alice:work; executable 

Irgendwie bleibt der Besitz der übergeordneten Verzeichnisse beim Extrahieren aus dem Archiv nicht erhalten. Es scheint, dass es den Besitz dieser Verzeichnisse an den Benutzer weitergibt, der das Archiv extrahiert hat (in meinem Fall root, da ich die Eigentumsrechte behalten möchte).

Gibt es eine Möglichkeit, tar mitzuteilen, dass der Besitz der übergeordneten Verzeichnisse auch erhalten bleibt? Ich weiß, dass es möglich ist, indem sie in den Befehl tar eingefügt werden, der das Archiv erstellt:

sudo tar cjf backup.tar.bz2 a/ a/b/ a/b/test.sh 

Ich würde das aber lieber nicht tun, falls in einem / oder einem / b / andere Dateien oder Verzeichnisse vorhanden sind, da diese dann ebenfalls Teil des Archivs wären.

0

1 Antwort auf die Frage

0
ThaMe90

Anscheinend muss ich die Hilfeseiten öfter lesen. Wenn ich meinem letzten Befehl den Parameter --no-recursion hinzufüge, wird genau das gemacht, was ich will:

sudo tar --no-recursion -cjf backup.tar.bz2 a/ a/b/ a/b/test.sh 

Dies ergibt die folgende Dateistruktur nach dem Extrahieren mit dem Befehl in der Frage:

a/ dir; alice:work; default dir rights b/ dir; alice:work; default dir rights test.sh script; alice:work; executable