Tenho um sistema Linux em um cartão micro-SD que está agindo de forma estranha. Quero ver quais arquivos foram alterados desde que criei uma imagem do cartão a partir de um arquivo de imagem. Então, montei a partição Linux do arquivo de imagem como /mnt e a partição Linux do cartão SD como /mnt2. Agora, tento um diff e obtenho um absurdo como este:
rw@seven:/> sudo diff -qr /mnt/ /mnt2/
diff: /mnt/bin/nc: No such file or directory
diff: /mnt2/bin/nc: No such file or directory
diff: /mnt/bin/netcat: No such file or directory
diff: /mnt2/bin/netcat: No such file or directory
diff: /mnt/bin/systemd: No such file or directory
diff: /mnt2/bin/systemd: No such file or directory
(etc)
Este comando é recomendado por uma série de pesquisas, como https://www.tecmint.com/compare-find-difference-between-two-directories-in-linux/
Eu tentei variações desse tema, mas não encontrei nenhuma que funcionasse. Como posso comparar esses dois sistemas de arquivos para ver o que mudou?
rw@seven:/> diff --version
diff (GNU diffutils) 3.6
Packaged by openSUSE
As mensagens parecem que você
diff
está tentando seguir links simbólicos. Faça umls -l /mnt/bin/nc
ou mesmonamei -l /mnt/bin/nc
e veja para onde ele aponta – ele pode apontar para um caminho absoluto "/usr/bin" que leva ao seu SO host, em vez do relativo "usr/bin". Use--no-dereference
para desabilitar isso.Eu sugeriria tentar algumas ferramentas do projeto Reproducible Builds , já que encontrar diferenças entre duas saídas de compilação é uma parte importante da eliminação delas – especificamente o diffoscope , que compara os dados e metadados de duas árvores de diretórios.