Je veux tarer le répertoire X sans inclure ses parents

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

Cependant, quand j'extrait, j'obtiens aussi ses parents

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

Cette commande tar fait son travail car elle n'inclut rien d'autre dans ses parents (autres dossiers sous userpar exemple).

Je veux le faire par programme, donc changer le répertoire de travail actuel en /home/user/n'est pas vraiment une option. Est-il possible de faire ça?

User007
la source

Réponses:

17

Vous pouvez soit utiliser l' -Coption pour basculer dans le /home/userrépertoire avant le tarage, soit utiliser --strip-components 2lors de l'extraction.

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
la source
1
+1 cool .. Je viens de trouver le -Ccommutateur lorsque je regardais la page de manuel , mais je ne pouvais pas le comprendre. J'ai appris quelque chose de nouveau.
Levon
@Kevin Merci. L'option C fonctionne parfaitement. Je vous remercie!
User007
2
Je ne pouvais pas le faire fonctionner comme ça. Selon la lecture de gnu.org/software/tar/manual/tar.html#SEC118 j'ai réussi avec le formulaire suivant: tar cvf /var/lib/backup/sample.tar -C / home / user .project
Aivar
2

Je pense que si vous vous trouvez cddans le répertoire toplevel que vous souhaitez créer tar, vous ne devriez pas avoir ce problème. C'est à dire,

cdvers useret vers le tarhaut .project.. vous pouvez spécifier la destination du fichier tar dans le /var/... comme précédemment.

Ou est - il une raison que vous ne voulez pas / ne peut pas cdà user?

Levon
la source
Oui. Ce serait une solution. Merci. Mais j'espère qu'il y a une meilleure façon? Je veux traiter avec cet allié programmatique, et je ne veux pas publier os.chdir(base_dir)tout le temps dans mon code :) donc ce serait bien s'il y avait un moyen de sortir de cela. Merci
User007
@ User007 Ah .. ok, je vois. Vous pouvez mettre à jour votre question pour inclure cette exigence. Joli identifiant utilisateur au fait :)
Levon
Merci. Oui. Je viens de mettre à jour ma question. Oh, c'est pour cacher mon identité ...
User007
1
@ User007 aime la partie 007 .. et on dirait que vous travaillez aussi en Python (qui est un autre de mes favoris)
Levon
:) Oui. Très bien, notre ami Kevinm'a aidé avec la bonne commande. Je vais donc lui donner la tique. Mais je vous ai voté. Merci!
User007