criando um arquivo tar sem incluir o diretório pai

criando um arquivo tar sem incluir o diretório pai

Estou tentando criar um programa gráfico para meu script.

Dentro do script eu uso tar para criar um arquivo tar.

No programa gráfico, obtenho o nome completo do arquivo que desejo criar um arquivo tar.

tar -cvf temp.tar /home/username/dir1/dir2/selecteddir 

Meu arquivo tar inclui home, nome de usuário, dir1, dir2 e selecteddir, enquanto eu quero que o tar crie o arquivo incluindo apenas o selectdir.

Responder1

Você pode usar a -Copção de tarpara fazer isso:

tar -C /home/username/dir1/dir2 -cvf temp.tar selecteddir

Na página de manual de tar:

-C directory
         In c and r mode, this changes the directory before adding the following files.  
         In x mode, change directories after opening the archive but before extracting 
         entries from the archive.

Responder2

Existem dois métodos que você pode usar para abordar esse problema.

O primeiro, na minha opinião, é mais fácil. Simplesmente cdno diretório diretamente acima daquele que você deseja compactar. Neste caso seria dir2.

$ cd /home/username/dir1/dir2/
$ tar -cvf temp.tar selecteddir

A segunda maneira é usar a opção --transformque pega uma sedexpressão e a executa nos nomes dos arquivos. Nota: você terá que escapar /na sedexpressão.

$ tar -cvf temp.tar /home/username/dir1/dir2/selecteddir --transform='s/\/home\/username\/dir1\/dir2\///g'

Responder3

Primeiro, vá para o diretório de trabalho,

cd /your/working/directory/ 

Então use magia *:-)

tar -cvf temp.tar *

Responder4

Para evitar esse ponto dir, você pode removê-lo após o fato:

tar czC /path/to/dir . --transform='s,^\./,,' >| foo.tgz

Isso criará um arquivo com apenas oconteúdode /path/to/dir.

informação relacionada