记录文件系统写为远程应用程序的二进制差异?

时间:2012-01-10 05:07:11

标签: linux diff large-files filesystemwatcher interbase

我正在使用不断更新的~20GB Interbase备份,我希望通过互联网进行复制。如何最大限度地减少传输的数据?

我正在考虑使用二进制差异工具,但我理解bsdiff至少需要O(7n)内存,并且这些Interbase备份只是使用Interbase专有的gbak事件在LAN上逐步更改。有什么方法可以挂钩到linux文件系统(ext / btrfs / ...)来捕获对该文件所做的所有更改,将其导出为常见的diff格式,并在不同的(windows)平台上重新组装它?

2 个答案:

答案 0 :(得分:1)

您可以使用rsync。如果数据库中的更改碰巧保存到备份文件的末尾,那么它将是完美的。

但是,如果备份文件被高度重写(我的意思是随机插入/删除/修改了许多小块/行),rsync将无法完成工作。它取决于数据库中插入/删除的同步频率。

xdelta这样的工具在这种情况下可能会有所帮助,因为它们使用窗口化方法来进行增量计算,并且可能能够找到比rsync小得多的常见部分,从而保持共同部分虽然存在更高密度的变化。你需要一个'旧'和最新的备份才能使用它。

好消息是备份每次执行时可能会以相同的方式组织(相同的表/行顺序),这将有助于两种算法。

答案 1 :(得分:1)

InterBase数据库增量备份功能如何?您可以尝试将增量备份(对于日志文件)执行到临时转储位置,然后将该增量数据单独备份到非现场位置。无论如何,您可能需要保留初始完整备份数据以继续InterBase数据库的增量备份。

它将为您提供非常少量的数据备份。