Je suis nouveau dans le monde de Linux et je semble avoir rencontré une trottoir. Je sais que je peux extraire une archive spécifique à l'aide de la commande tar xvfz archivename.tar.gz sampledir/
Cependant, comment puis-je extraire sampledir/
à testdir/
plutôt que le chemin que l'archive est par ex. L'archive est dans le chemin /tmp/archivename.tar.gz
et je voudrais extraire sampledir
à testdir
qui est dans le chemin /tmp/testdir
.
Ce que vous cherchez est le -C
Option:
$ man tar
<snip>
-C, --directory DIR
change to directory DIR
Utilisation, par votre exemple:
$ tar xvzf archivename.tar.gz -C /tmp/testdir/ sampledir/
En outre, vous voudrez peut-être savoir que les versions modernes de tar
ne nécessitent pas le drapeau z
pour décompresser des fichiers gzippés; Ils remarqueront que c'est un .gz
et faire la bonne chose automatiquement.
Vous n'avez pas besoin de jouer à des jeux fous avec tout endommage. TAR prend pleinement en charge l'extraction d'un sous-ensemble des fichiers dans une archive, comme indiqué dans l'exemple suivant (trivial):
/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 tarfil. Alors quand tu fais un tar tf
, si le chemin commence par ./
, vous devez mettre cela dans, et si cela ne l'a pas, vous devez le laisser sortir. De plus, si vous souhaitez extraire un sous-sous-sous-sous-sous-sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Sous-Path.