Comment utiliser la commande tar Unix avec un chemin de fichier implicite?

9

J'utilise la tar -xvfcommande et elle prend le chemin explicite. Cependant, le chemin est plein.
Exemple:

tar -xvf 13.2.tar

Il prend le chemin du /mntdossier. Le /dossier est plein.

Comment puis-je tarer le fichier avec le chemin implicite?

Anthon
la source
Vous devez clairement expliquer ce qui se passe exactement, car votre façon actuelle de poser la question fait que même la boule de cristal la plus sophistiquée semble légèrement floue.

Réponses:

2

A généralement tarbesoin de l' option --absolute-namesou --absolute-pathspour 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 début '/'.


Cependant, si vous avez une archive avec le '/'début et que vous ne l'ignorez pas lors de 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 paxque ne gère pas les fichiers compressés, vous devez donc les canaliser après la décompression pax.
Cela se passerait comme ça (en supposant que vous avez une archive gzippée)

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

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

nik
la source
2

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

Par exemple, si le répertoire de travail actuel est /usr/home/bob, les commandes 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 deviez déterminer l'utilisation du disque et localiser un répertoire qui n'est pas plein. Cela peut être fait avec la dfcommande.

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 mountpour vous montrer quels systèmes de fichiers sont montés sur quels périphériques.

Anthon
la source
0

Pour créer un fichier tar avec un chemin relatif,

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

Pour décompresser un tar dans un répertoire spécifique autre que le répertoire de travail actuel, utilisez le commutateur -C (majuscule C).

Si vous souhaitez décompresser un fichier avec des noms de chemin absolus à un point autre que root, vous devrez peut-être jouer avec chroot(1).

robc
la source
0

Je crois que pax fera l'affaire

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

Il devrait vous permettre de remplacer dans un nouveau répertoire racine.

Anthon
la source