criando um arquivo tar sem incluir o diretório pai

52

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

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

Do programa gráfico eu recebo o nome completo do arquivo que eu quero 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 um arquivo apenas incluindo o selecteddir.

    
por Sujit Maharjan 17.11.2014 / 03:05

4 respostas

63

Você pode usar a opção -C de tar para realizar isso:

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

Na página do 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.
    
por 17.11.2014 / 03:38
6

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

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

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

A segunda maneira é usar a opção --transform , que recebe uma expressão sed e a executa nos nomes dos arquivos. Nota: você terá que escapar de / na expressão sed .

$ tar -cvf temp.tar /home/username/dir1/dir2/selecteddir --transform='s/\/home\/username\/dir1\/dir2\///g'
    
por 17.11.2014 / 03:27
5

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

cd /your/working/directory/ 

Em seguida, use magic * : -)

tar -cvf temp.tar *
    
por 03.02.2018 / 21:45
1

Na verdade, encontrei um problema usando a resposta de Ketan

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

Quando você quer apenas copiar todos os arquivos apenas em dir2, apenas todos os arquivos, então eu saio da idéia:

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

No entanto, quando você não está no diretório dir2, isso causaria um problema, já que * arquivos tar no seu diectroy atual. E eu consertei o problema usando o comando abaixo:

 tar -C /home/username/dir1/dir2 -cvf temp.tar ./
    
por 18.04.2018 / 12:40

Tags