14 votes

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

Je suis nouveau dans le monde de Linux et il semble que je me sois heurté à une pierre d'achoppement. Je sais que je peux extraire une archive spécifique en utilisant la commande tar xvfz archivename.tar.gz sampledir/ Cependant, comment puis-je extraire sampledir/ a testdir/ plutôt que le chemin dans lequel se trouve l'archive, par exemple, l'archive se trouve actuellement dans le chemin /tmp/archivename.tar.gz et je voudrais extraire sampledir a testdir qui se trouve sur le chemin /tmp/testdir .

19voto

Handyman5 Points 5087

Ce que vous recherchez, c'est le -C option :

$ man tar
<snip>

-C, --directory DIR
       change to directory DIR

Utilisation, selon votre exemple :

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

Par ailleurs, vous serez peut-être intéressé de savoir que les versions modernes de tar n'ont pas besoin de la z pour décompresser les fichiers gzippés ; ils remarqueront qu'il s'agit d'un indicateur .gz et Do The Right Thing automatiquement.

3voto

Ryan Sampson Points 2898

Vous n'avez pas besoin de jouer à des jeux insensés pour tout désarticuler. Tar permet d'extraire uniquement un sous-ensemble des fichiers d'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 chemin d'accès doit correspondre exactement au contenu du fichier tar. Ainsi, lorsque vous faites un tar tf si le chemin commence par ./ il faut l'insérer, et s'il ne l'a pas, il faut le laisser de côté. De plus, si vous voulez extraire un sous-sous-sous-sous-sous-sous-sous-chemin, il se retrouvera à N niveaux de profondeur dans le système de fichiers lorsque vous aurez terminé.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X