備份程式

備份程式

在信息技術與數據管理領域,備份指將檔案系統或資料庫系統中的數據加以複製;一旦發生災難或錯誤操作時,得以方便而及時地恢復系統的有效數據和正常運作。備份程式是指系統中對數據進行備份的程式。備份程式是系統中一個基本程式。例如,在資料庫系統中,為了保證數據安全,會經常使用備份程式對數據進行備份。

基本介紹

  • 中文名:備份程式
  • 外文名:stand-by program
  • 學科:計算機
  • 定義:對數據進行備份的程式
  • 有關術語:備份
  • 領域:計算機系統
簡介,備份,概述,備份種類,各種數據處理的技術,基於.N ET 的檔案備份程式設計,設計原理,檔案與資料夾處理,算法流程圖,關鍵技術,

簡介

備份程式是指系統中對數據進行備份的程式。在系統運行會遇到很多無法預測的情況,如果不使用備份程式備份數據,可能會帶來非常嚴重的後果,為系統的安全,定期使用備份程式進行備份是有必要的,應該是系統基本功能之一。對於不同數據,備份程式在功能可能會有所差別。

備份

概述

備份:為應付檔案、數據丟失或損壞等可能出現的意外情況,將電子計算機存儲設備中的數據複製到磁帶等大容量存儲設備中。最好將重要數據製作三個,或三個以上的備份,並且放置在不同的場所,以利日後回存之用。

備份種類

全部備份(Full Backup),即把硬碟資料庫內的所有檔案資料夾數據作一次性的複製
增量備份(Incremental Backup),指對上一次全部備份或增量備份後更新的數據進行備份。
差異備份(Differential backup) 差異備份提供運行完整備份後變更的檔案的備份
選擇式備份,對系統的一部分進行備份。
冷備份:系統處於停機維護狀態下的備份。這種情況下,備份的數據與系統中此時段的數據完全一致。
熱備份:系統處於正常運轉狀態下的備份。這種情況下,由於系統中的數據可能隨時在更新,備份的數據相對於系統的真實數據可有一定滯後

各種數據處理的技術

在實施備份的過程中,可以對數據進行各種處理,這些不同的處理方式可以改善備份速度,恢復速度,增加數據安全性,提升存儲介質的利用率。
數據壓縮技術(Compression):通過各種機制來降低備份數據的大小,以便占用更少的存儲空間,壓縮的方法在磁帶存儲中尤為常見。
數據重複刪除技術(De-duplication):當多個相似系統的數據要備份到同一台存儲設備上時,需要重複備份數據,這會產生大量的冗餘。例如,有20個Windows工作站要備份到同一台存儲設備上,備份數據就可以共享系統檔案。存儲設備上只需要一份系統檔案,就可以用來恢復多個工作站。這項技術可以套用在檔案級,也可以套用在未經處理的數據塊級,通過避免冗餘數據的重複複製,可以大大節省存儲設備的存儲空間。重複數據刪除技術可以發生在伺服器端,在數據備份到存儲之前執行,這種方法可以在節省存儲空間的同時節省備份數據的頻寬需求,這種方式的重複數據刪除叫做線上即時數據處理(inline);重複數據刪除技術也可以發生在存儲設備端,稱之為後台重複數據刪除技術。
數據複製技術(Duplication):在備份的過程中,數據有可能需要額外備份到第二組存儲設備;通過將備份數據複製,可以調整備份鏡像來最佳化恢復速度,而且可以將第二份備份數據存放在不同的備份地點,或不同的備份介質上。
數據加密技術(Encryption):對於大容量的可移動的備份存儲介質,例如磁帶,會面臨丟失和被盜的風險。通過對數據加密可以降低上述風險,但是也帶來了另外的問題:首先,加密會占用大量的CPU進程,從而降低了備份速度;其次,數據被加密之後,就不能有效地壓縮,例如某些磁帶驅動器的數據壓縮技術無法實施。基於上述原因,以及冗餘數據導致解密分析供給更加容易,很多加密技術都在實施之前進行壓縮;最後,加密技術要成功起作用,必須配合整體的安全策略通盤考慮。
數據緩衝技術(Staging):利用數據緩衝技術,備份數據在複製到磁帶之前,會先複製到緩衝磁碟,這個操作稱之為D2D2T,磁碟到磁碟到磁帶。數據緩衝技術(虛擬帶庫技術)在基於網路的備份系統中尤為重要,因為D2D2T技術可以緩解系統對於備份頻寬的需求。如果備份系統中需要執行其他的數據操作,緩衝磁碟還可以起到數據中心的作用。

基於.N ET 的檔案備份程式設計

在日常的計算機使用過程中, 一定會生成很多檔案,例如大量的 Word 、Excel 、下載的網頁檔案、 圖片檔案等, 如果不對這些檔案進行備份, 一旦磁碟損壞,會造成不可估量的損失。而一般的備份方法通過Windows 作業系統提供的複製與貼上的方式進行備份,但這有許多不足之處:首先,每一次備份,不管檔案有沒有修改過,都需要重新進行一次複製與貼上,這樣每次備份所需花費的時間一定不小於第一次的備份所花費的時間,即要花很長的時間,其次,由於大量的磁碟的讀寫操作會縮短了磁碟的使用壽命;再次,利用複製與貼上這種方法,很容易會遺漏源盤上 uWSMEWORK 2.0 DI 隱藏的子資料夾和檔案;最後最可怕的是,如果目標盤上的檔案經過修改後比源盤上對應的檔案要新的話,由於遭到源盤上檔案的覆蓋,會造成數據的丟失。本程式的設計, 利用了 .NETFramework 中提供的有關檔案及資料夾管理的類,解決了以上這些問題。

