如何计算文件的增量,即更改的文件部分
How to calculate delta on file i.e. changed file portion
我想在文件上计算一个delta,也就是说,我想像DropBox或Google Drive这样的应用程序那样只获取文件的更改部分。
一旦监视文件夹中的文件发生更改,我想知道受影响字节的偏移量以及要发送到文件服务器的更改字节。
我想在Windows平台上实现这个解决方案,所以我可以使用C、C++或C#.Net解决方案。
更新:示例:假设我在本地关注的文件夹中有一个大小为10MB(二进制或文本)的文件X。假设我修改了1MB。现在我只想获取修改后的字节(1MB)和一个可以在文件服务器上应用1MB的范围。这也被称为增量同步功能。
Linux/Unix中有一个名为rsync的命令,它基本上可以满足您的要求,这个程序的想法是,它会拾取更改文件的第一个块(大小,比如512字节),并使用弱校验和算法计算该块的校验和,并将其与原始文件的校验和进行比较。如果校验和不同,那么我们会发现一个区块发生了变化。如果弱校验和相同,则它使用强校验和算法计算该块的另一个校验和,然后再次将其与原始文件的校验和进行比较。如果校验和是相同的,我们可以放心,这个区块没有改变。然后程序向前移动一个字节(不是一个块,而是一个byte),然后拾取另一个块并重复这个过程。该算法最重要的一点在于弱校验和算法,它被称为滚动校验和。此校验和算法允许您在O(1)时间内计算(k+1,k+513)的校验和与(k,k+512)的校验。你可以查看这个算法的详细信息。
Drive或Dropbox不是这样做的,当它们将文件标记为已更改时,它们会重新加载整个文档。事实是,当你保存一些东西时,重要信息分散在作为文档的二进制文件的不同位置。
- 如何计算文件中的"columns"数?
- C++数据文件、数组和计算赋值
- 如何计算文件中的生物数量?
- 计算二进制文件中的位数
- 通过从文件中读取值来计算移动平均线
- 在目标计算机上访问 POSIX 信号灯时出现可执行文件崩溃(SEGV_MAPERR)
- RPN计算器使用头文件进行计算操作和堆栈;用于堆栈的矢量
- 阅读一个大文件来计算重复K次的单词数
- 在.txt文件上计算重复单词的C 程序
- C :不正确的文件大小计算Winapi
- 将文件从计算机上传到在线服务器上
- C - 读取文件并计算行和列
- 使用循环从加载的 TXT 文件执行计算时出现问题C++
- 如何在两个文本文件中计算不同的数据包编号
- MSVCP100D.dll文件在计算机上丢失了
- c++试图从输入文件中计算总数
- 匹配txt文件并计算字数
- 如何避免在文件末尾计算空行
- 如何使用 boost::文件系统计算目录中的文件数
- c++文件搜索数据库文件并计算下一行