如何从单个文件中获取delta?

时间:2011-08-10 06:00:47

标签: java .net visual-c++

Dropbox使用delta编码算法来查找两个文件之间的差异,第一个是修改文件,第二个是旧文件。但是,如果他们存储旧文件,他们如何找到差异,因为他们只有新文件,他们没有旧文件。首先无法从服务器下载文件然后找到差异,他们正在使用哪种方法?

1 个答案:

答案 0 :(得分:0)

根据Dropbox员工this post的说法,他们似乎将这类数据保留在内存中:

  

Dropbox会将有关您文件的元数据保存在RAM中以防止代价高昂   同步期间的数据库访问。元数据包括文件路径   在您的Dropbox,校验和,修改时间等。我们正在努力   努力使这些信息更紧凑,并正在努力   几个方面来改善内存使用。我们的技术不受限制   重写Python和编写自定义内存分配器   : - 。)

为了做到这一点,我猜他们会有某种特殊的处理程序,当用户将文件复制到dropbox文件夹时,它们允许它们执行delta diff。为此,像.Net的FileSystemWatcher类这样的东西会与你自己的传递shell复制处理程序一起工作(所以你可以保留文件的临时副本,直到差异完成,如果需要的话完成)。

另外,作为旁注,dropbox是用python和wxWdigets编写的。


您可能会发现一些对delta压缩有用的网站: