备份配置文件

时间:2010-01-08 16:16:46

标签: windows winapi backup copy

我需要能够通过插上电源将配置文件存储在断开连接的机器上;),我使用基本的WinApi来存储配置数据(WriteFile),除非机器已经插上电源,否则这种情况有效;),有时文件根本没有保存。

我在想2个解决方案:

1)事务性NTFS API(例如CreateFileTransacted()),但这个东西仅适用于Vista,NTFS必须存在,我在大多数情况下都不能使用它

2)要在%APPDATA%目录中创建配置文件的备份副本,请说20个备份副本,并在检测到损坏的配置文件时在应用程序启动时恢复它们

如果您知道我的问题的任何其他解决方案(主要问题是通过将其关闭来关闭机器),请告诉我。谢谢。

1 个答案:

答案 0 :(得分:2)

您实际上不需要20个备份副本。你只需要1 - 最后一个副本。现在,如果您的客户端实际上要求配置文件的基本版本控制系统是另一个故事。但只需拥有一个好的配置文件,您只需要1个备份。

现在,这就是我以前为嵌入式项目所做的事情:

  1. 计算配置文件的哈希并将其存储在文件中。最简单的方法是将其作为注释附加到文件末尾。我过去常常使用crc32,但这些天我会使用SHA1。这甚至可以在发送/存储配置文件之前由配置上传工具自动完成。

  2. 打开配置文件时,提取哈希并将其与从文件计算的值进行比较(显然是在从文件中删除哈希值后计算的)。如果哈希不存在则文件不完整。如果散列不相同则文件已损坏。在任何一种情况下都要使用旧文件。

  3. 现在这是一个有效的&验证了正确的配置文件,它可以替换旧的配置文件。为此使用操作系统的重命名操作。它在大多数现代文件系统上通常是原子的,因此失败的重命名不会破坏旧文件。

  4. 这是我在多年经验中使用过的最强大的系统。这基本上就是bittorrent所做的。