一種實現對文件變化區域監視的方法
2023-06-26 11:36:46 3
專利名稱:一種實現對文件變化區域監視的方法
技術領域:
本發明涉及計算機技術領域,更確切地說是涉及計算機技術領域中的一種實現對文件變化區域監視的方法。
背景技術:
Windows作業系統是現在最常見的微機作業系統,用戶在使用基於Windows作業系統的計算機時,如果需要對某些數據進行實時備份,則通常採用的方法是啟動線程,通過線程監視以實現文件備份。在實現文件備份時,線程監視文件的方法很簡單,通過比較文件的大小、修改時間等簡單的屬性監視該文件是否改變,如果改變了,則備份該文件。
通過線程進行文件備份實現起來非常簡單,但是,由於線程只對文件的大小、修改時間等簡單的屬性進行監視和比較,而不知道文件具體是哪個區域有了變化,因此需要備份整個文件,這樣需要佔用很大的硬碟空間,且對整個文件進行備份需要花費較長的時間,在備份資料庫文件等大型文件時這個問題更為突出。所以說,現有的線程對文件監視的方法不是一個好的監視方法,無法實現對文件的變化區域的監視。
發明內容
有鑑於此,本發明的主要目的在於提供一種實現文件變化區域監視的方法,使在文件發生變化時,能夠得知文件改變的具體區域。
為達到以上目的,本發明的技術方案是這樣實現的一種實現對文件變化區域監視的方法,該方法包括以下步驟a.獲取I/O管理器創建的、與文件對應的I/O請求包(IRP);
b.記錄IRP中該文件的文件名及文件變化區域信息。
所述步驟b之前進一步包括,b』.根據IRP中的記錄信息判斷該文件是否滿足預先設置的文件處理規則,如果滿足,則進入步驟b,否則,將IRP通過過濾器設備對象(Filter DO)提交給卷設備對象(VDO)。
所述文件處理規則包括處理修改、創建和刪除的文件。
所述文件處理規則從上層應用程式獲得,則所述步驟b進一步包括,生成包含文件變化區域的通知消息,並發送給該上層應用程式。
所述步驟b中進一步包括,b」.建立跟蹤數據結構;所述IRP中的文件名及文件變化區域信息保存在該跟蹤數據結構中。
所述步驟b」建立的跟蹤數據結構中進一步包括文件的變化類型,則將IRP中的文件變化類型信息保存在該跟蹤數據結構中。
所述跟蹤數據結構中進一步包括文件的變化區域結構鍊表指針,則將IRP中的文件的變化區域結構鍊表指針保存在該跟蹤數據結構中。
所述步驟b」之前進一步包括,b」1.判斷是否存在該文件對應的跟蹤數據結構,如果有,則直接更新該跟蹤數據結構中的信息,否則,返回步驟b」。
所述步驟b中記錄的文件變化區域包括文件變化的起始位置和修改大小信息。
本發明方案通過設置跟蹤數據結構、對IRP進行分析,並將IRP中的信息保存在跟蹤數據結構中,實現了對文件變化區域的監視。並且由於本發明對文件變化區域監視的過程不能由用戶直接操作,因此可以避免在通過線程對文件進行監視時由於用戶的誤操作或作業系統錯誤導致監視出現遺漏的問題。
應用本發明方法還可以使對文件進行實時備份時,只備份文件的變化區域,提高備份文件的速度,並節省硬碟的空間。
圖1為Windows根據用戶訪問請求作處理的過程示意圖;圖2為本發明實施例中監視驅動程序實現監視文件的流程圖;圖3為本發明實施例中利用監視驅動程序實現文件備份的流程圖。
具體實施例方式
下面結合附圖及具體實施例對本發明方法作進一步詳細的說明。
首先對與本發明方案相關的技術作一個簡單介紹。
Windows作業系統可以支持包括FAT、FAT32、NTFS、CDFS等眾多不同類的文件系統。在Windows中,用戶實現對這些文件系統對應文件的訪問,包括創建、打開、讀寫、刪除等操作,都是在I/O管理器的控制下,由與文件相關的文件系統驅動程序協同工作完成的,其中,文件系統驅動程序建立的設備對象包括控制設備對象(CDO)、卷設備對象(VDO)和過濾器設備對象(Filter DO),其中Filter DO又可以分為上層Filter DO,中層Filter DO和下層Filter DO。Windows根據用戶訪問請求作處理的過程參見圖1,具體來說,用戶首先向Windows發送對文件的訪問信息,Windows得到該消息後,啟動Windows API訪問該文件對應的文件系統,Windows API向I/O管理器發送相關的消息,I/O管理器創建該文件對應的IRP,該IRP中包括該文件的文件名、被訪問的區域及需要作的處理等,並將該IRP依次發送到Filter DO和VDO,由VDO對IRP進行處理,最終轉變為對硬碟邏輯扇區的訪問請求。
本發明方案即在I/O管理器和VDO之間的Filter DO中創建一個用於監視文件的監視驅動程序,Filter DO中可以分為三層,該監視驅動程序可以放置在任何一層。該監視驅動程序在對IRP中的信息進行分析並保存相關信息後,將該IRP再通過Filter DO發送給VDO,由VDO對IRP進行處理。由於監視驅動程序對IRP不作任何處理,因此不影響VDO對IRP的處理。該監視驅動程序實現監視文件的流程參見圖2,實現監視的過程如下a.從I/O管理器中獲取所要監視的文件對應的IRP;b.設置一個包括文件名、文件變化類型、變化區域結構鍊表指針、變化區域的起始位置及修改大小信息的跟蹤數據結構;c.從該IRP中獲取相應的信息,並將該信息保存到該跟蹤數據結構對應各項中。
如果是連續地監視某個文件,該文件對應的跟蹤數據結構可能已經存在,因此在進入步驟b之前,可以先判斷該文件對應的跟蹤數據結構是否已經存在,如果已經存在,則步驟c直接根據IRP中的信息更新跟蹤數據結構中的相關信息,如果不存在,則進入步驟b。
本發明的監視驅動程序可以設置為由Windows在啟動時直接啟動,也可以設置為通過上層應用程式啟動。下面舉例對通過上層應用程式啟動該監視驅動程序作說明。
如果把本發明的監視方法應用在文件備份中,則可以只對文件最小的變化區域進行備份,而不需要對整個文件進行備份。在應用本發明監視方法的文件備份過程中,需要對應地設置由用戶啟動並操作的用戶態程序作為上層應用程式,並需要對監視驅動程序作相應的功能擴展,使用戶可以通過該用戶態程序啟動監視驅動程序,並根據監視驅動程序的跟蹤數據結構中的相關信息對文件的改變部分進行備份。該功能擴展包括監視驅動程序在建立跟蹤數據結構後,生成包含文件改變區域信息的文件改變通知消息,並將該通知消息發送給用戶態程序。
以將該監控驅動程序創建在上層Filter DO為例,整個實現文件備份的流程參見圖3,實現備份的過程如下a.用戶選擇要備份的文件,根據需要確定文件相關的文件處理規則,並將需要備份的文件名信息及所確定的文件處理規則發送給監視驅動程序。
本實施例的文件處理規則即為備份規則,包括對修改的文件及新創建的文件進行備份,對刪除的文件不進行備份。
b.監視驅動程序收到該文件名信息及備份規則後,從I/O管理器中獲取該文件對應的IRP,並判斷IRP中的文件變化類型信息是否滿足備份規則,以確定是否需要建立該文件對應的跟蹤數據結構,如果滿足備份規則,則建立該文件對應的跟蹤數據結構,在該結構中保存相關信息,並發送文件變化的通知消息給用戶態程序,該通知消息中包含跟蹤數據結構中的文件變化區域信息,之後將該IRP依次發送給該監控驅動程序下面的Filter DO和VDO,由VDO對IRP進行處理,如果不滿足備份規則,則直接將該IRP發送給該監控驅動程序下面的Filter DO和VDO,由VDO進行處理。
本實施例中,如果IRP中的文件變化類型是刪除文件,則監視驅動程序根據備份規則可知不需要進行備份,因此直接依次將該IRP發送給該監控驅動程序下面的Filter DO和VDO;如果IRP中的文件變化類型是修改文件或新創建文件,則監視驅動程序根據備份規則可知需要進行備份,因此需要執行步驟b中對應的操作。
c.用戶態程序收到通知消息後,根據通知消息中的文件變化區域信息備份該變化部分。
使用本發明方案所提供的監視文件的方法,可以在文件改變時記錄文件具體變化區域的相關信息,並且,由於監視驅動程序不能直接由用戶啟動或終止,因此可以避免用戶的誤操作,提高了監視文件的安全性。
以上所述僅為本發明的較佳實施例而已,並不用以限制本發明,凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。
權利要求
1.一種實現對文件變化區域監視的方法,其特徵在於該方法包括以下步驟a.獲取I/O管理器創建的、與文件對應的I/O請求包(IRP);b.記錄IRP中該文件的文件名及文件變化區域信息。
2.根據權利要求1所述的方法,其特徵在於所述步驟b之前進一步包括,b』.根據IRP中的記錄信息判斷該文件是否滿足預先設置的文件處理規則,如果滿足,則進入步驟b,否則,將IRP通過過濾器設備對象(Filter DO)提交給卷設備對象(VDO)。
3.根據權利要求2所述的方法,其特徵在於,所述文件處理規則包括處理修改、創建和刪除的文件。
4.根據權利要求2所述的方法,其特徵在於,所述文件處理規則從上層應用程式獲得,則所述步驟b進一步包括,生成包含文件變化區域的通知消息,並發送給該上層應用程式。
5.根據權利要求1所述的方法,其特徵在於所述步驟b中進一步包括,b」.建立跟蹤數據結構;所述IRP中的文件名及文件變化區域信息保存在該跟蹤數據結構中。
6.根據權利要求5所述的方法,其特徵在於,所述步驟b」建立的跟蹤數據結構中進一步包括文件的變化類型,則將IRP中的文件變化類型信息保存在該跟蹤數據結構中。
7.根據權利要求5所述的方法,其特徵在於,所述跟蹤數據結構中進一步包括文件的變化區域結構鍊表指針,則將IRP中的文件的變化區域結構鍊表指針保存在該跟蹤數據結構中。
8.根據權利要求5所述的方法,其特徵在於所述步驟b」之前進一步包括,b」1.判斷是否存在該文件對應的跟蹤數據結構,如果有,則直接更新該跟蹤數據結構中的信息,否則,返回步驟b」。
9.根據權利要求1所述的方法,其特徵在於,所述步驟b中記錄的文件變化區域包括文件變化的起始位置和修改大小信息。
全文摘要
本發明公開了一種實現對文件變化區域監視的方法,該方法首先獲取I/O管理器創建的、與文件對應的I/O請求包(IRP),並記錄該文件的文件名及對應IRP中的文件變化區域信息,之後將該IRP通過過濾器對象(Filter DO)提交給卷設備對象(VDO)。該方法解決了現有技術中無法實現對文件的變化區域進行監視的問題,實現了對文件變化區域的監視,並且由於實現監視的過程不能由用戶直接操作,因此可以避免由於用戶的誤操作或作業系統錯誤而導致監視出現遺漏的問題。
文檔編號G06F11/30GK1542611SQ03124248
公開日2004年11月3日 申請日期2003年4月30日 優先權日2003年4月30日
發明者王衛, 鮑育卿, 陳長徵, 王 衛 申請人:聯想(北京)有限公司