delta文件备份是如何编码的?

时间:2014-01-12 15:05:44

标签: c# backup

使用备份应用程序,一种良好且节省空间的备份方法是检测文件中的更改。一些在线服务,如Dropbox也可以这样做,因为Dropbox包含版本历史记录。备份应用程序如何检测文件中的更改并将其存储?

如果您有一个已经备份的具有纪念意义的大文件,并且您进行了一些小改动(例如在Microsoft Word文档中),那么应用程序如何检测更改并对其进行处理?如果文件经常进行更改,则必须有一个有效的算法来处理更改而不是整个文件。有没有算法在C#.NET中执行此操作?

编辑:我正在尝试弄清楚如何编码两个文件作为原始和更改(以VCDIFF格式等)我知道如何使用格式并解码就好了。

1 个答案:

答案 0 :(得分:0)

要检测更改,您可以为文件的原始版本和修改版本计算哈希代码(例如 MD5 )。如果它们相同,则不做任何更改 我认为DropBox有自己的协议来检测这个文件的哪个部分被修改。
您可以找出自己的方法,例如,将文件分成固定大小的部分,存储它们的哈希码。当客户端下载文件时,将这些信息发送给客户端。修改文件后,重新计算零件的哈希码,将它们与原始哈希码进行比较,上传已修改的零件,从原始零件和修改后的零件重建文件。
rsync是一个开源工具,可使用delta编码同步文件。
---------------------------------------------- ------
编辑:我上面的想法非常简单而且效率不高。你可以看看 VCDIFF 这是由研究论文解释并以多种语言(C#)实现的。