Comment utiliser la command Unix tar avec un path de file implicite?

J'utilise la command tar -xvf et prend le path explicite. Cependant, le path est plein.
Exemple:

 tar -xvf 13.2.tar 

Il prend le path du dossier /mnt . Le dossier / est plein.

Comment puis-je tarer le file avec le path implicite?

En général, tar besoin de l' --absolute-names ou --absolute-paths pour conserver la partie '/' racine lors de la création d'une archive. Même si vous le forcez de cette façon, l'extrait saute également le '/' tête.


Cependant, si vous avez une archive avec le premier '/' et que vous ne le sautez pas pendant l'extraction, la réponse de NoahD devrait fonctionner sous cette forme,

 pax -r -s ',/mnt,/new/path,' -v -f 13.2.tar 

Je pense que pax ne gère pas les files compressés, de sorte que vous devez canaliser après la décompression en pax .
Cela irait comme ça (en supposant que vous avez une archive gzip)

 gunzip -c 13.2.tar.gz | pax -r -s ',/mnt,/new/path,' -v 

J'ai trouvé cette page wiki sur Google tout à l'heure.

La différence entre l'utilisation de canonique (aka explicite) et relative (ce que vous appelez probablement implicite) est si vous utilisez un / au début.

Par exemple, si le directory de travail actuel est /usr/home/bob , les commands suivantes ont exactement le même effet

 tar -xvf foo.tar *
 tar -xvf ./foo.tar *
 tar -xvf ./foo.tar ./*
 tar -xvf /usr/home/bob/foo.tar *
 tar -xvf /usr/home/bob/foo.tar ./*
 tar -xvf /usr/home/bob/foo.tar / usr / home / bob / *

Mais je soupçonne que ce n'est pas vraiment votre question. Il semble plus que vous devez déterminer l'utilisation du disque et localiser un directory qui n'est pas plein. Cela peut être fait avec la command df .

 df -k # space on disk in kilobytes df -m # as above, but in meg df -g # as above, but in gig 

Et vous pouvez utiliser mount pour vous montrer quels filesystems sont montés sur quels périphériques.

Pour créer un file tar avec un path relatif,

 cd /parent/of/dir/to/tar tar cvf subdir.tar subdir 

Pour décompresser un file tar dans un directory spécifique autre que le directory de travail en cours, utilisez le commutateur -C (majuscule C).

Si vous voulez décompresser un file avec des noms de path absolus à un autre endroit que root, vous pourriez avoir besoin de jouer avec chroot(1) .

Je crois que pax fera l'affaire

pax -r -s, / mnt, / gooddir, -f 13.2.tar

Il devrait vous permettre de replace dans un nouveau directory racine.