複製鏈接
請複製以下鏈接發送給好友

備份程序

鎖定
在信息技術與數據管理領域,備份指將文件系統或數據庫系統中的數據加以複製;一旦發生災難或錯誤操作時,得以方便而及時地恢復系統的有效數據和正常運作。備份程序是指系統中對數據進行備份的程序。備份程序是系統中一個基本程序。例如,在數據庫系統中,為了保證數據安全,會經常使用備份程序對數據進行備份。
中文名
備份程序
外文名
stand-by program
學    科
計算機
定    義
對數據進行備份的程序
有關術語
備份
領    域
計算機系統

備份程序簡介

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

備份程序備份

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

備份程序備份種類

全部備份(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] 

備份程序算法流程圖

文件備份的算法流程,如圖1所示。
圖1 圖1
文件夾備份的算法流程,如圖2所示。
圖2 圖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 If
End If
Next FOR
Dim 子文件夾對象數組 As DirectoryInfo () = 源文件夾 .
GetDirectories() ' 獲取源文件夾下所有的子文件夾 , 生成一個文
' 件夾對象數組
For Each 文件夾對象 In 子文件夾對象數組 ' 循環獲取
' 數組中每個文件夾對象
If Not Directory.Exists( 目標盤 . 文件夾對象 ) Then
' 目標盤上是否存在該文件夾
Directory.CreateDirectory(path2) ' 不存在 , 在
' 目標盤上創建該文件夾
End If
CALL 對該文件夾的文件進行備份
Next FOR

參考資料
  • 1.    沈建濤.基於.N ET 的文件備份程序設計[J]. 電腦編程技巧與維護,2013(11):78-79