¿Cuál es la forma más fácil (usando una herramienta gráfica o línea de comando en Ubuntu Linux) para saber si dos archivos binarios son iguales o no (excepto las marcas de tiempo)? No necesito realmente extraer la diferencia. Solo necesito saber si son iguales o no.
186
cmp
dice específicamente que hace una comparación byte por byte, por lo que ese es mi valor predeterminado para 2 archivos binarios.diff
es línea por línea y le dará la misma respuesta Sí / No pero, por supuesto, no el mismo volcado a la secuencia de salida estándar. Si las líneas son largas porque quizás no son archivos de texto, entonces preferiríacmp
.diff
tiene la ventaja de que puede especificar una comparación de directorios y la-r
recursividad, comparando así múltiples archivos en un solo comando.Respuestas:
El Unix estándar
diff
mostrará si los archivos son iguales o no:Si no hay salida del comando, significa que los archivos no tienen diferencias.
fuente
diff: memory exhausted
al comparar dos archivos 13G.diff
te dice que son moscas "binarias". Dado que todos los archivos pueden considerarse binarios, es una afirmación extraña.diff -s 1.bin 2.bin
odiff --report-identical-files 1.bin 2.bin
Esto muestraFiles 1.bin and 2.bin are identical
Usa el
cmp
comando. Esto saldrá limpiamente si son binarios iguales, o imprimirá donde ocurre la primera diferencia y saldrá.fuente
cmp
es más eficiente quediff
. Entonces preferiría esto.cmp $1 $2 && echo "identical" || echo "different"
cmp
tiene modo "silencioso":-s, --quiet, --silent
-suppress all normal output
. Todavía no lo hice pero creo que se detendrá en la primera diferencia si hay una.Encontré que Visual Binary Diff era lo que estaba buscando, disponible en:
Ubuntu:
Arch Linux:
Mac OS X a través de MacPorts :
Mac OS X a través de Homebrew:
fuente
Use sha1 para generar suma de comprobación:
fuente
diff
ycmp
ambos le dirán si difieren sin ningún esfuerzo adicional.sha1sum
lugar desha1
?Terminé usando hexdump para convertir los archivos binarios a su representación hexadecimal y luego los abrí en meld / kompare / cualquier otra herramienta diff. A diferencia de ti, buscaba las diferencias en los archivos.
fuente
hexdump -v -e '/1 "%02x\n"'
si desea diferenciar y ver exactamente qué bytes se insertaron o eliminaron.Puede usar la función hash MD5 para verificar si dos archivos son iguales, con esto no puede ver las diferencias en un nivel bajo, pero es una forma rápida de comparar dos archivos.
Si los dos hashes MD5 (la salida del comando) son iguales, entonces, los dos archivos no son diferentes.
fuente
Use el comando cmp. Consulte Archivos binarios y Forzar comparaciones de texto para obtener más información.
fuente
-b
no compara archivos en "modo binario". En realidad, "con GNUcmp
, también puede usar la opción-b
o--print-bytes
para mostrar la representación ASCII de esos bytes". Esto es exactamente lo que encontré usando la URL del manual que ha proporcionado.cmp
Es inherentemente una comparación binaria en mi opinión. La-b
opción simplemente imprime el primer byte que es diferente.Para encontrar defectos de memoria flash, tuve que escribir este script que muestra todos los bloques de 1K que contienen diferencias (no solo el primero como lo
cmp -b
hace)Salida:
Descargo de responsabilidad: pirateé el guión en 5 min. No admite argumentos de línea de comandos ni admite espacios en los nombres de archivo
fuente
sh -x
para depuraciónreadlink -f $(which sh)
/bin/dash
. Actualmente creando pegar en pastebin.Diferenciar con las siguientes opciones haría una comparación binaria para verificar si los archivos son diferentes y generaría si los archivos también son los mismos:
Si está comparando dos archivos con el mismo nombre en diferentes directorios, puede usar este formulario en su lugar:
OS X El Capitan
fuente
Prueba diff -s
Respuesta corta: corre
diff
con el-s
interruptor.Respuesta larga: sigue leyendo.
Aquí hay un ejemplo. Comencemos creando dos archivos con contenido binario aleatorio:
Ahora hagamos una copia del primer archivo:
Ahora test1.bin y test2.bin deberían ser diferentes:
... y test1.bin y copyoftest1.bin deben ser idénticos:
¡Pero espera! ¿Por qué no hay salida?
La respuesta es: esto es por diseño. No hay salida en archivos idénticos.
Pero hay diferentes códigos de error:
Ahora, afortunadamente, no tiene que verificar los códigos de error cada vez porque puede usar el interruptor
-s
(o--report-identical-files
) para hacer que diff sea más detallado:fuente
Prueba
radiff2
cuál es parte delradare2
desensamblador. Por ejemplo, con este comando:Obtiene una salida de dos columnas con bastante formato donde se resaltan las diferencias.
fuente
Mis favoritos usando xxd hex-dumper del paquete vim:
1) usando vimdiff (parte de vim)
2) usando diff
fuente
Si el md5sum es igual, los binarios son iguales
P.ej
fuente
diff
, sobre la cual no hay razón para preferirlo.Hay una forma relativamente simple de verificar si dos archivos binarios son iguales.
Si utiliza la entrada / salida de archivos en un lenguaje de programación; puede almacenar cada bit de ambos archivos binarios en sus propias matrices.
En este punto, la verificación es tan simple como:
fuente