Observo o seguinte comportamento com o tar 1.26 e 1.27.1:
$ mkdir a b a/diffowner
$ sudo mkdir b/diffowner
$ sudo chmod a+w b/diffowner
$ echo foo > a/diffowner/foo
$ tar -C a -cvf test.tar diffowner
diffowner/
diffowner/foo
$ tar -C b -xvf test.tar diffowner
diffowner/
diffowner/foo
tar: diffowner: Cannot utime: Operation not permitted
tar: diffowner: Cannot change mode to rwxr-xr-x: Operation not permitted
tar: Exiting with failure status due to previous errors
Então, o que estou tentando fazer aqui é extrair um arquivo tar em uma estrutura de diretórios existente, onde não sou o proprietário de todos os diretórios envolvidos, mas tenho permissão de gravação em todos eles. Na verdade, eles são compartilhados entre um grupo.
Não me importo com carimbos de data e hora e acredito que as permissões já devem estar corretas. Estou executando isso como um usuário normal, por isso não deve tentar, a --preserve-permissions
menos que seja informado, o que eu não fiz. O que realmente me preocupa é o status de saída: pretendo usá-lo em um script e quero saber se a extração real funcionou bem.
Existe uma opção para o tar que diz para não definir permissões de diretório, nem imediatamente nem atrasadas? Na falta disso, que outras soluções você sugeriria. No momento, estou pensando em extrair para um diretório temporário e usar rsync
para mover coisas para a árvore existente. Mas talvez você conheça uma abordagem menos burra.