Java中文件增量/版本控制的现有解决方案

Java中文件增量/版本控制的现有解决方案,java,versioning,delta,file-comparison,Java,Versioning,Delta,File Comparison,在对文件备份进行版本控制或优化时,一个想法是只使用已修改的增量或数据 起初这听起来很简单,但实际上确定未修改的数据在何处结束和新数据在何处开始是一项困难的任务 是否有一个现有的框架已经实现了类似的功能,或者有一个高效的文件比较算法?听起来您正在描述一种基于差异的存储方案。大多数源代码控制系统使用这样的系统来最小化它们的存储需求。*nix“DIFF”命令能够生成您自己需要实现的数据。代替滚动自己,您可以考虑利用开源版本控制系统(例如,)。通过这种方式,您得到的不仅仅是增量版本控制算法。这里有一个J

在对文件备份进行版本控制或优化时,一个想法是只使用已修改的增量或数据

起初这听起来很简单,但实际上确定未修改的数据在何处结束和新数据在何处开始是一项困难的任务


是否有一个现有的框架已经实现了类似的功能,或者有一个高效的文件比较算法?

听起来您正在描述一种基于差异的存储方案。大多数源代码控制系统使用这样的系统来最小化它们的存储需求。*nix“DIFF”命令能够生成您自己需要实现的数据。

代替滚动自己,您可以考虑利用开源版本控制系统(例如,)。通过这种方式,您得到的不仅仅是增量版本控制算法。

这里有一个Java库,可以计算两个纯文本文件之间的差异:


但是我不知道任何二进制差异的库。尝试在谷歌上搜索“java二进制差异”;-)

不是Java,但无论如何都值得一看。有很多,但我不知道它有多稳定。

至于我的观点,Bsdiff工具是二进制文件的最佳选择。它使用后缀排序(Larsson和Sadakane的qsufsort)并利用可执行文件的变化。Bsdiff是用C++编写的Colin Percival。Bsdiff创建的Diff文件通常比Xdelta创建的文件小

值得注意的是,Bsdiff使用bzip2压缩算法。Bsdiff创建的二进制补丁有时可以使用其他压缩算法(如WinRAR archiver的算法)进行进一步压缩


在这里,您可以找到Bsdiff文档并免费下载Bsdiff:

Binary diff是我要找的搜索词。谢谢你的提示。如果我找到合适的框架,我会发回的。这是为了尽量减少所需的存储空间,因为保留同一文件的不同版本可能会很快占用空间。它对备份方案也很有用。SourceForge是一个使用版本控制的站点。对于版本控制系统,你可以使用subversion、CVS、git、mercurial等@Peter:我不应该在午夜后回答问题,谢谢,我的意思是SVN.SVN有很多用途,不仅仅是用于开发。我在生产中使用它来部署和版本我们的配置文件。javaxdelta工作得很好,我们在生产中使用它来处理目录差异。xdelta更高级,但它是本机的和GPL的