Quel est le moyen le plus simple (en utilisant un outil graphique ou une ligne de commande sur Ubuntu Linux) pour savoir si deux fichiers binaires sont identiques ou non (sauf pour les horodatages)? Je n'ai pas besoin d'extraire réellement la différence. J'ai juste besoin de savoir s'ils sont identiques ou non.
186
cmp
dit spécifiquement qu'elle fait une comparaison octet par octet, c'est donc ma valeur par défaut pour 2 fichiers binaires.diff
est ligne par ligne et vous donnera la même réponse Oui / Non mais bien sûr pas le même vidage vers le flux sortant standard. Si les lignes sont longues parce que ce ne sont peut-être pas des fichiers texte, je préféreraiscmp
.diff
présente l'avantage de pouvoir spécifier une comparaison de répertoires et la-r
récursivité pour comparer ainsi plusieurs fichiers en une seule commande.Réponses:
Unix standard
diff
montrera si les fichiers sont identiques ou non:S'il n'y a pas de sortie de la commande, cela signifie que les fichiers n'ont pas de différences.
la source
diff: memory exhausted
en comparant deux fichiers 13G.diff
vous dit que ce sont des fies "binaires". Puisque tous les fichiers peuvent être considérés comme binaires, c'est une affirmation étrange.diff -s 1.bin 2.bin
oudiff --report-identical-files 1.bin 2.bin
Cela montreFiles 1.bin and 2.bin are identical
Utilisez la
cmp
commande. Cela sortira proprement si elles sont égales en binaire, ou cela affichera où la première différence se produit et quittera.la source
cmp
est plus efficace quediff
. Alors je préfère ça.cmp $1 $2 && echo "identical" || echo "different"
cmp
a le mode "silencieux":-s, --quiet, --silent
-suppress all normal output
. Je n'ai pas encore testé mais je pense que ça s'arrêtera à la première différence s'il y en a une.J'ai trouvé que Visual Binary Diff était ce que je recherchais, disponible sur:
Ubuntu:
Arch Linux:
Mac OS X via MacPorts :
Mac OS X via Homebrew:
la source
Utilisez sha1 pour générer la somme de contrôle:
la source
diff
etcmp
vous diront tous les deux s'ils diffèrent sans effort supplémentaire.sha1sum
place desha1
?J'ai fini par utiliser hexdump pour convertir les fichiers binaires en une représentation hexadécimale, puis je les ai ouverts dans meld / kompare / tout autre outil de diff. Contrairement à vous, j'étais après les différences dans les fichiers.
la source
hexdump -v -e '/1 "%02x\n"'
si vous souhaitez effectuer des différences et voir exactement quels octets ont été insérés ou supprimés.Vous pouvez utiliser la fonction de hachage MD5 pour vérifier si deux fichiers sont identiques, avec cela vous ne pouvez pas voir les différences à un bas niveau, mais c'est un moyen rapide de comparer deux fichiers.
Si les deux hachages MD5 (la sortie de la commande) sont identiques, les deux fichiers ne sont pas différents.
la source
Utilisez la commande cmp. Référez-vous aux fichiers binaires et forcer les comparaisons de texte pour plus d'informations.
la source
-b
ne compare pas les fichiers en "mode binaire". En fait, "Avec GNUcmp
, vous pouvez également utiliser l' option-b
ou--print-bytes
pour afficher la représentation ASCII de ces octets.". C'est exactement ce que j'ai trouvé en utilisant l'URL vers le manuel que vous avez fourni.cmp
est intrinsèquement une comparaison binaire à mon avis. L'-b
option imprime simplement le premier octet différent.Pour trouver des défauts de mémoire flash, j'ai dû écrire ce script qui montre tous les blocs de 1K qui contiennent des différences (pas seulement le premier comme le
cmp -b
fait)Production:
Avertissement: j'ai piraté le script en 5 min. Il ne prend pas en charge les arguments de ligne de commande ni les espaces dans les noms de fichiers
la source
sh -x
pour le débogagereadlink -f $(which sh)
/bin/dash
. En cours de création de coller sur pastebin.Une différence avec les options suivantes ferait une comparaison binaire pour vérifier simplement si les fichiers sont différents du tout et cela afficherait si les fichiers sont également identiques:
Si vous comparez deux fichiers portant le même nom dans des répertoires différents, vous pouvez utiliser ce formulaire à la place:
OS X El Capitan
la source
Essayez diff -s
Réponse courte: exécutez
diff
avec le-s
commutateur.Réponse longue: lisez ci-dessous.
Voici un exemple. Commençons par créer deux fichiers avec un contenu binaire aléatoire:
Maintenant, faisons une copie du premier fichier:
Maintenant, test1.bin et test2.bin devraient être différents:
... et test1.bin et copyoftest1.bin doivent être identiques:
Mais attendez! Pourquoi n'y a-t-il pas de sortie?!?
La réponse est: c'est par conception. Il n'y a pas de sortie sur des fichiers identiques.
Mais il existe différents codes d'erreur:
Maintenant, heureusement, vous n'avez pas à vérifier les codes d'erreur à chaque fois, car vous pouvez simplement utiliser le commutateur
-s
(ou--report-identical-files
) pour rendre diff plus détaillé:la source
Essayez
radiff2
ce qui fait partie duradare2
désassembleur. Par exemple, avec cette commande:Vous obtenez une sortie de deux colonnes assez formatée où les différences sont mises en évidence.
la source
Mes préférés utilisant xxd hex-dumper du package vim:
1) Utilisation de vimdiff (partie de vim)
2) en utilisant diff
la source
Si la somme md5 est la même, les binaires sont identiques
Par exemple
la source
diff
, sur laquelle il n'y a aucune raison de la préférer.Il existe un moyen relativement simple de vérifier si deux fichiers binaires sont identiques.
Si vous utilisez des entrées / sorties de fichiers dans un langage de programmation; vous pouvez stocker chaque bit des deux fichiers binaires dans leurs propres tableaux.
À ce stade, la vérification est aussi simple que:
la source