Domanda

Quando si vedono o ottimizzando i backup dei file, un'idea è quella di utilizzare solo il Delta o i dati che sono stati modificati.

All'inizio sembra una semplice idea, ma in realtà determinare dove i dati non modificati terminano e i nuovi dati di dati sono accrosstrizzati come un compito difficile.

Esiste un framework esistente che già fa qualcosa del genere o un efficiente algoritmo di confronto dei file?

È stato utile?

Soluzione

XDELTA Non è Java ma vale la pena guardare comunque. C'è Versione Java di esso ma non so quanto sia stabile.

Altri suggerimenti

Invece di lanciare il tuo, potresti prendere in considerazione la possibilità di sfruttare un sistema di controllo della versione open source (ad es. Sovversione). Ottieni molto di più di un semplice algoritmo di versione Delta in questo modo.

Sembra che tu stia descrivendo uno schema di archiviazione basato sulla differenza. La maggior parte dei sistemi di controllo del codice sorgente utilizza tali sistemi per ridurre al minimo i requisiti di archiviazione. Il comando *Nix "diff" è in grado di generare i dati necessari per implementarli da soli.

Ecco una libreria Java che può calcolare le differenze tra due file di testo semplice:

http://code.google.com/p/google-diff-match-patch/

Tuttavia, non conosco alcuna biblioteca per le differenze binarie. Prova a cercare su Google per "Java Binary Diff" ;-)

Per quanto riguarda la mia opinione, lo strumento BSDIFF è la scelta migliore per i file binari. Utilizza il sorgenti di suffisso (QSufSort di Larsson e Sadakane) e sfrutta come cambiano i file eseguibili. BSDIFF è stato scritto in C ++ da Colin Percival. I file Diff creati da BSdiff sono generalmente più piccoli dei file creati da XDELTA.

Vale anche la pena notare che BSDIFF utilizza l'algoritmo di compressione BZIP2. Le patch binarie create da BSdiff a volte possono essere ulteriormente compresse usando altri algoritmi di compressione (come quello di Winrar Archiver).

Ecco il sito in cui è possibile trovare la documentazione BSDIFF e scaricare BSDIFF gratuitamente: http://www.daonology.net/bsdiff/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top