Parece que bdiff está disponible en Linux (al menos como parte de Heirloom Toolchest ).
diff
Sin embargo, probablemente solo usaría el viejo diff regular con este interruptor:
diff --speed-large-files bigfileA bigfileB
¿Por qué no funciona?
Ver comentario de @EvanTeitelman, --speed-large-files
no afecta cómo se cargan los archivos en la memoria.
Se puede demostrar / confirmar que no funciona con el siguiente comando:
fallocate -l 10G testa; fallocate -l 10G testb && \
diff --speed-large-files -a testa testb
bsdiff
Difícil de confirmar esto, pero encontré una herramienta llamada bsdiff
que se deriva de bdiff
. He confirmado que esta herramienta está en Ubuntu, simplemente apt-get install bsdiff
.
¿Por qué podría funcionar?
Nuevamente, gracias a @EvanTeitelman en los comentarios, lo bsdiff
anterior es una herramienta de diferencias para archivos binarios. bsdiff
es una herramienta de diferencia binaria y puede manejar archivos grandes. No está claro qué tan grande. Vea los siguientes enlaces a un hilo que discuten su uso.
rdiff
Creo que también podrías usar rdiff para hacer esto. Rdiff es capaz de manejar archivos muy grandes.
Crea una firma de un archivo:
rdiff signature A sigs.txt
Utilice el archivo de firma generado sigs.txt y el otro archivo grande B para crear el delta:
rdiff delta sigs.txt B deltaAB.txt
Delta contiene toda la información que necesita para volver a crear el archivo B cuando solo tiene A y el archivo delta deltaAB.txt.
Para recrear B, ejecute:
rdiff patch A deltaAB.txt B
Por que funciona
Encontré esta publicación del blog titulada: Una mejor diferencia o qué hacer cuando GNU diff se queda sin memoria ("diff: memoria agotada") , que informa que un rdiff de archivos de 4.5GB solo consumió ~ 66MB de RAM.
Iffex
lfhex es una aplicación para ver y editar archivos en texto hexadecimal, octal, binario o ascii. La principal fortaleza de lfhex es su capacidad para trabajar con archivos mucho más grandes que la memoria del sistema. Sin embargo, es una herramienta GUI.
captura de pantalla
Referencias