Como alterar o nome do arquivo quando você adiciona um arquivo ao arquivo tar

1

Estou criando um arquivo tar executando o script. O script está na pasta A. Quero anexar o arquivo ao tar. O arquivo de entrada e o arquivo tar estão na pasta B. Quando estou anexando o arquivo ao tar existente, dou um caminho de arquivo absoluto como em outra pasta e quando ele for anexado ao tar, ele deve ser renomeado para o nome desejado.

Exemplo:

  • Localização do script: /root/test/A
  • Localização do arquivo que quero adicionar no tar: /root/myFolder/B/foo
  • Localização do arquivo Tar: /root/myFolder/B/archive.tar

Ao adicionar /root/myFolder/B/foo a archive.tar , ele deve ser renomeado para bar .

Estou tentando esse comando, mas não tenho sucesso:

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

Está adicionando o arquivo como está com o mesmo nome /root/myFolder/B/foo .

    
por nilesh_101 21.02.2018 / 16:23

1 resposta

3

A causa é tar removendo automaticamente o líder / :

  

tar: Removendo os principais '/' dos nomes dos membros

Parece que é removido antes da execução da regex. Então, você também precisa remover o / inicial no padrão:

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

ou use -P switch

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

Como alternativa, você pode alternar para a pasta de arquivos com -C , e não é necessário substituir o caminho:

tar --transform='flags=r;s|foo|bar|' -cf archive.tar -C /root/myFolder/B/ foo
    
por RoVo 21.02.2018 / 17:17