0

我想计算文件的增量,即我只想像 DropBox 或 Google Drive 这样的应用程序那样获取文件的更改位。

一旦监视文件夹中的文件发生更改,我想知道受影响字节的偏移量以及要发送到文件服务器的更改字节。

我想在 Windows 平台上实现这个解决方案,所以我可以使用 C、C++ 或 C#.Net 解决方案。

更新: 示例:假设我的本地监视文件夹中有一个大小为 10 MB(二进制或文本)的文件 X。假设我修改了 1 MB。现在我只想获取修改后的字节(1 MB)和一个可以在文件服务器上应用 1 MB 的范围。这也称为 Delta Sync 功能。

4

2 回答 2

4

Linux/Unix 中有一个命令叫做rsync基本上可以满足您的要求,该程序的想法是,它会获取已更改文件的第一个块(大小,例如 512 字节),并使用弱校验和算法计算该块的校验和并进行比较到原始文件的那个。如果校验和不同,那么我们会找到一个已更改的块。如果弱校验和相同,则使用强校验和算法计算该块的另一个校验和,然后再次将其与原始文件的校验和进行比较。如果校验和相同,我们可以放心,这个块没有改变。然后程序向前移动一个字节(不是一个块,一个字节)并拾取另一个块并重复此过程。该算法最重要的一点在于弱校验和算法,称为滚动校验和。此校验和算法允许您在 O(1) 时间内通过 (k, k + 512) 的校验和计算 (k + 1, k + 513) 的校验和。您可以查看算法的详细信息。

于 2013-08-02T07:23:28.613 回答
0

这不是 Drive 或 Dropbox 所做的,当它们将文件标记为已更改时,它们会重新加载整个文档。事实是,当你保存一些东西时,重要的信息分散在二进制文件中的不同位置,即文档。

于 2013-08-02T07:01:21.190 回答