Avez-vous utilisé un chemin absolu ou relatif? Devrait être relatif, à part ça, ça a l'air bien. Combien de temps l'avez-vous laissé fonctionner et quelle est la qualité de votre système? Cela prendra au moins plusieurs minutes sur une machine rapide. Potentiellement une heure ou plus? Je fais un test maintenant.
Kevin
Oui, il s’est achevé après environ 1 heure, mais le chemin absolu était faux, vous aviez raison.
Garrett Hall
5
Sous Linux, vous pouvez regarder jusqu'à quel point dans l'archive tarest avec cat /proc/$(pidof tar)/fdinfo/0(adapter la commande si vous avez plus d'un tarprocessus en cours).
Gilles
La partie importante est également pas de barre oblique finale. L'utilisation folder/folder2/ne fonctionnera pas.
Marki555
Réponses:
145
tarstocke les chemins relatifs par défaut . GNU tar le dit même si vous essayez de stocker un chemin absolu:
tar -cf foo.tar /home/foo
tar:Removing leading `/' from member names
Si vous avez besoin d'extraire un dossier particulier, regardez ce qu'il y a dans le fichier tar:
tar -tvf foo.tar
Et notez le nom de fichier exact. Dans le cas de mon foo.tardossier, je pourrais extraire /home/foo/baren disant:
tar -xvf foo.tar home/foo/bar # Note: no leading slash
Donc non, la façon dont vous avez posté n'est pas (nécessairement) la bonne façon de le faire. Vous devez laisser de côté la barre oblique. Si vous voulez simuler des chemins absolus, faites-le d' cd /abord et assurez-vous que vous êtes le superutilisateur. En outre, cela fait la même chose:
tar -C /-xvf foo.tar home/foo/bar # -C is the ‘change directory’ option
Il existe de très bonnes raisons pour tarconvertir les chemins en chemins relatifs. L'une est la possibilité de restaurer une archive dans des endroits autres que sa source d'origine. L'autre est la sécurité. Vous pouvez extraire une archive, vous attendre à ce que ses fichiers apparaissent dans votre répertoire de travail actuel et remplacer à la place les fichiers système (ou votre propre travail) ailleurs par erreur.
Remarque: si vous utilisez l' -Poption tarsera d' archiver des chemins absolus. Il est donc toujours utile de vérifier le contenu des grandes archives avant de les extraire.
--strip-components=Npeut être utile à certains ici.
Acumenus
2
dans mon cas, il était nécessaire d'écrire à la ./foldername/place de foldername, je suppose que c'est parce que, lorsque j'ai créé le goudron, je l'ai créé tar -cvf santi.tar ./*et quand j'ai "répertorié" le goudron, c'est ce qu'il a ditdrwxr-xr-x santi/santi 0 2016-04-11 09:42 ./foldername/
santiago arizti
1
Et à propos .gz?
Peter Krauss
1
@PeterKrauss passe -xvfà -xzvf(en ajoutant l' -zoption) et évidemment foo.tarà foo.tar.gzou quel que soit le nom de votre archive. Il en va de même pour -j(bz2) et sur certaines versions récentes -J(xz). Sinon, un pipeline zcat foo.tar.gz | tar -xvf - …fonctionne également.
Alexios
Et rappelez-vous, si vous êtes fatigué de toutes les sorties verbeuses lors de l'extraction, sautez simplement le vdans tous les exemples. Par exemple, tar -tf foo.taret tar -xf foo.tar ....
tar
est aveccat /proc/$(pidof tar)/fdinfo/0
(adapter la commande si vous avez plus d'untar
processus en cours).folder/folder2/
ne fonctionnera pas.Réponses:
tar
stocke les chemins relatifs par défaut . GNU tar le dit même si vous essayez de stocker un chemin absolu:Si vous avez besoin d'extraire un dossier particulier, regardez ce qu'il y a dans le fichier tar:
Et notez le nom de fichier exact. Dans le cas de mon
foo.tar
dossier, je pourrais extraire/home/foo/bar
en disant:Donc non, la façon dont vous avez posté n'est pas (nécessairement) la bonne façon de le faire. Vous devez laisser de côté la barre oblique. Si vous voulez simuler des chemins absolus, faites-le d'
cd /
abord et assurez-vous que vous êtes le superutilisateur. En outre, cela fait la même chose:Il existe de très bonnes raisons pour
tar
convertir les chemins en chemins relatifs. L'une est la possibilité de restaurer une archive dans des endroits autres que sa source d'origine. L'autre est la sécurité. Vous pouvez extraire une archive, vous attendre à ce que ses fichiers apparaissent dans votre répertoire de travail actuel et remplacer à la place les fichiers système (ou votre propre travail) ailleurs par erreur.Remarque: si vous utilisez l'
-P
optiontar
sera d' archiver des chemins absolus. Il est donc toujours utile de vérifier le contenu des grandes archives avant de les extraire.la source
--strip-components=N
peut être utile à certains ici../foldername/
place defoldername
, je suppose que c'est parce que, lorsque j'ai créé le goudron, je l'ai créétar -cvf santi.tar ./*
et quand j'ai "répertorié" le goudron, c'est ce qu'il a ditdrwxr-xr-x santi/santi 0 2016-04-11 09:42 ./foldername/
.gz
?-xvf
à-xzvf
(en ajoutant l'-z
option) et évidemmentfoo.tar
àfoo.tar.gz
ou quel que soit le nom de votre archive. Il en va de même pour-j
(bz2) et sur certaines versions récentes-J
(xz). Sinon, un pipelinezcat foo.tar.gz | tar -xvf - …
fonctionne également.v
dans tous les exemples. Par exemple,tar -tf foo.tar
ettar -xf foo.tar ...
.