2011-01-19 6 views

Respuesta

8

Permítanme comenzar con enfoques probados, y luego señalar algunos enfoques más recientes.

enfoques que he visto el trabajo con archivos binarios

Hace mucho tiempo, la gente ampliaron las viejas y las nuevas versiones de un archivo binario en los archivos temporales de "texto" (cada byte ampliado a 3 bytes: 2 dígitos hexadecimales y una nueva línea). Luego ejecute estos dos archivos de "texto" a través de una versión anterior de "diff" (que definitivamente no podría manejar archivos binarios) para crear un archivo de parche. Luego transmitimos ese archivo de parche de "texto" a través de líneas de comunicación que aún no tenían 8 bits de limpieza. En el extremo de recepción, uno expandió el archivo binario antiguo en una versión de texto temporal, luego parchó ese archivo de texto anterior y luego comprimió el nuevo archivo de texto en un archivo binario (comprimiendo cada par de dígitos hexadecimales en un byte y lanzando de distancia de las nuevas líneas y de cualquier retorno de carro que pueda haberse arrastrado).

Más recientemente, he estado usando rsync (o alguna utilidad incorporada encima como Unison). Maneja archivos binarios arbitrarios muy bien. Generalmente hago una actualización en vivo, con Unison ejecutándose en mi máquina local y rsync ejecutándose en el servidor de archivos, conversando entre sí.

No importa cómo se genere un archivo de parche, puede utilizar cualquier utilidad de compresión de datos para comprimir ese archivo.

enfoques que, por lo que yo sé, se debe trabajar con archivos binarios

StackOverflow: "how to crate a PATCH file for the binary difference output file" sugiere el uso bsdiff.

Otro StackOverflow question implica que "vimdiff" parece manejar bytes arbitrariamente de forma adecuada.

StackOverflow: "Useful Binary Diff Tool" menciona algunas otras herramientas de diferencias binarias.

Escuché que algunas herramientas basadas en rsync - "rdiff" y "rdiff-backup" y "duplicity" - le permiten crear un archivo de parche. Luego, una persona que recibe ese archivo de parche puede usarlo para actualizar su antiguo archivo binario a un nuevo archivo binario.

Wikipedia claims que las versiones recientes de las utilidades estándar "diff" y "parche" admiten archivos binarios. ¿Has probado eso?

investigación de vanguardia en la compresión de archivos ejecutables

Si usted está interesado en la investigación de vanguardia en hacer que el archivo delta tan pequeño como sea posible cuando se actualizan los archivos ejecutables, usted querrá echa un vistazo a "How Courgette works" por Stephen Adams 2009 en The Chromium Projects.

Entre otras cosas, la computadora que recibe el parche "desmonta" la aplicación anterior, convirtiendo todas las direcciones y compensaciones absolutas en símbolos; luego parchea el código desmontado; luego "vuelve a ensamblar" el código parcheado en la nueva versión de la aplicación.

+0

Muchas gracias por su amable explicación, David. Para mi problema, xdelta se convirtió en mi elección después de varios experimentos. – tianyapiaozi

5

Probar xdelta.

Estaba buscando algunas herramientas de diferencias binarias para archivos muy grandes (un volumen lógico LVM y sus instantáneas, porque LVM aún no admite la instantánea de la instantánea) y xdelta funciona para mí.

Cuestiones relacionadas