Puis-je extraire un dossier spécifique à l'aide de tar vers un autre dossier?


14

Je suis nouveau dans le monde de Linux et semble avoir rencontré une pierre d'achoppement. Je sais que je peux extraire une archive specifc en utilisant la commande tar xvfz archivename.tar.gz sampledir/mais comment puis - je extraire sampledir/à testdir/plutôt que le chemin que l'archive est en egcurrently l'archive est dans le chemin /tmp/archivename.tar.gzet je voudrais extraire sampledirde ce testdirqui est dans le chemin /tmp/testdir.

Réponses:


19

Ce que vous cherchez, c'est l' -Coption:

$ man tar
<snip>

-C, --directory DIR
       change to directory DIR

Utilisation, selon votre exemple:

$ tar xvzf archivename.tar.gz -C /tmp/testdir/ sampledir/

En outre, vous pourriez être intéressé de savoir que les versions modernes de tarne nécessitent pas l' zindicateur pour décompresser les fichiers compressés; ils remarqueront que c'est un .gzet faites la bonne chose automatiquement.


Merci. Curieusement, j'ai essayé avant de poster la question et cela a échoué. Peut-être que j'ai manqué une option. Je vais réessayer.
PeanutsMonkey

Éclat. J'oublie toujours cela pour les grandes archives.
zmonteca

3

Vous n'avez pas besoin de jouer à des jeux fous avec tout décompacté. Tar prend entièrement en charge l'extraction d'un sous-ensemble de fichiers dans une archive, comme le montre l'exemple (trivial) suivant:

/tmp $ mkdir tarsrc
/tmp $ cd tarsrc
/tmp/tarsrc $ mkdir a b
/tmp/tarsrc $ touch a/aaa b/bbb
/tmp/tarsrc $ tar cf ../tartest.tar .
/tmp/tarsrc $ cd ..
/tmp $ mkdir tardest
/tmp $ cd tardest
/tmp/tardest $ tar xf ../tartest.tar ./a    
/tmp/tardest $ ls -R
.:
a/

./a:
aaa

L'astuce est que le pathspec doit correspondre exactement au contenu du fichier tar. Donc, quand vous faites un tar tf, si le chemin commence par ./, vous devez le mettre dedans, et s'il ne l'a pas, vous devez le laisser de côté. De plus, si vous souhaitez extraire un sous-sous-sous-sous-sous-sous-sous-sous-sous-chemin, cela finira par N niveaux profondément dans le système de fichiers lorsque vous aurez terminé.


Merci womble. Peut-être que ce n'est pas le bon exemple à utiliser, mais je compare tar à Winzip, WinRAR, etc. appliquer un processus similaire, par exemple sélectionner le fichier que vous souhaitez désarchiver (tar le fait) et sélectionner le chemin vers lequel vous souhaitez extraire (tar ne le fait que si je suis dans le répertoire spécifique).
PeanutsMonkey

Vous voulez alors l' -Coption de tarer.
womble
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.