Windows服务的备份算法

时间:2017-01-05 07:45:40

标签: c# .net vb.net algorithm backup

我必须为Windows服务使用的某些文件设计备份算法,我已经有了一些想法,但我想听听更聪明的人的意见,以便尝试改进我的想法。

我正在处理的软件遵循客户端 - 服务器架构。

  • 服务器方面,我们有一个执行某些任务的Windows服务,例如监视文件夹等,它有几个xml配置文件(大约10个)。这些是我要备份的文件。

  • 客户端端,用户有一个图形界面,允许他修改这些配置文件,尽管这不应该经常发生。与服务器的通信使用WCF进行。

因此,配置文件可能会被用户远程修改,但管理员也可能在服务器上手动修改它们(Windows服务会监视这些更改)。

目前,这是我对备份算法的想法(虽然非常简单):

  • 时 - 将在两种情况下执行备份:

    • 定期:服务器应用程序上的并行线程将每XXXX个月/周/任何(可配置参数)执行配置文件的副本。也就是说,每次通过用户操作修改文件时,它都不执行备份,但仅在客户端应用程序启动时才执行备份。
    • 每次用户启动客户端时:每次服务器检测到用户启动了应用程序时,服务器端都会执行备份。
  • 如何

    • Windows服务的Program Data文件夹中将有一个名为Backup 的文件夹。在那里,每次执行备份时,都会创建一个名为BackupYYYYMMDDHHmm的子文件夹,其中包含所有相关文件。
    • 维护:备份文件夹不会永远保留。所有早于XXXX周/月/年(可配置参数)的人都将被删除。或者,我可能只维护N个备份子文件夹(可配置参数)。我仍然没有选择一个选项,但我想我会选择第一个选项。

所以,就是这样。评论非常欢迎。谢谢!

1 个答案:

答案 0 :(得分:2)

我认为你的设计是可行的。只是一些评论:

  1. 您需要备份到服务器以外的其他位置吗?我不觉得在同一台服务器上备份重要数据是安全的,我宁愿将它们备份到单独的磁盘(可能是网络位置)

  2. 您需要实施监控/备份/保留/等。你自己,这听起来很复杂 - 你想花多长时间?

  3. 我个人会用一些简单的技巧来实现备份,例如,因为数据是纯文本文件(xml格式)和光,我可能只是将它们备份到某个源控制系统:使文件夹结帐SVN(或其他一些方法)并创建一个简单的脚本来检测/检查SVN的更改,并安排脚本在几个小时后执行(或者更经常地根据您的需要执行,或者可以由您的服务/应用程序触发按需) - 通过这种方式,它消除了不必要的数据副本(因为它仅检查更改),并且随着svn提供所有历史记录,它更易于跟踪。

    希望以上可以帮助一下......