Ich möchte das X-Verzeichnis ohne die Eltern tarieren

9
tar cvf /var/lib/backup/sample.tar /home/user/.project

Wenn ich jedoch extrahiere, bekomme ich auch seine Eltern

/backup/
  - /home/
     - /user/
        - .project/

Dieser tar-Befehl erledigt seine Aufgabe, da er nichts anderes in seinen übergeordneten Elementen enthält ( userz. B. andere Ordner unter ).

Ich möchte dies programmgesteuert tun, daher ist das Ändern des aktuellen Arbeitsverzeichnisses in /home/user/keine Option. Ist das möglich?

User007
quelle

Antworten:

17

Sie können entweder die -COption verwenden, um /home/uservor dem Teern in das Verzeichnis zu wechseln, oder sie --strip-components 2beim Extrahieren verwenden.

tar cvfC /var/lib/backup/sample.tar /home/user .project
#                              Note the space ^
tar cvf /var/lib/backup/sample.tar /home/user/.project
tar Cxf /backup /var/lib/backup/sample.tar --strip-components 2
Kevin
quelle
1
+1 cool .. Ich habe den -CSchalter gerade gefunden , als ich die Manpage durchgesehen habe , konnte ihn aber nicht verstehen. Es klang für mich eher so, als würde er während des Untars verwendet. Etwas Neues gelernt.
Levon
@ Kevin Danke. Die C-Option funktioniert einwandfrei. Danke!
User007
2
Ich konnte es nicht so zum Laufen bringen. Nach dem Lesen von gnu.org/software/tar/manual/tar.html#SEC118 war ich mit folgendem Formular erfolgreich: tar cvf /var/lib/backup/sample.tar -C / home / user .project
Aivar
2

Ich denke, wenn Sie cdzu dem Toplevel-Verzeichnis gehen, von dem Sie eine tarDatei erstellen möchten , sollten Sie dieses Problem nicht haben. Dh

cdbis userund nach taroben .project.. Sie können das Ziel für die TAR-Datei /var/... wie zuvor angeben .

Oder gibt es einen Grund , warum Sie nicht zu / Ich will nicht cdzu user?

Levon
quelle
Ja. Das wäre eine Lösung. Vielen Dank. Aber ich hoffe es gibt einen besseren Weg? Ich möchte mich mit diesem programmatischen Verbündeten befassen, und ich möchte nicht die os.chdir(base_dir)ganze Zeit in meinem Code Probleme haben :) Es wäre also schön, wenn es einen Ausweg gäbe. Vielen Dank
User007
@ User007 Ah .. ok, ich verstehe. Möglicherweise möchten Sie Ihre Frage aktualisieren, um diese Anforderung aufzunehmen. Nette Benutzer-ID übrigens :)
Levon
Vielen Dank. Ja. Ich habe gerade meine Frage aktualisiert. Oh, es ist meine Identität zu verbergen ...
User007
1
@ User007 lieben den 007 Teil .. und sieht aus wie Sie auch in Python arbeiten (das ist ein weiterer meiner Favoriten)
Levon
:) Ja. In Ordnung, unser Freund Kevinhat mir mit dem richtigen Befehl geholfen. Also werde ich ihm die Zecke geben. Aber ich habe dich gestimmt. Vielen Dank!
User007