Question

Lors du versioning ou de l'optimisation des sauvegardes de fichiers, une idée consiste à utiliser uniquement le delta ou les données qui ont été modifiées.

Cela ressemble à une idée simple au début, mais déterminer en fait où les données non modifiées se terminent et les nouvelles données se rapprochent comme une tâche difficile.

Existe-t-il un cadre existant qui fait déjà quelque chose comme celui-ci ou un algorithme de comparaison de fichiers efficace?

Était-ce utile?

La solution

Xdelta n'est pas java mais vaut la peine de regarder de toute façon. Il y a Version java Mais je ne sais pas à quel point c'est stable.

Autres conseils

Au lieu de rouler le vôtre, vous pourriez envisager de tirer parti d'un système de contrôle de version open source (par exemple, Subversion). Vous obtenez bien plus qu'un simple algorithme de version de Delta de cette façon.

Il semble que vous décriviez un schéma de stockage basé sur la différence. La plupart des systèmes de contrôle de code source utilisent de tels systèmes pour minimiser leurs besoins de stockage. La commande * nix "diff" est capable de générer les données dont vous auriez besoin pour les implémenter par vous-même.

Voici une bibliothèque Java qui peut calculer des différences entre deux fichiers texte brut:

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

Je ne connais cependant aucune bibliothèque pour les diffs binaires. Essayez de googler pour «Java Binary Diff» ;-)

Quant à mon avis, l'outil BSDiff est le meilleur choix pour les fichiers binaires. Il utilise le tri du suffixe (QSUFSORT Larsson et Sadakane) et tire parti de la façon dont les fichiers exécutables changent. BSDiff a été écrit en C ++ par Colin Percival. Les fichiers Diff créés par BSDiff sont généralement plus petits que les fichiers créés par Xdelta.

Il convient également de noter que BSDIFF utilise l'algorithme de compression BZIP2. Les patchs binaires créés par BSDiff peuvent parfois être compressés en utilisant d'autres algorithmes de compression (comme celui de l'archiver Winrar).

Voici le site où vous pouvez trouver la documentation BSDiff et télécharger gratuitement BSDiff: http://www.daemonology.net/bsdiff/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top