2017-01-05 57 views
0

我必須爲Windows服務所使用的某些文件設計一個備份算法,我已經有一些想法,但我想聽聽那些更聰明的人的意見,以嘗試和改進什麼我記住了。Windows服務的備份算法

我正在處理的軟件遵循客戶端 - 服務器體系結構。

  • 服務器方面,我們有一個執行一些任務,如監視文件夾,等Windows服務,並且它有幾個XML配置文件(約10)。這些是我想要備份的文件。

  • 客戶端方,用戶有一個圖形界面,允許他修改這些配置文件,雖然這不應該經常發生。與服務器的通信使用WCF進行。

所以配置文件可能被遠程用戶修改,但管理員也可以手動修改它們的服務器上(Windows服務監控這些變化)。

而且從目前看,這就是我心目中的備份算法(很簡單,雖然):

  • - 備份將在兩種情況下進行:

    • 定期:服務器應用程序上的並行線程將每XXXX個月/周/任何(可配置參數)執行配置文件的副本。也就是說,每次通過用戶操作修改文件時,它都不執行備份,但僅在啓動客戶端應用程序時執行備份。
    • 每次用戶啓動客戶端:服務器每次檢測到用戶啓動應用程序時,服務器端都會執行備份。
  • 如何

    • 將有上的Windows服務的程序數據文件夾中的文件夾命名備份。在那裏,每次執行備份時,都會創建一個名爲BackupYYYYMMDDHHmm的子文件夾,其中包含所有相關文件。
    • 維護:備份文件夾不會永久保存。定期地,所有比XXXX周/月/年(可配置參數)更早的數據將被刪除。或者,我可能只維護N個備份子文件夾(可配置參數)。我仍然沒有選擇一個選項,但我想我會選擇第一個選項。

所以,就是這樣。評論非常受歡迎。謝謝!!

回答

2

我認爲你的設計是可行的。只是幾點意見:

  1. 您需要備份到服務器以外的其他地方嗎?我不覺得在同一臺服務器上備份重要數據並不安全,我寧願將它們備份到單獨的磁盤上(可能是網絡位置)

  2. 您需要實施監視/備份/保留/等。你自己,這聽起來很複雜 - 你想花多長時間?

個人而言,我會用一些簡單的技巧來實現備份,例如,因爲數據是純文本文件(XML格式)和光,我可以簡單地將它們備份到一些源代碼控制系統:使文件夾中籤出SVN(或其他方式),並創建一個簡單的腳本,檢測/檢查SVN的變化,並安排腳本在幾個小時後執行一次(或者更多時候可以滿足您的需求,或者可以由您的服務/應用程序按需提供) - 這樣可以消除不必要的數據副本(因爲它僅檢查更改),並且由於svn提供所有歷史記錄,因此它更易於追蹤。

希望以上可以幫助有點...

+0

1.我也覺得有必要備份了一些其他的磁盤或服務器,但我等待我上面的人的權限。 2.執行時間不應該是一個問題,客戶對此非常感興趣,而且我也從事過類似的工作。 3.源代碼控制的建議似乎是一個好主意,但是我的目標服務器的驅動範圍相當有限,因爲它是一個巨大工業工廠的生產服務器......但是我會考慮一下,看看這個解決方案是否適合我的需求,最特別的是,我的限制。非常感謝您的意見! – Alicia