Preserva a propriedade e os direitos do diretório pai ao extrair o arquivo tar

0

Digamos que eu tenha a seguinte estrutura de diretório em algum lugar no meu sistema de arquivos:

a/             dir;    alice:work; default dir rights
  b/           dir;    alice:work; default dir rights
    test.sh    script; alice:work; executable

Em seguida, eu crio um arquivo dessa estrutura de diretórios como bob e listo apenas test.sh como o arquivo que quero adicionar ao arquivo:

sudo tar cjf backup.tar.bz2 a/b/test.sh

Agora eu tenho um arquivo backup.tar.bz2 que deveria ter mantido as propriedades & direitos do arquivo que eu especifiquei no comando (e também espero o mesmo para os diretórios pai a & b!).

Agora, aqui está minha situação. Se eu, ainda bob, tentar extrair o conteúdo do arquivo em um local diferente no meu sistema de arquivos como um teste, esperaria obter a mesma estrutura de arquivos com as mesmas propriedades & direitos como quando eu criei o arquivo com. No entanto, ao usar o seguinte comando

sudo tar xjf backup.tar.bz2

Eu obtenho a seguinte estrutura de arquivos:

a/             dir;    root:root;  default dir rights
  b/           dir;    root:root;  default dir rights
    test.sh    script; alice:work; executable

De alguma forma, a propriedade dos diretórios pai não é mantida ao extrair do arquivo. Parece que ele dá a propriedade desses diretórios a qualquer usuário que tenha extraído o arquivo (no meu caso, raiz, como eu quero preservar a propriedade e os direitos).

Existe uma maneira de dizer ao tar para manter a propriedade dos diretórios pai também? Eu sei que é possível incluí-los no comando tar que cria o arquivo:

sudo tar cjf backup.tar.bz2 a/ a/b/ a/b/test.sh

Mas eu prefiro não fazer isso no caso de existirem outros arquivos ou diretórios em um / a / b / como então eles também farão parte do arquivo.

    
por ThaMe90 06.02.2017 / 13:56

1 resposta

0

Aparentemente, preciso ler as páginas de ajuda com mais frequência. Se eu adicionar o parâmetro --no-recursion ao meu último comando, ele faz exatamente o que eu quero:

sudo tar --no-recursion -cjf backup.tar.bz2 a/ a/b/ a/b/test.sh

Isso produzirá a seguinte estrutura de arquivos após a extração com o comando na pergunta:

a/             dir;    alice:work; default dir rights
  b/           dir;    alice:work; default dir rights
    test.sh    script; alice:work; executable
    
por 06.02.2017 / 14:19