【发布时间】:2012-02-12 15:41:10
【问题描述】:
我正在开发一个备份工具,但我想不出最有效的远程备份方法。我不想每次有小的变化时都发送整个文件,所以我猜增量备份是解决方案。这一切都很好,但是现在我遇到了一个问题,即如何将一个文件分成多个部分。
问题是假设我有一个简单的文本文件,一个块是一行:
First line
Second line
Third line
Fourth line
现在我有 4 个块。如果我将第二行更新为“第二行”,现在我只需要备份第二个块。
但是如果发生这样的事情怎么办:
First line
First and half line
Second line
Third line
Fourth line
现在我添加了“第一行和半行”,现在每一行都在不同的位置。因此,如果每一行都是一个块,那么看起来第一块之后的每个块都发生了变化,即使内容相同。
有什么简单的解决方案吗?首先,我认为我可以对每个块进行哈希处理,然后创建指示正确块顺序的“目录”。这样,如果该块已经与散列一起存在,我可以轻松匹配。但是,我意识到哈希表解决方案只能用于可以预测和修复块的文件。例如,对于二进制文件,您几乎受限于固定字节大小的块,因此如果在开始时添加了更多数据并且您开始将其缩减为 100k 块,您将在后面的块中获得与以前不同的数据。
有什么解决办法吗?
【问题讨论】:
-
这可能会有所帮助:chunksync.florz.de ChunkSync 允许您通过将数据拆分为块文件的目录结构来创建大文件或块设备(尤其是加密磁盘)的空间高效增量备份如果相应块的内容没有改变,它们会被硬链接到新的备份代中
标签: backup backup-strategies remote-backup