Uma das maneiras mais comuns de determinar se dois arquivos são idênticos (supondo que seus tamanhos correspondam) é usar um programa para criar um " hash " (essencialmente uma impressão digital) de um arquivo. Os mais comuns são md5sum
e sha1sum
.
Por exemplo:
$ md5sum file1 file2
e0e7485b678a538c2815132de7f9e878 file1
4a14aace18d472709ccae3910af55955 file2
Se você tiver muitos arquivos que precisa verificar, por exemplo, se estiver transferindo um diretório cheio de arquivos de um sistema para outro, poderá redirecionar a saída do sistema original para um arquivo, então md5sum
/ sha1sum
poderá usá-lo automaticamente para informar você quais arquivos são diferentes:
$ md5sum file1 file2 > MD5SUMS
... copy file1, file2, MD5SUMS across
$ md5sum --check MD5SUMS
file1: OK
file2: OK
Encontrei uma solução - a ferramenta cmp que vem com a maioria dos tipos de Linux.
fonte
Se eu quiser apenas saber se são iguais, prefiro usar sha1sum, se disponível, ou md5 como substituto.
Se eu quiser saber o quão diferentes eles são, ou onde eles são diferentes, uma coisa que funciona é acioná-los através do od ('octal dump', que geralmente tem uma opção hexadecimal) para criar arquivos temporários e depois diferenciá-los.
fonte
Acabei de executar alguns benchmarks em um arquivo de mais de 100 MB. O diff foi o mais rápido, enquanto o cmp ficou em segundo lugar, e o md5sum ficou em último.
Voltei a executar o exercício com um arquivo de 4,3 GB e tive que excluir e recriar o arquivo com dd, pois o cache da RAM estava afetando bastante os resultados.
Com base nesses resultados, eu recomendaria mover os arquivos para uma montagem RAMFS e continuar com o diff.
fonte