更新大于1GB的文件?

时间:2010-11-01 23:52:35

标签: c# windows linux bandwidth

目前我正在使用xdelta制作更新文件并仅发送用户当前应用程序版本的差异,但我想知道是否有更好的方法或其他方法来解决这种情况以及社区可能提供的建议给我。

我们的应用程序是用C#编写的,我们的网络服务器在Linux上使用apache httpd。

运行

使用xdelta新补丁缩小到新旧文件之间的大小差异,因此更新在10mb到500mb之间变化,避免每次更改时重新上传这些1GB。

  1. 我还有哪些其他选择可以推荐我?
  2. 在这种情况下我还应该考虑什么?
  3. PS:我真的很沮丧,说实话,这是我制作的第一个更新程序应用程序,我真的不知道我做得对不对。


    如果可能,建议使用开源或非商业应用程序

2 个答案:

答案 0 :(得分:2)

如果提供的信息量很少,我就不会发现您的方法存在问题。如果需要修补1GB文件,则需要修补1GB文件。我假设它是一个数据文件,因此需要这么大?有没有什么办法可以将它拆分成不经常改变的文件,可能会进一步减少你的补丁大小?

答案 1 :(得分:0)

你可以尝试一下bsdiff。这与xdelta是一回事,算法有些不同。

当我第一次尝试时,在Windows下开始并不是那么简单(现在可能会有所不同,但有一段时间没看过),但是一旦它起作用,它就可以正常工作了。
我的里程是压缩运行大约比xdiff慢10倍(但是,谁在乎...)并生成通常大约一半大小的补丁。显然你的里程数很大程度上取决于你的数据,但对我来说这是一个很大的胜利。如果你有空闲时间,你总是可以尝试一下。

在某些情况下,糟糕的压缩时间可能是一种威慑,但对于我的情况,这些补丁的大小只有一半的借口,我不在乎是否在整个周末生成一个补丁,如果只是那个再次缩小尺寸。