tar - Supprime les principaux composants du répertoire lors de l'extraction

104

Comment pouvez-vous extraire uniquement le répertoire cible et non l'arborescence complète?

compresse

tar cf /var/www/site.tar /var/www_bak/site

extrait

tar xf /var/www/site.tar -C /tmp

Cela produira:

/tmp/var/www/site

Comment est-il possible d'éviter la création de tout l'arborescence de répertoires lors de l'extraction du fichier?

Ce que je veux extraire pour:

/tmp/site
clarkk
la source

Réponses:

34

Pourquoi ne pas utiliser l' -Coption lors de la création:

$ tar cf /var/www/site.tar -C /var/www_bak/ site
quanta
la source
1
TMTOWTDI. Cela fonctionnerait aussi, en utilisant la même -Coption;)
MikeyB
12
Il souhaite supprimer le chemin de certains composants principaux, sans modifier le répertoire de sortie. Voir ci-dessous pour la réponse correcte.
aymericbeaumet
4
Nous ne pouvons pas l'utiliser lorsque quelqu'un d'autre prépare les archives.
Parce que `` `_t = prefix - $ (date +% A% m% d); tar -cjf ".backups / $ _t.tar.bz2" --transform = "s # ^ (\ ./)? # $ _ t / # x;" -- des dossiers...; tar -df ".backups / $ _t.tar.bz2" --strip-components = 1 `` `
AnrDaemon le
258

Vous souhaitez utiliser l' --strip-components=NUMBERoption de tar:

 --strip-components=NUMBER
       strip NUMBER leading components from file names on extraction

Votre commande serait:

tar xfz /var/www/site.gz --strip-components=2 -C /tmp
MikeyB
la source
19
Cette réponse est préférable car vous n'avez pas à y penser avant la création de goudron. Vous pouvez l'utiliser avec un fichier tar déjà créé. Merci @MikeyB!
Fabien Quatravaux
4
Je suis heureux d’annoncer que cela fonctionne à la fois dans les versions GNU tar et BSD.
Nathan Osman
4
et parce que vous n'êtes peut-être pas le créateur de goudron ... (ou si vous le faites avec un autre outil et que cet outil fait des bêtises ...)
xenoterracide
vous risquez peut-être encore de manquer l' --strip-componentsindicateur si vous utilisez l'implémentation de busybox-embedded de tar.
Sylvainulg
1
@FabienQuatravaux Eh bien, oui --- si vous faites une erreur et créez une archive qui inclut les principaux répertoires que vous ne voulez pas voir lors de l'extraction. Mais il est plus clair de construire l'archive sans les principaux répertoires indésirables.
Calaf