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

5

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

这听起来一开始很简单,但实际上确定未修改的数据在哪里结束,新数据从哪里开始似乎是一项困难的任务。

是否有现有的框架已经做到了这样的事情或者高效的文件比较算法?

5个回答

3

不要自己开发,你可以考虑利用开源版本控制系统(例如,Subversion)。这样做不仅意味着获得增量版本控制算法,还能获得更多其他的功能。


Source Forge是一个使用版本控制的网站。你可以使用Subversion、CVS、Git、Mercurial等版本控制系统。 - Peter Lawrey
@Peter:我不应该在午夜后回答问题,谢谢,我的意思是 SVN。 - Jim Ferrans
SVN有许多用途,不仅仅是用于开发。我在生产环境中使用它来部署和版本化我们的配置文件。 - Peter Lawrey

3

XDelta 不是 Java,但仍值得一看。虽然有 Java 版本,但我不知道它的稳定性如何。


1
javaxdelta运行良好,我们正在生产环境中使用它(与此包装器一起https://github.com/alexkasko/delta-updater)进行目录差异比较。xdelta更先进,但它是本地的且采用GPL许可证。 - alexkasko

1

就我个人而言,对于二进制文件,Bsdiff工具是最佳选择。它使用后缀排序(Larsson和Sadakane的qsufsort算法),并利用可执行文件的变化方式。Bsdiff是由Colin Percival用C++编写的。与Xdelta创建的文件相比,Bsdiff创建的差异文件通常更小。

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

这里是您可以找到Bsdiff文档并免费下载Bsdiff的网站:http://www.daemonology.net/bsdiff/


1

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


精确的。这样做是为了最小化所需的存储空间,因为保留同一文件的不同版本可能会很快占用空间。这也对备份方案有用。 - James P.

1

二进制差分是我正在寻找的搜索词。感谢您的提示。如果我找到合适的框架,我会回复的。 - James P.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接