Tar - Remover prefixo comum ao criar arquivo

1

Estou tentando aumentar o conteúdo de um sistema de arquivos raiz, localizado em $rootfs . O problema é que, quando tento tar -c $rootfs > $dest , os diretórios entre meu diretório atual e o sistema de arquivos real permanecem. Então, em vez de etc/fstab , eu tenho fun/rootfs/path/etc/fstab quando rootfs=fun/rootfs/path , para cada arquivo.

Eu sei sobre --strip , mas o problema é que $rootfs é uma variável de caminho relativo, portanto, não sei quantos diretórios estão entre o sistema de arquivos e meu diretório atual. Não posso cd por um motivo semelhante; $dest é uma variável de caminho relativo e tenho que ficar no diretório atual para criar o arquivo no local adequado.

Existe uma maneira de ignorar o caminho rootfs ao criar o arquivo?

    
por Tanaki 13.08.2013 / 00:06

2 respostas

2

Você pode gerar a listagem de arquivos relativos ao caminho $rootfs e usar -C $rootfs -T <file-of-filenames> para criar o arquivo. Você não pode usar um curinga para gerar a lista de arquivos na linha de comando tar, pois isso não será concluído corretamente. Você poderia usar algo como find ou ls para fazer isso.

    
por 13.08.2013 / 00:26
1

Não sei se entendi a pergunta, mas e

(cd "$rootfs"; tar -c .) > "$dest"

para que tar seja executado no diretório $rootfs , mas $dest é criado em relação ao diretório atual.

    
por 13.08.2013 / 01:40