gpt4 book ai didi

c# - windows服务的备份算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:54:14 24 4
gpt4 key购买 nike

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

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

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

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

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

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

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

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

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

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

最佳答案

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

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

  2. 您需要实现监控/备份/保留/等。自己一个人,这听起来很复杂 - 你希望在这上面花多长时间?

我个人会使用一些简单的技巧来实现备份,例如,由于数据是纯文本文件(xml 格式)并且很轻,我可能只是将它们备份到某个源代码控制系统:使文件夹成为 checkout of SVN(或其他一些方式)并创建一个简单的脚本来检测/检查 SVN 的更改,并安排脚本每隔几个小时执行一次(或根据您的需要更频繁,或者可以由您的服务/应用程序触发按需)——这样它就消除了不必要的数据副本(因为它只检查更改),而且它更易于跟踪,因为 svn 提供了所有历史记录。

希望上面的内容能帮到你一点...

关于c# - windows服务的备份算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41479703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com