40 votes

Comment exclure les chemins absolus pour Tar?

J'exécute un script PHP qui me donne les chemins absolus des fichiers que je veux tarer. Voici la syntaxe que j'ai:

 tar -cf tarname.tar -C /www/path/path/file1.txt /www/path/path2/path3/file2.xls
 

quand je le décompresse, je crée le chemin absolu vers les fichiers. Comment puis-je obtenir seulement /path avec tout ce qui se trouve en dessous pour s'afficher?

53voto

Johnny Baloney Points 569

Vous n'utilisez pas correctement le commutateur -C , qui est utilisé pour changer de répertoire. Donc, ce que vous devez faire, c'est:

 tar -cf tarname.tar -C /www/path path/file1.txt path2/path3/file2.xls
 

ou si vous voulez tout emballer sous /www/path faites:

 tar -cf tarname.tar -C /www/path .
 

Vous pouvez utiliser le commutateur -C plusieurs fois.

53voto

ire_and_curses Points 32802

Si vous souhaitez supprimer les n premiers composants principaux du nom de fichier, vous avez besoin de strip-components . Donc dans votre cas, lors de l'extraction, faites

 tar xvf tarname.tar --strip-components=2
 

La page de manuel contient une liste des nombreuses options de tar , y compris celle-ci. Certaines versions antérieures de tar utilisent à la place --strip-path pour cette opération.

2voto

Andreas Baumgart Points 611

Si vous ne savez pas combien de composants se trouvent sur le chemin, vous pouvez essayer ceci:

 DIR_TO_PACK=/www/path/
cd $DIR_TO_PACK/..
tar -cf tarname.tar $(basename $DIR_TO_PACK)
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X