¿Hay bdiff (1) en Linux?

Hay un bdiff(1) en Solaris, que le permite diff(1) files con un tamaño mayor que su tamaño de RAM ( http://docs.oracle.com/cd/E19683-01/806-7612/files-23). /index.html ).

¿Hay algo así en Linux? Intenté search en Google pero no encuentro qué package tiene bdiff en Ubuntu.

bdiff parece estar disponible en Linux (al less como parte de Heirloom Toolchest ).

diff

Sin embargo, probablemente usaría diff antiguo regular con este interruptor:

 diff --speed-large-files bigfileA bigfileB 

¿Por qué no funciona?

Ver el comentario de @EvanTeitelman, --speed-large-files no afecta cómo se cargan los files en la memory.

Se puede demostrar / confirmar que no funciona con el siguiente command:

 fallocate -l 10G testa; fallocate -l 10G testb && \ diff --speed-large-files -a testa testb 

bsdiff

Es difícil confirmar esto, pero encontré una herramienta llamada bsdiff que deriva de bdiff . Confirmé que esta herramienta está en Ubuntu, simplemente apt-get install bsdiff .

¿Por qué podría funcionar?

De nuevo, gracias @EvanTeitelman en los comentarios, el bsdiff anterior es una herramienta diff para files binarys. bsdiff es una herramienta de diferencia binaria y puede tratar con files de gran tamaño. No está claro qué tan grande. Vea los siguientes enlaces a un hilo que discute su uso.

  • bdiff / bsdiff: mediciones integrales de performance para files grandes [largo, pero buenos charts adjuntos]

riff

Creo que también podrías usar rdiff para hacer esto. Rdiff es capaz de manejar files muy grandes.

  1. Crea una firma de un file:

     rdiff signature A sigs.txt 
  2. Utilice el file de firmas generado sigs.txt y el otro file grande B para crear el delta:

     rdiff delta sigs.txt B deltaAB.txt 
  3. Delta contiene toda la información que necesita para recrear el file B cuando solo tiene A y el delta deltaAB.txt.

    Para recrear B, ejecuta:

     rdiff patch A deltaAB.txt B 

Por qué funciona?

Encontré esta publicación de blog titulada: Una mejor diferencia o qué hacer cuando GNU diff se ejecuta sin memory ("diff: memory exhausted") , que informa que un file de 4.5 GB solo consume ~ 66MB de RAM.

lfhex

lfhex es una aplicación para ver y editar files en text hexadecimal, octal, binary o ascii. La principal fortaleza de lfhex es su capacidad para trabajar con files mucho más grandes que la memory del sistema. Sin embargo, es una herramienta de GUI.

captura de pantalla

ss of lfhex]! [ss of lfhex

Referencias

  • Comparación de herramientas diff – wikipedia