Copie apenas permissões e propriedade de um arquivo tar para outro

5

Eu tenho dois arquivos tar que são basicamente backups da minha pasta / data no android. O problema é que as permissões e a propriedade dos arquivos dentro do backup mais recente estão bagunçados. No entanto, as permissões no tar mais antigo são perfeitas.

Eu quero uma maneira de ler as permissões do old.tar e copiar as alterações para latest.tar.

Eu tentei extrair arquivos para o meu próprio sistema usando o sinalizador -p e --same-owner, mas a propriedade muda para root em vez de system porque meu computador não tem um usuário ou grupo chamado system mas meu android telefone faz. Eu pensei em extrair os arquivos e escrever um script que usa stat e grep para ler permissões e propriedade e define as permissões e propriedades dos arquivos em latest.tar. Mas parece que não funciona assim. Alguém pode me dar alguma ajuda sobre este assunto.

    
por Deepak Mittal 23.10.2011 / 14:49

2 respostas

7

Não tenho certeza se Tar consegue fazer isso. Deve ser possível, no entanto, descompactar ambos os backups (para diretórios diferentes), então use algo ao longo das linhas de

cd /mnt/oldbackup ; 
find ./ -exec getfacl {} | setfacl /mnt/newbackup/{} 

como a saída de getfacl pode ser usada como stdin para setfacl de acordo com a manpage.

    
por 23.10.2011 / 15:52
2

Não há como colocar novos metadados em um arquivo tar, mas existe uma maneira de extrair apenas os metadados de um arquivo tar para o sistema de arquivos. Basta ligar:

star -xp -meta < archive.tar

Isso não criará novos arquivos ou substituirá o conteúdo do arquivo, mas apenas restaurará os metadados do arquivo para os arquivos no sistema de arquivos local. Você provavelmente precisará de -U em adição (veja a man page) para "fazer isso mesmo que o arquivo no arquivo não seja mais novo que o arquivo no sistema de arquivos".

    
por 27.08.2015 / 17:02