Je lance un script PHP qui me fournit les chemins absolus des fichiers que je veux créer. C’est la syntaxe que j’ai:
tar -cf tarname.tar -C /www/path/path/file1.txt /www/path/path2/path3/file2.xls
Lorsque je le décompresse, il crée le chemin absolu vers les fichiers. Comment puis-je juste /path
avec tout ce qui est sous lui pour montrer?
Si vous souhaitez supprimer les n premiers composants principaux du nom de fichier, vous avez besoin ssortingp-components
. Donc, dans votre cas, sur l’extraction, faire
tar xvf tarname.tar --ssortingp-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 --ssortingp-path
pour cette opération.
Vous utilisez incorrectement 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
do:
tar -cf tarname.tar -C /www/path .
Vous pouvez utiliser le commutateur -C
plusieurs fois.
Pour moi, ce qui suit fonctionne le mieux:
tar xvf some.tar --transform 's?.*/??g'
--transform
argument --transform
est une expression rationnelle de remplacement pour sed, à laquelle chaque chemin de fichier extrait est alimenté. Contrairement à --ssortingp-components
, il supprimera toutes les informations de chemin, pas seulement le nombre fixe de composants.
Si vous ne savez pas combien de composants se trouvent dans le chemin, vous pouvez essayer ceci:
DIR_TO_PACK=/www/path/ cd $DIR_TO_PACK/.. tar -cf tarname.tar $(basename $DIR_TO_PACK)