設計原理

對於一個源檔案,首先判斷目標盤上是否存在該檔案,如果不存在,則直接複製過去,否則分別獲取源檔案與目標檔案的修改日期時間的這個屬性, 通過進行對比新舊, 決定是否進行備份。如果源檔案的修改日期時間比目標檔案的修改日期時間新,則覆蓋目標檔案,否則不複製。對於源盤上的資料夾,判定目標盤對應的路徑下是否存在,如果不存在, 則在目標上新建該資料夾。

檔案與資料夾處理

根據源資料夾下檔案的類型,對檔案與資料夾進行分別處理。
檔案處理
( 1 ) 針對一個源資料夾,創建一個 DirectoryInfo 類的對象。
( 2 ) 通過 DirectoryInfo 的 GetFiles 方法,獲取源資料夾下所有的檔案對象序列, 保存到一個數組中。
( 3 ) 通過 FOR EACH 循環語句分別獲取數組中的每個檔案對象。
( 4 ) 針對一個檔案對象,查找備份盤上對應的的路徑下是否存在該檔案 (通過 FILE 類的 EXIST 方法),如果不存在,則直接複製過去(通過 FILE 類的 COPY 方法);如果存在,則通過FILEINFO 類創建該檔案對象,然後比較源檔案與目標檔案的修改日期時間 (通過檔案對象 LASTWRITETIME 這個屬性),如果源檔案對象的修改日期時間比目標檔案對象的修改日期時間要新,即源檔案的 LASTWRTETIME 大於目標檔案的 LASTWRITETIME ,則直接複製過去,否則跳過,處理下一個檔案對象。
資料夾處理
( 1 ) 通過 DirectoryInfo 的 GetDirectories 方法,獲取源資料夾下所有的子資料夾對象序列, 保存到下一個數組中。
( 2 ) 通過 FOR EACH 循環語句分別獲取每個子資料夾對象。
( 3 ) 針對一個子檔案對象, 查找備份盤上相同的父資料夾是否存在相同名稱的子資料夾 (通過 Directory 的 EXIST 方法), 如果存在,則對該子資料夾的檔案按前面的處理方式進行, 如果不存在,則首先在在目標盤對應的父資料夾下創建子資料夾(通過 Directory.CreateDirectory 的方法),再按檔案的處理方式進行備份。

算法流程圖

檔案備份的算法流程,如圖 1 所示。
備份程式
資料夾備份的算法流程,如圖 2 所示。
備份程式

關鍵技術

關鍵類及其屬性、 方法
( 1 ) System.IO.File 類及其方法: Exists 、 Copy 、 Delete 。
( 2 ) System.IO.FileInfo 類及其屬性: LastWriteTime 。
( 3 ) System.IO.Directory 類及其方法: Exists 、 CreateDirectory 。
( 4 ) System.IO.DirectoryInfo 類 及 其 方 法 :GetDirectories 、GetFiles 。
遞歸技術
建立一個程式過程,把目標資料夾作為該過程的參數,該過程對資料夾下的檔案進行直接處理;對子資料夾,首先判定在目標盤上是否存在,如果不存在,先在目標盤上創建該資料夾,然後遞歸調用過程自身;回歸的條件, 取完資料夾下子資料夾後進行回歸。有關代碼如下:
Dim 檔案對象數組 As FileInfo() = 源資料夾 .GetFiles()' 獲取源資料夾下所有的檔案 , 生成一個檔案對象數組For Each 檔案對象 In 檔案對象數組 ' 循環獲取數組中每' 個檔案對象If Not File.Exists( 目標盤 . 檔案對象 ) Then ' 目標資料夾' 是否存在該檔案File.Copy( 源檔案 , 目標檔案 ) ' 不存在 , 進行直接複製Else ' 目標資料夾存在該檔案If fi.LastWriteTime > dfi.LastWriteTime Then ' 比較' 修改日期時間屬性File.Delete( 舊的目標檔案 ) ' 先刪除舊的目標檔案File.Copy( 源檔案 , 目標檔案 ) ' 進行複製End IfEnd IfNext FORDim 子資料夾對象數組 As DirectoryInfo () = 源資料夾 .GetDirectories() ' 獲取源資料夾下所有的子資料夾 , 生成一個文' 件夾對象數組For Each 資料夾對象 In 子資料夾對象數組 ' 循環獲取' 數組中每個資料夾對象If Not Directory.Exists( 目標盤 . 資料夾對象 ) Then' 目標盤上是否存在該資料夾Directory.CreateDirectory(path2) ' 不存在 , 在' 目標盤上創建該資料夾End IfCALL 對該資料夾的檔案進行備份Next FOR

相關詞條

熱門詞條

聯絡我們