Embalagem com tar

4

Estou tentando empacotar os arquivos:

file1
folder2/hello
folder2/world
file3

em um arquivo tar, para que eles sejam encapsulados em uma pasta personalizada, de modo que tar -tvf archive.tar apareça como:

mycustomfolder/file1
mycustomfolder/folder2/hello
mycustomfolder/folder2/world
mycustomfolder/file3

Atualmente, para resolver isso, eu sou:

  • Criando um arquivo (x) de file1 , folder2 e file3 .
  • Criando uma pasta mycustomfolder .
  • Extraia o arquivo (x) em mycustomfolder
  • Crie um arquivo (y) em mycustomfolder

Não posso deixar de pensar que isso pode ser um passo disso ou de uma maneira melhor?

    
por whoami 24.11.2013 / 14:05

1 resposta

7

Se você deseja que o arquivo seja extraído em seu próprio diretório - que geralmente é melhor, já que os que não podem fazer uma bagunça - apenas crie o diretório, então mova / copie a árvore de conteúdo para ele, assim você tem, como no seu segundo exemplo:

mycustomfolder/file1
mycustomfolder/folder2/hello
mycustomfolder/folder2/world
mycustomfolder/file3

Então tar -cvf myarchive.tar mycustomfolder . Para extrair, tar -xvf myarchive.tar .

Se você não quiser criar o diretório primeiro, poderá transformar os nomes dos arquivos e acrescentar um prefixo de diretório:

tar --xform="s%^%mycustomfolder/%" -cvf myarchive.tar file1 folder2 file3

A transformação (consulte man tar ) usa a sintaxe sed ; Eu usei % em vez de / para o divisor porque s/^/mycustomerfolder\// cria uma pasta chamada mycustomfolder\ (== comportamento ímpar IMO), mas s/^/mycustomfolder// é (propriamente) uma "expressão de transformação inválida".

    
por 24.11.2013 / 14:50

Tags