Como comparar atributos de dois arquivos no Linux ext4

4

cmp (1), é claro, me dirá se o conteúdo de dois arquivos é idêntico, mas para testar a restauração a partir de backups, também queria comparar os atributos de arquivo relevantes (!).

Então, se eu fiz algo simples como

mv foo.bar foo.bar.save
deja-dup --restore foo.bar # or some other backup tool

como faço para comparar os atributos de foo.bar e foo.bar.save e testar a igualdade suficiente em um script de shell (ou similar). Eu posso fazer

stat foo.bar{,.save}

e inspecione manualmente a saída lembrando de ignorar inode, atime e ctime (assim como a contagem de links, por algum motivo?), mas isso é propenso a erros. Existe uma ferramenta cmp-with-attributes em algum lugar que inclua o SELinux e outros atributos? Deve funcionar nos sistemas de arquivos Fedora e ext4; idealmente em "todos" sistemas. Preciso hackear algo em perl?

(Não adianta ter backups se você não testar se eles funcionam direito.)

    
por Allan Engelhardt 29.08.2012 / 08:51

1 resposta

6

getallattr() {
  lsattr -d -- "$1" | cut -d ' ' -f1
  getfattr -dm- -- "$1" | tail -n +2 | sort
  stat -c '%u %g %a %s %x %y' -- "$1"
}

Para recuperar todos os atributos (pelo menos aqueles que podem ser facilmente restaurados). Você também pode incluir o md5sum lá.

E então faça

diff <(getallattr file1) <(getallattr file2)

(sintaxe do ksh93, zsh, bash).

    
por 29.08.2012 / 11:38