Warning: file_put_contents(/datas/wwwroot/jiajiahui/core/caches/caches_template/2/default/show.php): failed to open stream: Permission denied in /datas/wwwroot/jiajiahui/core/libraries/classes/template_cache.class.php on line 55

Warning: chmod(): Operation not permitted in /datas/wwwroot/jiajiahui/core/libraries/classes/template_cache.class.php on line 56
备份配置文件 - 源码之家

备份配置文件

问题描述:

我需要能够将配置文件存储在通过关闭电源而断开连接的计算机上;),我使用基本的WinApi来存储配置数据(WriteFile),除非机器被拔掉;),有时文件根本没有保存。备份配置文件

我想的是2个解决方案:

1)事务NTFS API(如CreateFileTransacted()),但是这件事情只适用于Vista和NTFS必须存在,我不能在大多数情况下

使用

2)在%APPDATA%目录下的配置文件的备份副本,说20个备份和检测损坏的配置文件时

如果您知道任何其他解决我的问题的应用程序启动恢复它们(主要问题是关掉机器,请让我知道。谢谢。

+0

... UPS如何? – 2010-01-08 16:29:27

+0

不,唯一的软件解决方案... – 2010-01-08 17:28:04

+0

出于好奇,为什么这些机器断开这种方式? – 2010-01-09 14:35:46

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

现在,这里是我用我的嵌入式项目办:

  1. 计算配置文件的哈希值,并将其存储在文件中。最简单的方法是将它作为注释附加到文件的末尾。我曾经为此使用crc32,但现在我会使用SHA1。这甚至可以在传输/存储配置文件之前通过配置上传工具自动完成。

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

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

这是我在多年的经验中使用的最健壮的系统。这基本上是什么bittorrent做的。