2009-12-09 219 views
0

在Windows移动设备上,我正在使用的软件依赖于sdf文件,因为它是数据库。 软件针对的平台“不够理想”,每隔一段时间都会进行硬复位。在遥远的过去,我们失去了数据。现在我们关闭数据库,并将SDF文件复制到SD卡。如果设备硬重置,我们恢复应用程序(也在SD卡上)和数据库。备份我的数据库花费的时间太长了

我不关心恢复(只是)。我们现在面临的问题是,执行“备份”需要花费大量的时间,因为SDF为7+ megs,写入SD卡的速度缓慢。

我的老板建议我们创建文件的“块”散列,然后只在散列比较!=时写入目标文件。

所以这里的问题。
如果只能有一个文件副本,并且无法将其与原始文件进行比较,您将如何测试文件是否发生更改。

我只是拍摄了一些头脑风暴。

回答

0

只需将你的块的散列存储在某处。如果你知道你的哈希是什么,你不需要“备份”副本进行比较。显然,这会为至少一个散列造成鸡和蛋的问题,但是复制单个“块”是一个小得多的问题。

虽然你提出的方法仍然会有性能问题,因为散列大文件对于由电池供电的慢速CPU不会是一个漂亮的操作。

我假设您没有粒度控件来跟踪您修改的文件的各个部分,然后在需要执行备份时更新这些部分?

+0

没有。这可能是我见过的最不有组织的数据库(不是故意没有完成的)。主键是字符串(ugg),很少被标准化。任何东西都没有日期时间戳。这只是丑陋的。 散列思想的问题(以及我为什么来到这里)就是你所说的,如果文件只是在前面改变了一点,并将所有数据移动了一个偏移量,那么散列将会不匹配,所有的性能收益都没有了。 – baash05 2009-12-10 23:23:47

+0

如果你对系统有合理的控制(我对winmo开发一无所知),我会说你最好的选择可能是看看做这种差异备份的第三方工具。从头开始解决这个难题。你可以看看DAR的灵感。 http://dar.linux.free.fr/ – 2009-12-10 23:45:26

+0

我认为tar和rsync也实现了某种形式的差分/增量文件复制/备份。 – 2009-12-10 23:47:37

相关问题