專利名稱:數(shù)據(jù)保存的方法和模塊、數(shù)據(jù)恢復(fù)的方法和模塊的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)恢復(fù)技術(shù),尤其涉及一種數(shù)據(jù)保存的方法和模塊、數(shù)據(jù)恢復(fù)的方法和才莫塊。
背景技術(shù):
在各種編輯軟件中,如,如專業(yè)排版軟件、通用字處理軟件,人們常常利 用這些編輯軟件完成許多復(fù)雜而且工作量巨大的工作,有時(shí)需要多人協(xié)同來完 成上述工作。 何保證利用這些編輯軟件所做的工作在機(jī)器故障、軟件和操作 系統(tǒng)死機(jī)甚至斷電的情況下,而不會(huì)讓所述編輯工作付之東流,通常將上述工 作稱作數(shù)據(jù)恢復(fù),數(shù)據(jù)恢復(fù)始終是人們希望解決的問題。
在現(xiàn)有的技術(shù)中,有些軟件是靠保存文檔副本的形式來實(shí)現(xiàn)數(shù)據(jù)恢復(fù)的, 有的是靠定時(shí)自動(dòng)存盤的方式來實(shí)現(xiàn)數(shù)據(jù)恢復(fù)的。但是這些數(shù)據(jù)恢復(fù)方式都有 很大的缺陷,對(duì)于保存文檔副本情況,如果災(zāi)難發(fā)生在這些副本的保存過程中 時(shí),那么這種情況本身就是一種災(zāi)難,由于這個(gè)副本是錯(cuò)誤的,它當(dāng)然不能恢 復(fù)出來。對(duì)于定時(shí)自動(dòng)存盤情況,由于定時(shí)存盤的方式有一定的時(shí)間間隔的, 也就是說在這次存盤之前發(fā)生災(zāi)難,那么只能恢復(fù)到上次存盤的狀態(tài),從上次 存盤到災(zāi)難發(fā)生之間的所有工作就不能恢復(fù)。其次,定時(shí)存盤的方式為了保證 文檔具有可恢復(fù)性,那么勢(shì)必要采用多個(gè)副本的方式來保存文件,這樣就浪費(fèi) 了磁盤空間,而且存盤操作會(huì)導(dǎo)致編輯者的操作暫停,會(huì)影響編輯效率,影響編輯者的心情。
發(fā)明內(nèi)容
本發(fā)明的實(shí)施例是提供一種數(shù)據(jù)保存的方法和才莫塊、及數(shù)據(jù)恢復(fù)的方法和模塊,可實(shí)現(xiàn)將數(shù)據(jù)恢復(fù)到災(zāi)難發(fā)生前的一次操作的狀態(tài)。
本發(fā)明提供了一種保存數(shù)據(jù)的方法,包括 在新建或打開文件的同時(shí),新建勤出恢復(fù)文件;
在恢復(fù)基礎(chǔ)文件上標(biāo)記恢復(fù)識(shí)別碼,并設(shè)置當(dāng)前打開文件的文件名和路徑信息,形成恢復(fù)文件;
獲得操作步驟,并將操作步驟以增量方式寫入所述恢復(fù)文件中。
當(dāng)接收到存儲(chǔ)當(dāng)前打開文件的命令時(shí),所述的方法還包括更新所述恢復(fù)文件中的當(dāng)前打開文件的文件名和路徑信息。
當(dāng)接收到關(guān)閉當(dāng)前打開文件的命令時(shí),所述的方法還包括刪除恢復(fù)文件。
將操作步驟寫入恢復(fù)文件中時(shí),還為該操作步驟標(biāo)記相應(yīng)的校驗(yàn)標(biāo)志位。
所述的將操作步驟以增量方式寫入所述恢復(fù)文件中具體包括
將操作步驟寫入恢復(fù)文件之前,將該操作步驟的校驗(yàn)標(biāo)志位設(shè)置為無效狀態(tài);
將所述操作步驟寫入恢復(fù)文件中; 將該操作步驟的校驗(yàn)標(biāo)志位設(shè)置為有效狀態(tài)。
本發(fā)明還公開了一種恢復(fù)數(shù)據(jù)的方法,包括
讀取恢復(fù)文件,所述的恢復(fù)文件包括操作步驟;
根據(jù)操作步驟恢復(fù)文件。 所述的根據(jù)操作步驟恢復(fù)文件具體包括
逐一讀取操作步驟;并將讀取的各個(gè)操作步驟與恢復(fù)程度條相對(duì)應(yīng);
通過恢復(fù)程度條確定恢復(fù)程度,并根據(jù)恢復(fù)程度將操作步驟恢復(fù)原文件。
所述的根據(jù)恢復(fù)程度將操作步驟恢復(fù)原文件具體包括在基礎(chǔ)恢復(fù)文件基 礎(chǔ)上執(zhí)行恢復(fù)程度之前的操作步驟。
本發(fā)明還公開了一種數(shù)據(jù)保存模塊,包括
文件管理器,用于在新建或打開文件的同時(shí),新建恢復(fù)文件,并從撤銷/ 恢復(fù)管理器中讀取操作步驟,接著以增量方式將操作步驟寫入所述恢復(fù)文件中;
撤銷/恢復(fù)管理器,用于獲得操作步驟增量,并通知文件管理器有操作步驟 的產(chǎn)生。
所述的文件管理器包括
生成恢復(fù)文件單元,用于保存一個(gè)當(dāng)前打開或者新建文件的副本,并在這 個(gè)副本的后面寫上原始文檔的名稱和路徑信息; 保存單元,用于保存操作步驟數(shù)據(jù)。 所述的文件管理器包括 刪除單元,用于刪除恢復(fù)文件; 更新單元,用于更新恢復(fù)文件的文件信息。 所述的撤銷/恢復(fù)管理器包括 獲得單元,用于獲得操作步驟;
通知單元,用于通知文件管理器有揭:行步驟產(chǎn)生,以^f更文件管理器對(duì)恢復(fù) 文件進(jìn)行更新。
本發(fā)明還公開了一種數(shù)據(jù)恢復(fù)模塊,包括
讀取單元,用于讀取恢復(fù)文件;
恢復(fù)單元,用于在基礎(chǔ)恢復(fù)文件基礎(chǔ)上執(zhí)行操作步驟。
本發(fā)明的效果在于本發(fā)明通過采用增量方式存儲(chǔ)各個(gè)操作步驟,可以提 供靈活的恢復(fù)方式,且可以恢復(fù)到災(zāi)難發(fā)生前一步之前的任何步驟。本發(fā)明只 需要一個(gè)副本文件,所以還節(jié)省了磁盤空間。
圖l是本發(fā)明實(shí)施例的恢復(fù)文件的文件結(jié)構(gòu)圖2示出了本發(fā)明實(shí)施例的數(shù)據(jù)保存的流程圖3示出了本發(fā)明實(shí)施例的數(shù)據(jù)恢復(fù)的流程圖4示出了本發(fā)明實(shí)施例的數(shù)據(jù)恢復(fù)界面;
圖5示出了本發(fā)明實(shí)施例的數(shù)據(jù)保存才莫塊;
圖6示出了本發(fā)明實(shí)施例的數(shù)據(jù)恢復(fù)模塊。
具體實(shí)施例方式
為了便于本領(lǐng)域一般技術(shù)人員理解和實(shí)現(xiàn)本發(fā)明,現(xiàn)結(jié)合附圖描繪本發(fā)明 的實(shí)施例。
圖1示出本發(fā)明實(shí)施例的恢復(fù)文件的格式,所述的恢復(fù)文件記載了每一步 的操作步驟的數(shù)據(jù),是恢復(fù)的基礎(chǔ),整個(gè)恢復(fù)過程都是圍繞著這個(gè)文件進(jìn)行的。 文件的格式分3部分組成1、基礎(chǔ)恢復(fù)文件,基礎(chǔ)恢復(fù)文件就是用戶打開的文 件或者新建文件的副本,只是文件頭部分同普通的文檔的文件頭部稍有不同, 在原文件的頭部的后面的保留字段有恢復(fù)識(shí)別碼、文件信息部分偏移量和增量 部分偏移量。所述的恢復(fù)識(shí)別碼用于標(biāo)識(shí)該文件為恢復(fù)文件,所述的文件信息 部分偏移量表示文件信息相對(duì)于整個(gè)文件頭的位置信息,所述的增量部分偏移 量表示相對(duì)于整個(gè)文件的頭的位置信息。2、文件信息部分,記錄了當(dāng)前系統(tǒng) 被用打開的文檔的文件名稱,路徑等信息,這個(gè)被打開的文檔就是我們要對(duì)其 做操作數(shù)據(jù)存儲(chǔ)以防發(fā)生突難的文檔,這個(gè)信息也就是我們要把發(fā)生臾難的文 檔要恢復(fù)到目的地。如果是新建的文件則該信息為空,恢復(fù)時(shí)按照計(jì)算機(jī)系統(tǒng) 的默認(rèn)的命名規(guī)則命名文檔名稱。3、增量部分,增量部分包括校驗(yàn)標(biāo)志位和 操作步驟的數(shù)據(jù)。
恢復(fù)文件的命名規(guī)則,用UUID (全局唯一標(biāo)識(shí)符)來作為恢復(fù)文件的名 字,這樣避免了名稱的重復(fù)。把災(zāi)難恢復(fù)文件放到一個(gè)專門的目錄里面。名稱 類似下面所舉的情況{A4B59C3F-A702-4db8-9914-21AE02669D98}.***。
實(shí)現(xiàn)數(shù)據(jù)保存和數(shù)據(jù)恢復(fù)要靠?jī)蓚€(gè)管理器來實(shí)現(xiàn)文件管理器和 Undo/Redo (撤銷/恢復(fù))管理器。文件管理器負(fù)責(zé)文件的打開、保存等有關(guān)于 存檔文件的操作,并根據(jù)Undo/Redo的通知以增量方式存儲(chǔ)操作步驟。 Undo/Redo管理器用于發(fā)現(xiàn)是否有搡作步驟,若發(fā)現(xiàn)操作步驟,則通知丈件管理器。
為了實(shí)現(xiàn)兩個(gè)管理器之間的聯(lián)系,有多種方式可以選擇。如選用代碼可復(fù) 用性比較好的設(shè)計(jì)模式中的觀察者模式,或者兩個(gè)管理器相互耦合,向?qū)Ψ奖?露接口的形式,或者在兩個(gè)管理器之間加一個(gè)中間層來溝通數(shù)據(jù)和操作等形式來完成。
下面以觀察者模式為例來說明上述兩個(gè)管理器之間的聯(lián)系。所述的觀察者模式是指讓文件管理器派生自觀察者類,這樣文件管理器就是一個(gè)觀察者, Undo/Redo管理器派生自觀察者管理器,當(dāng)Undo/Redo管理器發(fā)現(xiàn)有操作步驟時(shí) 發(fā)出通知,作為觀察者的文件管理器收到通知后,然后調(diào)用相應(yīng)的函數(shù)來處理 恢復(fù)文件的操作。
圖2示出了保存數(shù)據(jù)的方法。下面結(jié)合圖2描述本發(fā)明的保存數(shù)據(jù)的方法。
步驟301、新建或打開文檔。
步驟302、為當(dāng)前文檔生成一個(gè)恢復(fù)文件的文件名。
步驟303、生成基礎(chǔ)恢復(fù)文件,然后在基礎(chǔ)恢復(fù)文件上增加恢復(fù)識(shí)別碼, 并增加當(dāng)前打開文件的文件名和路徑信息,以形成恢復(fù)文件。
步驟304、文件管理器處于觀察狀態(tài),這時(shí)如果Undo/Redo管理器有操作步 驟后,它通知文件管理器。
步驟305、文件管理器從Undo/Redo管理器中讀取操作步驟數(shù)據(jù)并以增量方 式將操作步驟寫入恢復(fù)文件中。
步驟306、接收命令。
步驟307、判斷接收到的命令是否為存盤或者另存命令,若是,執(zhí)行步驟 308,否則,執(zhí)行步驟309。
步驟308、更新恢復(fù)文件中的當(dāng)前文件的文件名和路徑信息,并返回步驟305。
步驟309,如果接收的命令為關(guān)閉文檔命令,則刪除恢復(fù)文件,因?yàn)榛謴?fù) 文件已經(jīng)完成了它的使命,不再有任何的意義了。
在向恢復(fù)文件中以增量方式存儲(chǔ)操作步驟時(shí),需要設(shè)置校驗(yàn)標(biāo)志位,以表 示本搡作步驟是否完整有效。在向恢復(fù)文件中寫入操作步驟之前,首先將校驗(yàn) 標(biāo)志位設(shè)置為無效狀態(tài),然后開始寫操作步驟,在操作步驟寫完之后,將校驗(yàn) 標(biāo)志位設(shè)置為有效狀態(tài)。校驗(yàn)標(biāo)志位的意義在于在恢復(fù)時(shí)讀取操作步驟的時(shí) 候,如果發(fā)現(xiàn)該操作步驟的校驗(yàn)標(biāo)志為無效狀態(tài)時(shí),那么說明以下的數(shù)據(jù)是不 可靠的,就不做恢復(fù)。在操作步驟的末尾寫上空的ID,表示該操作步驟的結(jié)束。
在發(fā)生災(zāi)難(斷電、死機(jī)等)以后,可根據(jù)本發(fā)明保存的數(shù)據(jù)恢復(fù)文件。圖3示出了本發(fā)明的恢復(fù)數(shù)據(jù)的流程圖。下面參照?qǐng)D3描述本發(fā)明實(shí)施例的數(shù)據(jù)恢復(fù)的方法。
步驟401、運(yùn)行Windows的API函數(shù)來執(zhí)行命令行來直接打開文件,然后由 API函數(shù)ProcessShellCommand來執(zhí)行打開文件的命令行,然后打開文檔。
步驟402、在存^:災(zāi)難恢復(fù)文件目錄下去搜索有無恢復(fù)文件,若無,執(zhí)行 步驟404,否則,執(zhí)4于步驟403。
步驟403、讀取突難恢復(fù)文件目錄下的恢復(fù)文件。
如圖5所示,在讀取恢復(fù)文件時(shí),將恢復(fù)文件中的操作步驟與恢復(fù)程度條 相對(duì)應(yīng)。即, 一個(gè)揭:作步驟一個(gè)操作步驟的讀取,直到讀到某個(gè)校驗(yàn)標(biāo)志位為 無效狀態(tài),或者讀到文件尾部沒有增量為止,在讀取恢復(fù)文件的同時(shí)統(tǒng)計(jì)可恢 復(fù)的操作步驟的步數(shù)。
步驟404、正常啟動(dòng)文檔,如打開或新建文檔。
步驟405、通過恢復(fù)程度條確定恢復(fù)程度。
步驟406、判斷恢復(fù)或關(guān)閉,若恢復(fù),則執(zhí)行步驟407,否則,執(zhí)行步驟409。
步驟407、將每個(gè)操作步驟的數(shù)據(jù)提取出來,然后生成版面對(duì)象或者對(duì)某 個(gè)對(duì)象的操作,這些操作可包括3個(gè)狀態(tài)對(duì)象的創(chuàng)建、對(duì)象的修改、對(duì)象的 刪除。根據(jù)這些操作來更新版面上的對(duì)象。從而達(dá)到文檔恢復(fù)的目的。對(duì)開發(fā) 人員來講,這個(gè)還可以起到一個(gè)日志的作用,根據(jù)每一步的操作來對(duì)軟件死機(jī) 做出分析和判斷,因?yàn)檫@個(gè)對(duì)用戶的整個(gè)搡作的一個(gè)回放。
步驟408、然后根據(jù)恢復(fù)文件的文件信息部分(參見圖l)所記錄的數(shù)據(jù), 得到原來文檔的名稱和路徑,把生成的新文件放到原來的路徑下去,并改稱相 應(yīng)的名字,如果原路徑不可用就嘗試新建該路徑下的文件夾,如果不能新建則 提示用戶存盤到一個(gè)新的路徑下。如果原文檔是新建的文件,沒有路徑名稱, 則把該文檔恢復(fù)到內(nèi)存中,就像一個(gè)新建的文檔那樣,由用戶自己選擇存盤的 路徑-
步驟409、刪除災(zāi)難恢復(fù)文件。
如圖4所示,多文檔界面的編輯軟件每個(gè)文檔會(huì)有一個(gè)恢復(fù)文件,如果用 戶在同時(shí)編輯多個(gè)文檔時(shí)發(fā)生突難,那么可以同時(shí)恢復(fù)多個(gè)文檔。可以通過列 表選#^要恢復(fù)的文檔,并且為這個(gè)文檔設(shè)置要恢復(fù)到的步驟。
如圖5所示,本發(fā)明的實(shí)施例還公開了一種數(shù)據(jù)保存模塊,包括文件管 理器,用于在新建或打開文件的同時(shí),新建恢復(fù)文件,并從Undo/redo管理器中 讀取操作步驟,接著以增量方式將操作步驟寫入所述恢復(fù)文件中;Undo/redo 管理器,用于獲得才喿作步驟,并通知文件管理器。
所述的文件管理器包括生成恢復(fù)文件名稱單元,用于生成一個(gè)全局唯一 標(biāo)示符來作為恢復(fù)文件的名字;生成恢復(fù)文件單元,用于保存一個(gè)當(dāng)前打開或 者新建文件的副本,然后調(diào)用更新恢復(fù)文件信息才莫塊來在這個(gè)副本的后面寫上 原始文檔的名稱和路徑等信息;刪除單元,用于刪除恢復(fù)文件;更新單元,用 于更新恢復(fù)文件的文件信息;讀取操作步驟數(shù)據(jù)單元,用于讀取操作步驟數(shù)據(jù); 保存單元,用于保存操作步驟數(shù)據(jù);恢復(fù)操作步驟信息到版面單元,用于將操 作步驟信息恢復(fù)到版面。
所述的Undo/Redo管理器包括獲得單元,用于獲得操作步驟;通知單元, 用于通知文件管理器有操行步驟產(chǎn)生,以便文件管理器對(duì)恢復(fù)文件進(jìn)行更新。
如圖6所示,本發(fā)明的實(shí)施例還公開了一種數(shù)據(jù)恢復(fù)模塊,包括讀取單 元,用于讀取恢復(fù)文件;恢復(fù)單元,用于在基礎(chǔ)恢復(fù)文件基礎(chǔ)上執(zhí)行操作步驟。
雖然通過實(shí)施例描繪了本發(fā)明,但本領(lǐng)域普通技術(shù)人員知道,在不脫離本發(fā)明的精神和實(shí)質(zhì)的情況下,就可使本發(fā)明有許多變形和變化,本發(fā)明的范圍 由所附的權(quán)利要求來限定。
權(quán)利要求
1、一種保存數(shù)據(jù)的方法,其特征在于,包括在新建或打開文件的同時(shí),新建基礎(chǔ)恢復(fù)文件;在恢復(fù)基礎(chǔ)文件上標(biāo)記恢復(fù)識(shí)別碼,并設(shè)置當(dāng)前打開文件的文件名和路徑信息,形成恢復(fù)文件;獲得操作步驟,并將操作步驟以增量方式寫入所述恢復(fù)文件中。
2、 根據(jù)權(quán)利要求l所述的方法,其特征在于,當(dāng)接收到存儲(chǔ)當(dāng)前打開文件 的命令時(shí),所述的方法還包括更新所述恢復(fù)文件中的當(dāng)前打開文件的文件名 和路徑信息。
3、 根據(jù)權(quán)利要求l所述的方法,其特征在于,當(dāng)接收到關(guān)閉當(dāng)前打開文件 的命令時(shí),所述的方法還包括刪除恢復(fù)文件。
4、 根據(jù)權(quán)利要求l所述的方法,其特征在于,將操作步驟寫入恢復(fù)文件中 時(shí),還為該操作步驟標(biāo)記相應(yīng)的校驗(yàn)標(biāo)志位。
5、 根據(jù)權(quán)利要求4所述的方法,其特征在于,所述的將操作步驟以增量方 式寫入所述恢復(fù)文件中具體包括將操作步驟寫入恢復(fù)文件之前,將該操作步驟的校驗(yàn)標(biāo)志位設(shè)置為無效狀態(tài);將所述操作步驟寫入恢復(fù)文件中; 將該操作步驟的校驗(yàn)標(biāo)志位設(shè)置為有效狀態(tài)。
6、 一種恢復(fù)數(shù)據(jù)的方法,其特征在于,包括 讀取恢復(fù)文件,所述的恢復(fù)文件包括操作步驟; 根據(jù)操作步驟恢復(fù)文件。
7、 根據(jù)權(quán)利要求6所述的方法,其特征在于,所述的根據(jù)操作步驟恢復(fù)文 件具體包括逐一讀取操作步驟;并將讀取的各個(gè)操作步驟與恢復(fù)程度條相對(duì)應(yīng); 通過恢復(fù)程度條確定恢復(fù)程度,并根據(jù)恢復(fù)程度將操作步驟恢復(fù)原文件。
8、 根據(jù)權(quán)利要求7所述的方法,其特征在于,所述的根據(jù)恢復(fù)程度將操作 步驟恢復(fù)原文件具體包括在基礎(chǔ)恢復(fù)文件基礎(chǔ)上執(zhí)行恢復(fù)程度之前的操作步 驟。
9、 一種數(shù)據(jù)保存模塊,其特征在于,包括文件管理器,用于在新建或打開文件的同時(shí),新建恢復(fù)文件,并從撤銷/恢復(fù)管理器中讀取操作步驟,接著以增量方式將#:作步驟寫入所述恢復(fù)文件中;撤銷/恢復(fù)管理器,用于獲得操作步驟增量,并通知文件管理器有操作步驟 的產(chǎn)生。
10、 根據(jù)權(quán)利要求9所述的數(shù)據(jù)保存模塊,其特征在于,所述的文件管理 器包括生成恢復(fù)文件單元,用于保存一個(gè)當(dāng)前打開或者新建文件的副本,并在這 個(gè)副本的后面寫上原始文檔的名稱和^各徑信息; 保存單元,用于保存操作步驟數(shù)據(jù)。
11、 根據(jù)權(quán)利要求9所述的數(shù)據(jù)保存模塊,其特征在于,所述的文件管理 器包括刪除單元,用于刪除恢復(fù)文件; 更新單元,用于更新恢復(fù)文件的文件信息。
12、 根據(jù)權(quán)利要求9所述的數(shù)據(jù)保存模塊,其特征在于,所述的撤銷/恢復(fù) 管理器包括獲得單元,用于獲得操作步驟;通知單元,用于通知文件管理器有操行步驟產(chǎn)生,以便文件管理器對(duì)恢復(fù) 文件進(jìn)行更新。
13、 一種數(shù)據(jù)恢復(fù)模塊,其特征在于,包括 讀取單元,用于讀取恢復(fù)文件;恢復(fù)單元,用于在基礎(chǔ)恢復(fù)文件基礎(chǔ)上執(zhí)行操作步驟。
全文摘要
本發(fā)明公開了一種保存數(shù)據(jù)的方法,可實(shí)現(xiàn)將數(shù)據(jù)恢復(fù)到災(zāi)難發(fā)生前的一次操作的狀態(tài)。所述的方法包括在新建或打開文件的同時(shí),新建基礎(chǔ)恢復(fù)文件;在恢復(fù)基礎(chǔ)文件上標(biāo)記恢復(fù)識(shí)別碼,并設(shè)置當(dāng)前打開文件的文件名和路徑信息,形成恢復(fù)文件;獲得操作步驟,并將操作步驟以增量方式寫入所述恢復(fù)文件中。本發(fā)明還公開了一種數(shù)據(jù)保存模塊,及恢復(fù)數(shù)據(jù)的方法和模塊,根據(jù)本發(fā)明,通過采用增量方式存儲(chǔ)各個(gè)操作步驟,可以提供靈活的恢復(fù)方式,且可以恢復(fù)到災(zāi)難發(fā)生前一步之前的任何步驟。本發(fā)明只需要一個(gè)副本文件,所以還節(jié)省了磁盤空間。
文檔編號(hào)G06F11/14GK101201768SQ200610164999
公開日2008年6月18日 申請(qǐng)日期2006年12月11日 優(yōu)先權(quán)日2006年12月11日
發(fā)明者寧 張, 楊雷鳴, 趙志剛 申請(qǐng)人:北京北大方正電子有限公司;北京大學(xué);北大方正集團(tuán)有限公司