Usando Tar, como preservar as permissões de pastas pai quando administrado apenas um arquivo específico?

0

Digamos que eu tenha uma pasta com algumas permissões sofisticadas:

mkdir abc
mkdir abc/def
chmod 777 abc

Agora quero criar um backup:

tar -cpzvf test.tar.gz abc/def/

Agora vamos remover o abc / e restaurá-lo do arquivo:

rm -rf abc/
tar -xpzvf test.tar.gz

abc/ não terá mais as permissões originais:

find abc -printf "%m:%f\n"
755:abc

Eu sei que se eu criasse o arquivo tar fornecendo abc / (não abc / def /) como parâmetro, ele restauraria as permissões de ambas as pastas. No entanto, no meu caso, eu preciso fornecer explicitamente o parâmetro abc / def / as. Existe uma maneira de alcançar o mesmo resultado?

    
por flxapps 07.08.2018 / 12:39

3 respostas

1

Para acompanhar a resposta do @ schily, para adicionar o diretório de nível superior abc ao arquivo, sem adicionar nenhum subdiretório além de def , com o GNU tar , você faria:

tar -zcf file.tgz --no-recursion abc --recursion abc/def

Com o bsdtar ou pax da libarchive, você sempre pode reverter para ter find gerando a lista exata de arquivos que deseja:

(printf 'abc
tar -zcf file.tgz --no-recursion abc --recursion abc/def
'; find abc/def -print0) | bsdtar -zcnf file.tgz --null -T -
    
por 07.08.2018 / 14:56
0

Sua umask é aplicada. Experimente:

umask 000; tar -xpzvf test.tar.gz

    
por 07.08.2018 / 13:49
0

Seus problemas são que o diretório abc não está no arquivo e, portanto, não pode ser restaurado a partir do arquivo morto.

Como é necessário, mas está faltando, tar cria com permissões padrão nas suas credenciais.

Se você quiser restaurar as permissões de abc , precisará colocá-las no arquivo.

    
por 07.08.2018 / 14:18