web-dev-qa-db-fra.com

Comment changer le nom du fichier lorsque vous ajoutez un fichier dans un fichier tar

Je crée un fichier tar en exécutant le script. Le script est dans le dossier A. Je veux ajouter le fichier à tar. Le fichier d'entrée et le fichier tar se trouvent tous deux dans le dossier B. Lorsque j'ajoute un fichier à un fichier tar existant, je donne le chemin d'accès absolu au fichier tel qu'il se trouve dans un autre dossier. Lorsqu'il doit être ajouté à tar, il doit être renommé sous le nom de mon choix.

Exemple:

  • Emplacement du script: /root/test/A
  • Emplacement du fichier que je veux ajouter à tar: /root/myFolder/B/foo
  • Emplacement du fichier Tar: /root/myFolder/B/archive.tar

Lors de l'ajout de /root/myFolder/B/foo à archive.tar, il devrait être renommé en bar.

J'essaie cette commande mais sans succès:

tar --transform='flags=r;s|/root/myFolder/B/foo|bar|' -cf archive.tar /root/myFolder/B/foo

Il ajoute un fichier tel quel avec le même nom /root/myFolder/B/foo.

2
nilesh_101

La cause est tar en supprimant automatiquement les / principaux:

tar: Suppression du `/ 'du premier nom des membres

Il semble qu'il soit supprimé avant l'exécution de regex. Vous devez donc également supprimer le / initial du modèle:

tar --transform='flags=r;s|root/myFolder/B/foo|bar|' -cf archive.tar /root/myFolder/B/foo

ou utilisez le commutateur -P

 -P, --absolute-names
       don't strip leading '/'s from file names

Sinon, vous pouvez basculer vers le dossier de fichiers avec -C, vous n'avez pas besoin de remplacer le chemin:

tar --transform='flags=r;s|foo|bar|' -cf archive.tar -C /root/myFolder/B/ foo
3
pLumo