我正在开发一个备份工具,但我想不出最有效的远程备份方法。我不想每次有小的变化时都发送整个文件,所以我猜增量备份是解决方案。这一切都很好,但现在我遇到了一个问题,即如何将一个文件分成多个部分。
问题是,假设我有一个简单的文本文件,一大块是一行:
First line
Second line
Third line
Fourth line
现在我有 4 块。如果我将第二行更新为“第二行”,现在我只需要备份第二个块。
但是如果发生这样的事情怎么办:
First line
First and half line
Second line
Third line
Fourth line
现在我添加了“第一行和半行”,现在每一行都在不同的位置。因此,如果每一行都是一个块,那么看起来第一个块之后的每个块都发生了变化,即使内容是相同的。
有什么简单的解决方案吗?首先,我认为我可以对每个块进行哈希处理,然后创建指示正确块顺序的“目录”。这样,如果该块已经与散列一起存在,我可以轻松匹配。但是,我意识到哈希表解决方案只能用于可以预测和修复块的文件。例如,对于二进制文件,您几乎受限于固定字节大小的块,因此如果在开始时添加了更多数据并且您开始将其切割成 100k 块,那么您在后面的块中将获得与以前不同的数据。
有什么解决办法吗?