Réponses:
De man tar
:
-C directory
In c and r mode, this changes the directory before adding the
following files. In x mode, change directories after opening the
archive but before extracting entries from the archive.
c'est-à-dire, tar xC /foo/bar -f /tmp/foo.tar.gz
devrait faire le travail. (sur FreeBSD, mais le tar GNU est fondamentalement le même à cet égard, voir "Changer le répertoire de travail" dans son manuel )
Faire:
(cd foo/bar ; tar xf /tmp/foo.tar.gz )
ferait le travail.
Fondamentalement, ce qui se produit est de générer un nouveau shell (les parenthèses), dans ce sous-shell, changez de répertoire foo/bar
et décompressez le fichier.
Vous pouvez modifier le ;
par un &&
pour être sûr que tout cd
fonctionne bien.
tar -xf ancd.tar.gz my/name/file
vous pouvez donner un nom de fichier avec le ./file
fichier après tar.
tar -xf ancd.tar.gz ./my/name/file
s'il fonctionne, cela signifie que vous avez créé un tar avec ./
. utilisez moins de commande pour voir le contenu tar.
less ...tar.file
J'ai rencontré ce qui semble être un problème similaire et je l'ai résolu.
Le problème était dans la création du fichier plutôt que dans le fichier créé.
Lors de la tentative de tarage et de transfert d'un fichier dans le répertoire A, j'ai fourni le chemin d'accès au fichier d'origine dans la commande tar
tar -cvf MyFile.tar /foo/bar/dir/not/needed/path/*
Ce que j'ai pu résoudre, c'est
cd /foo/bar/dir/not/needed/
tar -cvf /tmp/MyFile.tar path*
Lors du transfert et de l'extraction de l'archive tar, les sous-répertoires requis sont créés.
tar -xvf MyFile.tar