TWI420391B - 用於保護目標檔案的儲存裝置及方法 - Google Patents

用於保護目標檔案的儲存裝置及方法 Download PDF

Info

Publication number
TWI420391B
TWI420391B TW96145944A TW96145944A TWI420391B TW I420391 B TWI420391 B TW I420391B TW 96145944 A TW96145944 A TW 96145944A TW 96145944 A TW96145944 A TW 96145944A TW I420391 B TWI420391 B TW I420391B
Authority
TW
Taiwan
Prior art keywords
file
target
application
command
temporary
Prior art date
Application number
TW96145944A
Other languages
English (en)
Other versions
TW200839568A (en
Inventor
Ittai Golde
Kobi Ben Tzvi
Oron Vexler
Itzhak Pomerantz
Original Assignee
Sandisk Il Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sandisk Il Ltd filed Critical Sandisk Il Ltd
Publication of TW200839568A publication Critical patent/TW200839568A/zh
Application granted granted Critical
Publication of TWI420391B publication Critical patent/TWI420391B/zh

Links

Description

用於保護目標檔案的儲存裝置及方法
用以保護目標檔案免受損壞之各種方法及系統係可能的,且特定言之,方法及系統可防止在目標檔案打開以供寫入時歸因於干擾而發生之資料損壞。
快閃記憶體裝置在電腦工程技術中為眾所周知的。
將資訊儲存於此等記憶體中之普通方式係在由作業系統所管理之資料檔案中。
快閃儲存系統之已知特性為:若在檔案打開以供寫入時發生諸如電力故障或軟體崩潰之特定意外事件,則資料檔案易受資料損壞。此造成一嚴重問題,因為至檔案內之寫入為常規地必要的,且檔案必須打開以供寫入,以便使其更新。
已開發出用於使軟體應用程式以減少風險之特殊方式來處理檔案的解決辦法。可在許多文字處理應用程式中看到此等解決辦法,此週期性地產生打開的檔案之備份複本。或者,當已偵測到檔案之損壞時,修正公用程式(fix utility)執行後效應。然而,此等解決辦法為應用程式依賴性的,從而減慢了應用程式之開發,且此等解決辦法為歸因於程式設計錯誤之其他類型之問題的來源。此外,當執行應用程式保護檔案之原始版本且亦保持經更新臨時複本時,出現存取衝突之問題(若不同應用程式調用檔案,則其將存取哪一檔案?)。此需要檔案之不便鎖定。保護方 法亦可用於全系統檔案保護機制,其經常地更新整個資料儲存裝置或特定重要資料之永久備份複本。保持永久備份需要大量資料儲存空間及系統資源以經常地檢查及更新檔案。
因此,廣泛地認為需要且將高度有利的是具有允許任何應用程式使用任何資料檔案而無將歸因於上述原因而損壞檔案之風險且不保持永久備份複本的解決辦法。
用以保護目標檔案免受資料損壞之各種方法及系統係可能的,且特定言之,方法及系統可防止在目標檔案打開以供寫入時歸因於干擾而發生之資料損壞。
一用於儲存目標檔案且保護目標檔案免受資料損壞之系統的一實施例可包括:a)一處理器,其經組態以擷取及執行包裝應用程式的程式碼,該程式碼包括以下各項:i)用於截取由第二應用程式所發出之至少一檔案命令的程式碼,至少一檔案命令可操作以影響目標檔案,ii)用於儲存與至少一檔案命令有關之更新資訊的程式碼,及iii)用於利用更新資訊來更新目標檔案的程式碼;b)一第一記憶體空間,其用於儲存目標檔案;及c)一第二記憶體空間,其用於儲存更新資訊。包裝應用程式可獨立於發出檔案命令之第二應用程式。
在一實施電腦可讀程式碼之電腦可讀儲存媒體的一實施例中,電腦可讀程式碼用於保護目標檔案免受資料損壞,電腦可讀程式碼可包括:a)用於截取由應用程式所發出且 可操作以影響目標檔案之至少一檔案命令的程式碼;b)用於儲存與至少一檔案命令有關之更新資訊而不修改目標檔案的程式碼;及c)用於利用更新資訊來更新目標檔案的程式碼。電腦可讀程式碼可獨立於發出命令之應用程式。
一採用包裝程式來保護目標檔案免受資料損壞之方法的一實施例可包括以下步驟:a)藉由包裝程式來截取可操作以影響目標檔案且由應用程式所發出之至少一檔案命令,截取步驟對於應用程式為透通式的;b)儲存與至少一檔案命令有關之更新資訊而不修改目標檔案;及c)利用更新資訊來更新目標檔案。
一用於自受保護目標檔案讀取資料之系統的一實施例可包括一經組態以擷取及執行包裝應用程式之程式碼的處理器,該程式碼包括以下各項:用於截取由一獨立於包裝應用程式之應用程式所發出之至少一檔案命令的程式碼,檔案命令可操作以存取受保護目標檔案;及用於讀取與檔案命令有關之更新資訊的程式碼。該系統亦可包括一用於儲存受保護目標檔案之第一記憶體空間及一用於儲存更新資訊之第二記憶體空間。
一採用包裝程式來讀取受保護目標檔案之方法的一實施例可包括以下步驟:藉由包裝程式來截取由應用程式所發出之至少一檔案命令,檔案命令可操作以存取受保護目標檔案。截取步驟對於應用程式可為透通式的。該方法亦可包括自增量檔案讀取與至少一檔案命令有關之更新資訊的步驟。增量檔案可獨立於受保護目標檔案。該方法可進一 步包括合併來自目標檔案之資料與更新資訊及傳回合併資料以作為對檔案命令之回應的步驟。
一用於儲存目標檔案且保護目標檔案免受資料損壞之系統的一實施例可包括一用於儲存目標檔案之第一記憶體空間。該系統亦可包括一用於儲存與可操作以影響目標檔案之至少一檔案命令有關之更新資訊的第二記憶體空間。該系統亦可包括一經組態以擷取及執行包裝應用程式之程式碼的處理器,該程式碼包括以下各項:用於截取可操作以影響目標檔案之至少一檔案命令的程式碼;用於將更新資訊儲存至第二記憶體空間的程式碼;及用於利用更新資訊來更新目標檔案的程式碼。包裝程式可獨立於發出檔案命令之應用程式。
在用於儲存目標檔案之系統中,第一記憶體空間可駐存於資料處理裝置之非揮發性記憶體中。在系統之一些實施例中,第二記憶體空間可駐存於與第一記憶體空間相同的非揮發性記憶體中,其中目標檔案與更新資訊儲存於記憶體中之獨立位置中。在其他實施例中,第二記憶體空間可駐存於資料處理裝置之揮發性記憶體中。在其他實施例中,第二記憶體空間可駐存於資料儲存裝置之記憶體(揮發性或非揮發性)中。
在用於儲存目標檔案之系統中,第一記憶體空間可駐存於攜帶型資料儲存裝置之非揮發性記憶體中。攜帶型資料儲存裝置之實例包括抽取式媒體(例如,磁性碟片或光學碟片)或攜帶型磁碟(例如,快閃碟片、外部硬磁碟或智慧 卡)。在一些實施例中,第二記憶體空間可駐存於與第一記憶體空間相同的記憶體中,其中目標檔案與更新資訊儲存於記憶體中之獨立位置中。在其他實施例中,第二記憶體空間可駐存於資料處理裝置之記憶體(揮發性或非揮發性)中。在其他實施例中,第二記憶體空間可駐存於攜帶型資料儲存裝置之揮發性記憶體中。
在用於儲存目標檔案之系統中,更新資訊可僅包括與至少一檔案命令有關之資料。特定言之,更新資料、第二記憶體空間及增量檔案可能不含有自目標檔案所複製之資料。因此,即使在已儲存由應用程式所發出且可操作以影響目標檔案之命令之後,仍將僅保持目標檔案中之資料的一個複本(目標檔案之資料的複本僅儲存於第一記憶體空間中)及與所儲存檔案命令有關之更新資訊的一個複本(與所儲存檔案命令有關之資料僅儲存於第二記憶體空間中)。僅在合併事件之後才將來自目標檔案之資料的第二複本置放於臨時檔案內。
一用於儲存目標檔案之系統的一實施例可進一步包括一用於儲存臨時檔案之第三記憶體空間,且包裝應用程式可進一步包括用於將目標檔案之至少一部分複製至臨時檔案內的程式碼。在替代實施例中,臨時檔案為獨立檔案或現有檔案中之臨時分配位置或揮發性記憶體中之臨時分配位置。包裝應用程式亦可進一步包括用於將所儲存更新資訊應用於臨時檔案以產生目標檔案之經更新版本的程式碼。包裝應用程式亦可進一步包括用於利用臨時檔案來替換目 標檔案之一部分的程式碼。根據一替代實施例,第三記憶體空間可駐存於與第一記憶體空間相同的記憶體中。在另一替代實施例中,第三記憶體空間可駐存於與第二記憶體空間相同的記憶體中。在另一替代實施例中,第三記憶體空間可駐存於上文所列出之記憶體中之任一者中。因此,應理解,第三記憶體空間可駐存於資料處理裝置或資料儲存裝置之揮發性或非揮發性記憶體中,且第三記憶體空間之每一替代位置可與第一及第二記憶體空間之每一替代位置組合。
一實施用於保護目標檔案免受資料損壞之電腦可讀程式碼之電腦可讀儲存媒體的一實施例可包括用於截取由應用程式所發出之至少一檔案命令的程式碼,程式碼獨立於發出檔案命令之應用程式。在下文所描述之實施例中,程式碼可獨立於任何特定應用程式而被執行且自任意應用程式截取檔案命令。檔案命令可操作以影響目標檔案。亦可包括用於儲存與檔案命令有關之更新資訊而不修改目標檔案且用於利用更新資訊來更新目標檔案的程式碼。在替代實施例中,程式碼可指定:將根據一固定時間排程來執行更新;或將回應於一或多個終止事件來執行更新;將根據一固定時間排程與一或多個終止事件之組合來執行更新。電腦可讀媒體之實例可包括攜帶型儲存裝置中所含有之ROM或以儲存裝置而銷售之封裝中所包括之抽取式媒體(例如,CD)。或者,電腦可讀媒體可為安裝於可經由網際網路而存取之伺服器上的硬碟。程式碼可充當單機程式以保 護一或多個任意儲存裝置上之資料。或者,程式碼可包括於驅動程式中以用於在資料處理裝置上執行,驅動程式充當資料處理裝置與資料儲存裝置之間的介面。或者,程式碼可併入作業系統內或檔案伺服器應用程式內。在另一可能替代實施例中,藉由資料儲存裝置內部之處理器來執行程式碼。
用於截取檔案命令且儲存更新資訊之程式碼的一實施例可視一或多個條件而進行截取及儲存。舉例而言,僅當發出命令之應用程式為複數個"所包括的"應用程式中之一者時才可執行截取及儲存。在本文之描述的內容中,可將"所包括的"應用程式界定為已被指定為包裝程式將自其中截取用以修改目標檔案之檔案命令之應用程式的應用程式(通常,所包括的應用程式為儲存重要檔案而無電力輸出保護之應用程式[例如,Microsoft Visual Studio®])。在一替代實例中,若檔案命令係由不為"被排除的"應用程式之應用程式發出,則可截取檔案命令且儲存更新資訊。在本文之描述的內容中,可將"被排除的"應用程式界定為已被指定為包裝程式將不自其中截取用以修改目標檔案之檔案命令之應用程式的應用程式(例如,Microsoft Word®可為被排除的應用程式,因為其具有其自己的自動檔案保護;或Microsoft Internet Explorer®可為被排除的,因為其儲存大量臨時檔案,但通常不儲存使用者修改檔案)。在一替代實例中,若檔案命令可操作以影響不為臨時檔案之檔案,則可截取檔案命令且儲存更新資訊。在一替代實例 中,若檔案命令可操作以影響屬於"所包括的"檔案類型之檔案,則可截取檔案命令且儲存更新資訊。在本文之描述的內容中,"所包括的"檔案類型可為已被指定為受包裝應用程式保護之檔案類型[例如,.txt檔案可為所包括的檔案類型]。在一替代實例中,若檔案命令可操作以影響不屬於"被排除的"檔案類型之檔案,則可截取檔案命令且儲存更新資訊。在本文之描述的內容中,"被排除的"檔案類型可為已被指定為不受包裝應用程式保護之檔案類型[例如,.doc及.tmp檔案類型可為被排除的],且在一替代實例中,若檔案命令可操作以影響儲存於所包括的儲存裝置中之檔案,則可截取檔案命令且儲存更新資訊。在本文之描述的內容中,可將所包括的裝置界定為經指定用於保護使得將保護所包括的裝置上之檔案之裝置。
電腦可讀程式碼之一實施例可進一步包括用以在執行用於儲存之程式碼之後且在執行用於更新之程式碼之前截取可操作以影響目標檔案之每一寫入命令的程式碼。
電腦可讀程式碼之一實施例可進一步包括用於偵測終止事件且用於在偵測到終止事件後即利用更新資訊來更新目標檔案的程式碼。終止事件之一些實例可包括用以關閉目標檔案之命令的發出、存取目標檔案之應用程式的關閉、依賴於與複數個檔案命令有關之統計之條件的出現[例如,若被發出至目標檔案之百分之八十的檔案命令改變小於10千位元組的資料,則可在檔案命令被發出,從而在目標檔案中改變大於10千位元組的資料時觸發終止事件], 及自目標檔案之先前更新以來之最大時間臨限值的超過。
電腦可讀程式碼之一實施例可進一步包括:用於將目標檔案之一部分複製至臨時檔案內的程式碼,及用於將所儲存更新資訊應用於臨時檔案的程式碼。在一替代實施例中,可提供用於打開臨時檔案且緊鄰儲存更新資訊之後複製資料的程式碼。在第二替代實施例中,可提供用於打開臨時檔案且緊鄰更新目標檔案之前複製資料的程式碼。
電腦可讀程式碼之一實施例可進一步包括用於在出現合併事件後即將所儲存更新資訊應用於臨時檔案的程式碼。
根據所描述較佳實施例之其他特徵,合併事件之一些實例包括:i)用以關閉目標檔案之命令的發出、ii)存取目標檔案之應用程式的關閉、iii)依賴於與複數個檔案命令有關之統計之條件的出現[例如,若被發出至目標檔案之百分之八十的檔案命令改變小於10千位元組的資料,則在檔案命令被發出,從而在目標檔案中改變大於10千位元組的資料時觸發終止事件]、iv)含有更新資訊之增量檔案之大小對最大大小臨限值的超過、v)作業系統之活動級至最小活動臨限值以下的轉換、vi)自先前合併事件以來之最大時間臨限值的超過,或vii)用以讀取目標檔案之命令的發出,在此狀況下,所儲存更新資訊至臨時檔案之應用將緊鄰讀取命令之執行仿真之前。因此,臨時檔案中所含有之經更新資料將作為讀取資訊而傳回至發出讀取命令之應用程式。或者,所儲存檔案命令至臨時檔案之應用可緊鄰目標檔案之更新之前。
根據所描述較佳實施例之其他特徵,電腦可讀程式碼可進一步包括用於偵測終止事件的程式碼,及在偵測到終止事件後即用於利用所儲存更新資訊來更新目標檔案且接著用於刪除目標檔案或臨時檔案或含有所儲存更新資訊之增量檔案的程式碼。
一使用包裝程式來保護目標檔案免受資料損壞之方法的一實施例可包括包裝程式透通式地截取可操作以影響目標檔案之至少一檔案命令的步驟,包裝程式獨立於發出檔案命令之應用程式,且包括包裝程式儲存與至少一檔案命令有關之更新資訊而不改變目標檔案的步驟。更新資訊可含有為執行至少一檔案命令所必要之資訊。該方法亦可包括利用更新資訊來更新目標檔案的步驟。
根據所描述較佳實施例之其他特徵,在儲存更新資訊之開始直至利用所儲存更新資訊來更新目標檔案之結束之間的時間間隔中,可截取及儲存由複數個所包括的應用程式中之應用程式所起始且可操作以影響目標檔案的每一寫入命令。
根據所描述較佳實施例之其他特徵,更新目標檔案可包括以下子步驟:將目標檔案之至少一部分複製至臨時檔案內且將所儲存更新資訊應用於臨時檔案,及利用臨時檔案之全部或一部分來替換目標檔案之全部或一部分,因此有效地更新目標檔案且刪除臨時檔案。
根據所描述較佳實施例之其他特徵,可在將所儲存更新資訊應用於臨時檔案的步驟之後刪除含有更新資訊之增量 檔案。
根據所描述較佳實施例之其他特徵,可在出現一或多個終止事件後即執行更新步驟。終止事件之實例包括:i)用以關閉目標檔案之命令的發出、ii)存取目標檔案之應用程式的關閉、iii)依賴於與複數個檔案命令有關之統計之條件的出現[例如,若在半小時之週期內應用程式每隔五分鐘對目標檔案存取至少一次,則在十分鐘週期內不存取目標檔案之應用程式為觸發目標檔案之更新的終止事件]、iv)作業系統之活動級至最小活動臨限值以下的轉換、v)自先前所儲存檔案命令之發出以來之最大時間臨限值的超過,及vi)自先前合併事件以來之最大時間臨限值的超過。
根據所描述較佳實施例之其他特徵,截取檔案命令且儲存更新資訊的步驟可視條件而定。舉例而言,僅可在以下情況下發生截取及儲存:當檔案命令係由複數個所包括的應用程式中之應用程式發出時、當檔案命令係由除了被排除的應用程式以外之應用程式發出時、當檔案命令可操作以影響不同於臨時檔案之檔案時、當檔案命令可操作以影響所包括的檔案類型時、當檔案命令不可操作以影響被排除的檔案類型之檔案時,或當檔案命令可操作以影響儲存於所包括的儲存裝置中之檔案時。
一用於自受保護目標檔案讀取資料之系統的一實施例可包括一經組態以自儲存媒體擷取包裝應用程式之程式碼且經組態以執行程式碼的處理器。包裝應用程式可包括用於截取由獨立於包裝應用程式之應用程式所發出之至少一檔 案命令的程式碼,檔案命令可操作以存取受保護目標檔案。包裝應用程式亦可包括用於讀取與檔案命令有關之更新資訊的程式碼。該系統亦可包括一用於儲存受保護目標檔案之第一記憶體空間及一用於儲存更新資訊之第二記憶體空間。
根據所描述較佳實施例之其他特徵,用於自受保護目標檔案讀取之系統的包裝應用程式亦可包括用於將來自受保護目標檔案之資料與更新資訊合併至臨時檔案內的程式碼。臨時檔案可為含有更新資訊之檔案,或臨時檔案可為獨立臨時檔案。臨時檔案與更新資訊可儲存於與目標檔案相同的記憶體裝置上或獨立記憶體裝置上。
一採用包裝程式來讀取受保護目標檔案之方法的一實施例可包括以下步驟:藉由包裝程式來截取由應用程式所發出之至少一檔案命令,檔案命令可操作以存取受保護目標檔案。截取步驟對於發出命令之應用程式可為透通式的。該方法亦可包括讀取與至少一檔案命令有關且儲存於增量檔案中之更新資訊的步驟。增量檔案可獨立於受保護目標檔案。該方法進一步含有合併來自目標檔案之資料與該更新資訊及傳回合併資料以作為對檔案命令之回應(回應為讀取結果資料)的步驟。
術語
以下術語在本申請案中係根據其明顯意義而加以使用,該等意義被理解成為一般熟習有關技術者所知。然而,為了鑒於本申請案之主題的進一步闡明,以下解釋、推敲及 例示係關於此等術語在本文中可如何被使用或應用而被給出。應理解,以下解釋、推敲及例示應被視為例示的或代表性的,且不應被視為獨佔式的或限制性的。更確切而言,下文所論述之術語應被儘可能廣泛地解釋為與其普通意義及以下論述一致。
O合併:(例如)將儲存於增量檔案中之更新資訊應用於自目標檔案複製至臨時檔案(例如,臨時檔案可為增量檔案或獨立臨時檔案)內之內容的過程。
O合併事件:觸發合併過程之事件。事件可基於作業系統事件,諸如,時基、檔案系統操作或來自包裝應用程式之指示。
O更新目標檔案:將更新資訊應用於目標檔案之過程(見上文)。在一較佳實施例(下文)中,更新目標檔案係藉由將目標檔案之一部分複製至臨時檔案、將更新資訊應用於臨時檔案且利用臨時檔案中之對應經更新資料來替換目標檔案之該部分而加以執行。
O增量檔案:可用於(例如)累積與目標檔案之所欲改變有關之更新資訊的臨時檔案。
O目標檔案:為某一動作、操作、過程等之所欲物件的檔案,不管檔案是否實際上被作用、影響等。本文中,"目標檔案"可用以指代待保護免受資料損壞之檔案。
O截取:監測、檢查、改變及/或重定向(例如)應用程式與檔案系統之間或應用程式與作業系統之間的通信之過程。
O獨立應用程式:若第一應用程式不視第二應用程式而定(亦即,不需要第二應用程式來根據所意欲的而起作用),則稱第一應用程式獨立於第二應用程式。
O包裝:監測、截取及/或控制(例如)另一應用程式與電腦系統之間或一或多個應用程式與裝置之間的通信之應用程式。
O資料儲存裝置:(例如)由資料處理裝置用以儲存資料且可自其中擷取資料之機構。資料儲存裝置可為安裝式的(例如,硬碟)或抽取式的(例如,快閃碟片)或為抽取式媒體(例如,緊密碟片或磁帶)。
O儲存命令:為了本申請案,"將命令儲存於增量檔案中"可用以指代將與命令有關之更新資訊儲存於增量檔案中的操作,更新資訊含有在將來時間應用命令所必要之資料。
可參看圖式及隨附描述來更好地理解根據各種實施例之增加透通式檔案更新的原理及操作。
各種較佳實施例例示一藉由使檔案保持打開以供寫入之時間最小化、因此使將在檔案打開時發生意外事件之風險最小化來使損壞資料檔案之風險最小化的系統。
根據較佳實施例,應用程式實施可操作以存取受保護資料檔案(目標檔案)之讀取及寫入命令,而目標檔案保持打開以僅供讀取-不會將檔案置於風險中之過程。較小服務儲存區域(在下文中被稱作增量檔案)保持打開且用以儲存 與可操作以藉由一或多個應用程式來影響一或多個資料檔案(目標檔案)之檔案命令有關的更新資訊。同時,藉由包裝應用程式來仿真對目標檔案之讀取及寫入。包裝應用程式起動、監測、截取及仿真功能應用程式與裝置之間或功能應用程式與作業系統之間的通信中之基本要素。特定言之,所有更新資訊累積於一或多個增量檔案中。必要時(例如,為了仿真經更新目標檔案之讀取或準備更新目標檔案時),將所儲存更新資訊與自目標檔案所讀取之資料合併至臨時檔案內。在合併過程中,打開臨時檔案以供寫入,且將目標檔案之一部分或全部複製至臨時檔案。包裝應用程式接著基於儲存於增量檔案中之更新資訊來更新臨時檔案。
偶爾地,亦更新目標檔案。當更新目標檔案時,首先關閉及檢查臨時檔案。接著由臨時檔案來替換目標檔案之一部分。此過程藉由使目標檔案打開且易受資料損壞之時間最小化來保護目標檔案免受資料損壞。此外,若在將目標檔案複製至臨時檔案時發生電力故障,則目標檔案保持完整。若在更新目標檔案之一部分時發生電力故障,則臨時檔案保持完整。
檔案系統及功能應用程式兩者皆看不見此包裝過程,其對於兩者為透通式的。功能應用程式恰好在不存在包裝應用程式時起作用。檔案系統處理恰好在不存在包裝應用程式時到達檔案系統之所有檔案命令。
因此,功能應用程式設計員根據作業系統標準來寫入其 程式,而無需使程式適應於或甚至意識到檔案保護常式。同樣地,程式設計員不需要設計應用程式依賴性常式來防止在為儲存而寫入時歸因於中斷的資料損壞。
因為包裝程式之功能對於功能應用程式及檔案系統為透通式的,所以包裝程式可獨立於任何特定功能應用程式而起作用。因此,包裝程式可作為用於保護由任意功能應用程式所存取之檔案的單機程式而被獨立地銷售。由於包裝程式獨立於任何特定功能應用程式,所以包裝程式可包括於裝置驅動程式中或必須回應於來自使用者可安裝之任何程式之命令的作業系統中。
圖1A展示先前技術之資料處理裝置120a(諸如,個人電腦),其具有處理器121a。處理器121a執行應用程式122a(諸如,Microsoft Windows® Notepad文字編輯器)及檔案管理系統124a(諸如,FAT32或NTFS)。應用程式122a及檔案管理系統124a被說明為在處理器121a內部以指示處理器121a執行應用程式122a及檔案管理系統124a。
應用程式122a發出檔案命令,例如,可操作以存取檔案130a之讀取調用134a。檔案130a儲存於攜帶型資料儲存裝置126a中。讀取調用134a直接由檔案管理系統124a處理。檔案管理系統124a打開檔案130a以供讀取,且自檔案130a讀取135a資料且將資料發送137a至應用程式122a。在稍後時間,應用程式122a發出第二檔案命令(可操作以影響檔案130a之寫入調用136a)。如熟習此項技術者所知,檔案通常不駐存於單一連續記憶體位址集合中,而由位址藉由 記憶體位址指標集合相關聯之部分串組成。特定言之,檔案130a由三個區段130a-i、130a-ii及130a-iii構成。當修改檔案時,可能有必要添加不適合當前經配置給檔案之記憶體的資訊。在此狀況下,沒有必要將整個檔案移至新記憶體範圍,更確切而言,使新位址與檔案相關聯且將新資料寫入至新記憶體空間中。檔案管理系統124a接收寫入調用136a、打開檔案130a以供寫入且將資料直接寫入139a至檔案130a。此為目前技術水平。
眾所周知,當在寫入至諸如攜帶型資料儲存裝置126a之裝置時發生干擾(例如,電力故障,或攜帶型資料儲存裝置126a自插槽之移除,或軟體故障)時,有價值的資料可能自打開的檔案中丟失。因此,無論何時諸如應用程式122a之應用程式發出諸如寫入命令136a之寫入命令時,圖1A之系統的檔案130a皆處於嚴重的資料損失危險中。
圖1B展示用於增加透通式檔案更新之系統的第一實施例,包括資料處理裝置120b(諸如,個人電腦),其含有執行應用程式122b(諸如,Microsoft Windows Notepad文字編輯器)、包裝應用程式150(亦被執行於處理器121b上)及檔案管理系統124b(諸如,FAT32或NTFS)之處理器121b。應用程式122b及包裝應用程式150在圖1B中被呈現為在處理器121b內部以指示處理器121b執行應用程式122b及包裝應用程式150。
應用程式122b發出檔案命令,例如,可操作以影響儲存於行動儲存裝置126b上之檔案130b的寫入調用136b。應用 程式122b為標準應用程式,且所有檔案命令(包括寫入調用136b)係根據標準作業系統協定而發出。
目標檔案130b由被標記為130b-i、130b-ii及130b-iii之三個部分組成。每一部分130b-i、130b-ii及130b-iii佔用一連續記憶體位址串。每一部分130b-i及130b-ii之最後位元組為指向目標檔案130b之下一部分之第一位址的指標。部分130b-iii之最後位元為代表檔案130b之結束的停止位元。寫入調用136b由包裝應用程式150截取。在此實例中,寫入調用136b可操作以影響部分130b-ii。當包裝應用程式150偵測到寫入調用136b時,則包裝應用程式150檢查以判定是否截取及重定向寫入調用136b。在圖1B之實施例的實例中,截取及重定向寫入調用136b視達到所有以下條件而定:儲存裝置126b為待保護之儲存裝置類型當中所包括的類型,且檔案130b之類型包括於待保護之檔案類型當中。在此實例中,由於在包裝應用程式150之設置期間使用者指定所有攜帶型儲存裝置應受保護,且由於攜帶型儲存裝置126b之驅動常式將攜帶型儲存裝置126b界定為攜帶型儲存裝置,因此,攜帶型儲存裝置126b為所包括的儲存裝置。類似地,檔案130b為所包括的檔案類型(.txt檔案),因此,包裝應用程式150截取及重定向寫入調用136b。
系統調用之截取可以熟習程式設計技術者所知之許多方式來完成,如諸如Nitesh Dhanjani及Gustavo Rodriguez-Rivera在Linux Journal 2006中出版之"Loadable Kernel Module Programming and System Call Interception"的電腦 程式設計教材中詳細所描述。特定言之,包裝應用程式150防止寫入調用136b至檔案管理系統124b之直接傳輸。實情為,包裝應用程式150指示152b檔案管理系統124b將與寫入調用136b有關之更新資訊儲存於增量檔案158中。檔案管理系統124b將為更新目標檔案130b所必要之更新資訊寫入139b至增量檔案158。在圖1B之實例中,更新資訊包括用以添加至目標檔案130b之資料。將理解,更新資訊可為編輯資訊(例如,用以將資料塊自目標檔案130b內之一位置移至另一位置的指令,或用以自目標檔案130b移除資料塊之指令),在此狀況下,其更新資訊可能不包括目標檔案130b之新資料。或者,若不存在增量檔案158,則檔案管理系統將首先在寫入139b資料之前建立增量檔案158。包裝應用程式150報告回至執行應用程式122b,仿佛目標檔案130b已被更新一般,因此仿真了對目標檔案130b之寫入。在仿真寫入過程期間,所有寫入已到達增量檔案158。目標檔案130b尚未被修改,且目標檔案130b尚未被打開以供寫入。應強調,包裝應用程式150根據標準作業系統協定來接收檔案命令,且將回應及資料傳回至應用程式122b,從而精確地仿真作業系統回應及資料。因此,包裝應用程式150之活動對於應用程式122b為透通式的,且因此,應用程式122b之活動係根據操作標準且歸因於存在包裝應用程式150而不需要修改。
在圖1B之實例中,包裝應用程式150及應用程式122b皆由單一處理器121b執行。因此,為了有助於命令截取,包 裝應用程式包裝應用程式122b。"包裝"應用程式122b意指應用程式122b不獨立地執行。更確切而言,當使用者請求開始應用程式122b時,使請求通過包裝應用程式150。包裝應用程式150調用在包裝應用程式150"內部"執行(由包裝應用程式150包裝)之應用程式122b(亦即,至及來自應用程式122b之所有輸入及輸出係經由包裝應用程式150)。
在稍後時間,應用程式122b發出第二檔案命令(讀取調用134b)。讀取調用134b存取目標檔案130b且特別在部分130b-ii處存取。包裝應用程式150接著重定向讀取調用134b,且藉由發出存取目標檔案130b之第一讀取調用134c來仿真自目標檔案130b讀取資料。讀取調用134c由檔案管理系統124b處理。檔案管理系統124b打開檔案130b以供讀取,且自檔案130b之部分130b-ii讀取135c資料且將讀取結果資料發送137c至包裝應用程式150。
包裝應用程式150接著檢查是否存在與目標檔案130b相關聯之增量檔案158且增量檔案158中之更新資訊是否應用於讀取調用134b之範圍。在圖1B之實例中,存在增量檔案158且檔案130b之部分130b-ii中含有讀取調用134b之範圍,且增量檔案158確實含有讀取調用134b之範圍的更新資訊。因此,為了實行讀取調用134b且將最新讀取結果資料(仿真讀取資訊)傳回至應用程式122b,有必要合併與儲存於增量檔案158中之檔案命令152b有關的更新資訊與來自目標檔案130b之資料。因此,讀取調用134b構成觸發儲存於增量檔案158中之命令與儲存於目標檔案130b中之資 料之合併的合併事件。為了執行合併,包裝應用程式150發出存取增量檔案158之第二讀取調用134d。讀取調用134d由檔案管理系統124b處理。檔案管理系統124b打開增量檔案158以供讀取,且自增量檔案158讀取135d資料且將讀取結果資料發送137d至包裝應用程式150。
來自讀取135c-d之讀取結果資料由包裝應用程式150藉由將來自讀取135d之更新資訊應用於來自讀取135c之資料而合併,且將合併資料發送137b至執行應用程式122b,從而仿真回應於讀取請求134b之讀取結果資料之傳回。因此,包裝應用程式已仿真了自目標檔案130讀取經更新資料。應用程式122b未意識到其尚未直接與檔案管理系統124b通信。
在此點上,來自讀取135c-d之合併資料構成目標檔案130b之部分130b-ii的經更新版本。因為在此實例中資料處理裝置120b上之活動當前為低的(存在許多自由處理能力,使得更新目標檔案130將不干擾任何其他過程),所以包裝應用程式150更新目標檔案130b。將理解,沒有必要在每次將資料合併至臨時檔案內時更新目標檔案130b。為了更新目標檔案130b,包裝應用程式150首先指示152c檔案系統124b將合併資料寫入139c至增量檔案158內(因此替換先前儲存於增量檔案158中之命令資訊)。接著,包裝應用程式150指示檔案系統124b藉由利用現在儲存於增量檔案158中之合併資料來替換193部分130b-ii而更新目標檔案130b。由於目標檔案130b及增量檔案158兩者皆已經存在 於同一儲存裝置126b上,所以接著僅藉由改變位址指標以將增量檔案158併入目標檔案130b內以代替部分130b-ii來實現替換193。特別在圖1B之實例中,將增量檔案158之結束處之指標的位址設定成指向檔案130b之部分130b-iii的開始處,且接著關閉增量檔案158。在包裝應用程式150驗證已關閉增量檔案158時,打開目標檔案130b以供寫入,且將目標檔案130b之部分130b-i之結束處的指標設定成指向增量檔案158之開始的位址處,且接著關閉目標檔案130b。最終,使目標檔案130b之部分130b-ii的記憶體空間自由以供將來寫入命令使用。由於已將增量檔案158完全重新配置給目標檔案130b,因此,自儲存裝置126b之目錄移除增量檔案158之開始的記憶體指標,從而有效地刪除了增量檔案158。當存在將來寫入命令時,包裝應用程式150將需要建立新增量檔案。
在圖1B之實例中,合併自目標檔案130b所複製之資料與儲存於增量檔案158中之命令係藉由讀取調用134b來觸發。合併亦在無論何時存在使有必要更新目標檔案130b之終止事件時被觸發。在更新目標檔案130b之前,將儲存於增量檔案158中之更新資訊與儲存於目標檔案130b中之資料合併至臨時檔案內(如上文,增量檔案158可充當臨時檔案)。以此方式,臨時檔案充當目標檔案130b之備份,若在更新目標檔案130b時發生電力故障,藉此損壞目標檔案130b,則可自臨時檔案中恢復目標檔案130b之資料。合併亦可在自最後合併以來已超過時間臨限值之後存在可用資 源[記憶體空間及處理器時間]時的任何時間被觸發。
許多事件可觸發目標檔案之更新。更新可被週期性地觸發(例如,目標檔案130b可每隔15分鐘被更新一次),或更新可藉由終止事件來觸發。終止事件之實例包括已存取目標檔案之應用程式122b的關閉、或增量檔案158變得太大(超過大小臨限值),或組合事件(組合事件之一實例為在自最後更新以來已超過時間臨限值之後存在可用資源(記憶體空間及處理器時間)的組合)。
熟習此項技術者將理解,增量檔案158亦可由若干部分組成,增量檔案158之第一部分可包括部分130b-ii之檔案命令,而增量檔案158之第二部分含有部分130b-iii之檔案命令。在此狀況下,有可能合併部分130b-ii與增量檔案158之第一部分且接著更新部分130b-ii,使檔案130b之部分130b-iii保持於原始狀態,從而使增量檔案158僅含有第二部分。類似地,將理解,檔案之第一或最後部分可藉由改變檔案目錄位址指標或停止位元而改變。熟習此項技術者將理解交換檔案之部分的其他現有方式。
在圖1B之實施例中,增量檔案158儲存於與目標檔案130b相同的記憶體(攜帶型記憶體裝置126b)上。應理解,增量檔案158可為駐存於資料處理裝置120b之快速揮發性記憶體中或硬碟中或資料處理裝置120b之非揮發性記憶體中或另一攜帶型儲存裝置中或抽取式媒體(例如,可寫緊密碟片)中之臨時檔案的一部分。類似地,在圖1B之實施例中,包裝應用程式150將讀取135c-d之資料合併至空間 (計算裝置120b之揮發性記憶體)內,因此有效地將讀取調用134b重定向至含有合併資料之空間。應理解,合併資訊可儲存於任何記憶體裝置上,例如,儲存於硬碟中或資料處理裝置120b之非揮發性記憶體中或另一攜帶型儲存裝置中或抽取式媒體(例如,可寫緊密碟片)中。
圖2展示資料處理裝置220(諸如,並行處理器之網路),其執行應用程式222(諸如,Microsoft Visual Studio®)、包裝應用程式250及檔案管理系統224(諸如,FAT32或NTFS)。
應用程式222發出檔案命令(可操作以影響儲存於儲存裝置226中之檔案230的寫入調用236)。寫入調用236由包裝應用程式250截取。在圖2之實施例中,包裝應用程式250由處理器221b執行,而應用程式222執行於獨立處理器221a(資料處理裝置220之網路中的處理器)上。包裝應用程式250藉由指示252檔案管理系統224將與寫入調用236有關之更新資訊儲存於增量檔案258中來重定向寫入調用236。檔案管理系統224僅將為更新目標檔案230所需要之更新資訊寫入239至增量檔案258。將與寫入調用236有關之更新資訊儲存至增量檔案258,而目標檔案230保持不變。包裝應用程式250報告回至執行應用程式222,仿佛目標檔案230已被更新一般,因此仿真了對檔案230之寫入。在圖2之實例中,增量檔案258儲存於資料處理裝置220之揮發性記憶體中。
稍後在偵測到"終止事件"288之出現後(在圖2之實例中, 終止事件288為應用程式222之關閉,應用程式222已發出可操作以影響目標檔案230之寫入調用236),包裝應用程式250即更新目標檔案230。因為增量檔案258不儲存於與檔案230相同的儲存裝置226上,所以不可能藉由將資料複製至增量檔案258內及將更新資訊應用於增量檔案258中之複製資料且改變指標(如在圖1B之實例中)來更新目標檔案230。為了更新目標檔案230,包裝應用程式250必須首先將來自增量檔案258之所儲存更新資訊與來自目標檔案230之資料合併至儲存裝置226上之臨時檔案292內。因此,包裝應用程式250指示290檔案系統224建立294臨時檔案292、將來自目標檔案230之內容複製296至臨時檔案292內且將儲存於增量檔案258中之檔案命令(與寫入調用236有關之更新資訊)應用298於臨時檔案292。一旦合併成功地結束,包裝應用程式250就指示檔案系統224關閉臨時檔案292且利用臨時檔案292來替換293目標檔案230。因為目標檔案230及臨時檔案292兩者皆已經存在於同一儲存裝置226上,所以僅藉由自檔案目錄將指標移除至臨時檔案292且將目標檔案230之指標(所儲存位址)改變至臨時檔案292之位址來實現替換293(因此有效地更新了目標檔案230且刪除了臨時檔案292)。
在圖2之實例中,因為應用程式222不由與包裝應用程式250相同的處理器221執行,所以包裝應用程式250不能包裝應用程式222(控制應用程式222之所有輸入及輸出)。因此,包裝應用程式250包裝檔案系統224,使得對檔案系統 224之所有調用通過包裝應用程式250。因此,包裝應用程式250有效地包裝儲存裝置226。
應理解,檔案230可由多個應用程式存取。因此,來自每一應用程式之寫入命令由包裝應用程式250截取且重定向至增量檔案258。類似地,藉由任何應用程式來讀取檔案230之嘗試將被截取且觸發合併事件。熟習此項技術者將理解,不同於必須鎖定對受保護檔案之存取的先前技術之單應用程式檔案保護機制(諸如,由Microsoft® Word所使用之機制),包裝應用程式250允許多個應用程式對目標檔案230進行同時讀寫存取。
熟習先前技術者亦將理解鎖定檔案存取及檔案存取衝突之可能性。特別在圖1之實施例(其中,包裝應用程式150僅包裝一或多個特定應用程式(例如,應用程式222),而不包裝檔案系統124b)中,有可能使獨立應用程式(不由包裝應用程式150包裝)不經由包裝應用程式150而存取檔案130b。在此等狀況下,存在先前技術之解決辦法(諸如,鎖定檔案130b)(例如,如1997年Jeffery Richter在Microsoft Press, Redmond Washington出版之Advanced Windows 3 rd Edition 且特別在第711至715頁中所描述)。
應理解,在一替代實施例中,可將資料自目標檔案230複製296至臨時檔案292以作為截取第一寫入調用236之一部分。在此實施例中,臨時檔案292將為目標檔案230之經常經更新版本,且更新目標檔案230將僅由關閉臨時檔案292及將目標檔案230之位址指標移至臨時檔案292之位址 組成。
在圖2之實例中,處理器221a-b為資料處理裝置220之多處理器網路的組件。熟習此項技術者應理解,存在替代處理器組態且其與用以保護檔案之系統及方法的各種實施例相容。舉例而言,處理器221b可為資料儲存裝置226之內部組件,或處理器221b可為網路上之專用檔案系統伺服器的組件。
圖3展示圖2之實施例之讀取過程的簡化流程圖。包裝應用程式250截取301來自應用程式222之讀取命令。包裝應用程式250首先測試302是否存在含有讀取命令被定向之檔案230之更新資訊的增量檔案。若不存在增量檔案,則將控制傳回至檔案管理系統224,檔案管理系統224通常根據先前技術來處理讀取命令:藉由直接自目標檔案230讀取306所請求範圍且將讀取結果資料傳回309至請求應用程式222。
若測試302傳回正結果(即,存在含有待讀取之檔案230之更新資訊的增量檔案258),則包裝應用程式250進一步檢查304增量檔案258之更新資訊是否可操作以影響讀取命令之範圍。若不存在所請求範圍之更新資訊,則將控制傳回至檔案管理系統224,檔案管理系統224通常根據先前技術來處理讀取命令:藉由直接自目標檔案230讀取306所請求範圍且將資料傳回309至請求應用程式222。
若測試304傳回正結果(增量檔案258含有待讀取之資料範圍的更新資訊),則包裝應用程式250合併308待自增量 檔案讀取之範圍的資料與來自目標檔案之更新資訊(藉由將待自目標檔案230讀取之範圍複製至臨時檔案292且將來自增量檔案258之更新資訊應用於臨時檔案292中之複製資料),且將來自所請求範圍之合併資料傳回309至請求應用程式222。
圖4展示根據圖2之實施例之合併過程的簡化流程圖。包裝應用程式250偵測410指示需要開始合併過程(在更新目標檔案230之前)之終止事件288的出現。特別在圖4之實例中,使用者關閉應用程式222,應用程式222在當前會話中已發出用以修改目標檔案230之至少一命令。當包裝應用程式250偵測到裝置220之作業系統關閉應用程式222時,則包裝應用程式250命令290檔案系統224打開294空臨時檔案292且將來自目標檔案230之內容複製296至臨時檔案292內。特別在圖4之實例中,待複製至臨時檔案292之資料為待在寫入調用236中存取之資料範圍。包裝應用程式250進一步命令檔案系統224將儲存於增量檔案258中之更新資訊應用298於臨時檔案292。特別在圖4之實例中,增量檔案258含有與寫入調用236有關之更新資訊。一旦已將儲存於增量檔案258中之更新資訊應用298於臨時檔案292,包裝應用程式250就發出用以關閉411臨時檔案292之命令及用以藉由將目標檔案230之一部分之指標中的位址改變至臨時檔案292之位址而利用臨時檔案292來替換293目標檔案230之該部分的命令。包裝應用程式250接著繼續進行,以藉由指示檔案系統224將目標檔案230之經替換部分及增量
檔案258的記憶體空間報告為自由空間來廢除413目標檔案230之經替換部分及增量檔案258,因為其不再被需要。
若在獨立應用程式寫入至增量檔案258時觸發合併事件,則在完成寫入操作之前暫時中止合併過程。若在完成合併過程之後存在對目標檔案230之新寫入調用,則將打開414新增量檔案。或者,可緊鄰合併過程之後自動地打開414新增量檔案。
替代或除了應用程式222之關閉,被解譯為合併事件之其他實例出現包括:(1)用以關閉目標檔案230之命令的發出;(2)依賴於與複數個檔案命令有關之統計之條件的出現,例如,當應用程式已在一小時之預定週期內平均每分鐘對儲存裝置226上之資料存取一次且然後經過應用程式不存取儲存裝置226之為平均存取時間間隔三十倍的時間間隔(1分鐘的30倍等於30分鐘)時,則自動地觸發合併過程;(3)增量檔案258之大小對最大大小臨限值的超過(例如,若增量檔案258中之所儲存更新資訊超過100千位元組的資訊);(4)作業系統之活動級至最小活動臨限值以下的轉換(例如,當記憶體及處理器在10秒週期內被小於50%佔用時);或(5)自先前合併事件以來之最大時間臨限值的超過(例如,包裝應用程式250可具有以下規則:無論何時對於任何檔案自先前合併事件以來經過15分鐘週期時,則開始新合併過程)。可觸發合併事件之另一出現為發出用以讀取目標檔案230之命令(如圖3之描述中所解釋,為了讀取經更新資料,有必要合併來自目標檔案230之資料與增 量檔案258之更新資訊)。
圖5展示寫入過程之簡化流程圖。應用程式222發出對檔案系統224之寫入調用236。包裝應用程式偵測540寫入調用236且檢查542以判定檔案230(寫入命令被定向至檔案230)是否為待保護之檔案。特定地在圖5之實例中,儲存裝置226為受保護儲存裝置。更特定言之,目標檔案230將受保護,因為目標檔案230達到以下條件。目標檔案230儲存於裝置226上,裝置226為經受歸因於過早移除之突然不可預測干擾的抽取式攜帶型儲存裝置。因此,包裝應用程式250保護儲存裝置226中之所有永久不受保護的使用者檔案。更具體言之,藉由預設來截取及重定向對儲存裝置226之所有寫入命令,除非發出寫入命令之應用程式為被排除的應用程式(例如,Microsoft® Word為被排除的應用程式,因為Word具有內部檔案保護及備份;Adobe Acrobat®讀取器亦為被排除的,因為Adobe Acrobat®讀取器不儲存任何修改使用者檔案),或除非寫入命令可操作以影響被排除的檔案類型(例如,類型.tmp之臨時檔案為被排除的,因為來自臨時檔案之資料損失很少為重要的)。當應用程式222為被排除的應用程式或寫入命令被定向之檔案為被排除的檔案類型或寫入命令被定向之檔案不處於儲存裝置226中時,則檔案系統224直接寫入549至檔案。
或者,用於截取及重定向檔案命令之條件可包括以下條件中之一或多者:檔案命令由所包括的應用程式發出(所包括的應用程式為包括於檔案命令待由包裝應用程式250 截取之應用程式清單或群上的應用程式);檔案命令由不為被排除的應用程式之應用程式發出(被排除的應用程式為屬於檔案命令將不被截取之應用程式清單或群的應用程式);檔案命令可操作以影響不為臨時檔案之檔案;檔案命令可操作以影響所包括的檔案類型(所包括的檔案類型為具有包括於待保護之檔案類型清單或群中之類型的檔案);檔案命令可操作以影響不為被排除的檔案類型之檔案(被排除的檔案類型為具有在將不受保護之檔案類型清單或群中之類型的檔案);及檔案命令可操作以影響儲存於受保護儲存裝置中之檔案。視上述條件中之一或多者的達到而定,包裝應用程式將截取501及重定向548寫入調用,或包裝應用程式250將允許檔案系統直接寫入549至檔案,如上文針對圖1A之先前技術之檔案系統所描述。
在圖5之實例中,檔案230為儲存裝置226(其為所包括的儲存裝置)中之.txt檔案(其不為被排除的類型),且應用程式222為Microsoft Visual Studio®(其不為被排除的應用程式)。因此,包裝應用程式截取501寫入調用236。包裝應用程式250接著檢查544用於檔案230之合併操作是否在進行中。若合併操作是在進行中,則在完成合併操作之前暫時中止546寫入命令過程。當合併操作完成時,重新開始經暫時中止之寫入操作,且藉由將與寫入調用236有關之更新資訊儲存至增量檔案258來重定向548寫入命令之內容。若合併操作不在進行中,則包裝應用程式250重定向548寫入調用236且將更新資訊儲存至增量檔案258。若在
寫入至增量檔案258時觸發合併事件,則在完成寫入操作之前暫時中止合併事件。 總之,儘管已相當詳細地描述了各種實施例及其較佳型式,但其他型式係可能的。因此,附加申請專利範圍之精神及範疇應不限於本文所含有之較佳型式的描述。
120a‧‧‧資料處理裝置
120b‧‧‧資料處理裝置
121a‧‧‧處理器
121b‧‧‧處理器
122a‧‧‧應用程式
122b‧‧‧應用程式
124a‧‧‧檔案管理系統
124b‧‧‧檔案管理系統
126a‧‧‧攜帶型資料儲存裝置
126b‧‧‧儲存裝置
130a‧‧‧檔案
130a-i‧‧‧區段
130a-ii‧‧‧區段
130a-iii‧‧‧區段
130b‧‧‧檔案
130b-i‧‧‧部分
130b-ii‧‧‧部分
130b-iii‧‧‧部分
134a‧‧‧讀取調用
134b‧‧‧讀取調用
134c‧‧‧第一讀取調用
134d‧‧‧第二讀取調用
135a‧‧‧讀取
135c‧‧‧讀取
135d‧‧‧讀取
136a‧‧‧寫入調用
136b‧‧‧寫入調用
137a‧‧‧發送
137b‧‧‧發送
137c‧‧‧發送
137d‧‧‧發送
139a‧‧‧寫入
139b‧‧‧寫入
139c‧‧‧寫入
150‧‧‧包裝應用程式
152b‧‧‧指示
152c‧‧‧指示
158‧‧‧增量檔案
193‧‧‧替換
220‧‧‧資料處理裝置
221a‧‧‧處理器
221b‧‧‧處理器
222‧‧‧應用程式
224‧‧‧檔案管理系統
226‧‧‧儲存裝置
230‧‧‧目標檔案
236‧‧‧寫入調用
239‧‧‧寫入
250‧‧‧包裝應用程式
252‧‧‧指示
258‧‧‧增量檔案
288‧‧‧終止事件
290‧‧‧指示/命令
292‧‧‧臨時檔案
293‧‧‧替換
294‧‧‧建立/打開
296‧‧‧複製
298‧‧‧應用
圖1A為先前技術之檔案儲存系統的示意性說明;圖1B為用於儲存及保護目標檔案之系統之第一實施例的示意性說明;圖2為用於儲存及保護目標檔案之系統之第二實施例的示意性說明;圖3為說明讀取命令之截取與重定向及讀取目標檔案之仿真的流程圖;圖4為說明將更新資訊應用於臨時檔案的流程圖;及圖5為說明截取及重定向對目標檔案之寫入調用之過程的流程圖。
120b‧‧‧資料處理裝置
121b‧‧‧處理器
122b‧‧‧應用程式
124b‧‧‧檔案管理系統
126b‧‧‧儲存裝置
130b‧‧‧檔案
130b-i‧‧‧部分
130b-ii‧‧‧部分
130b-iii‧‧‧部分
134b‧‧‧讀取調用
134c‧‧‧第一讀取調用
134d‧‧‧第二讀取調用
135c‧‧‧讀取
135d‧‧‧讀取
136b‧‧‧寫入調用
137b‧‧‧發送
137c‧‧‧發送
137d‧‧‧發送
139b‧‧‧寫入
139c‧‧‧寫入
150‧‧‧包裝應用程式
152b‧‧‧指示
152c‧‧‧指示
158‧‧‧增量檔案
193‧‧‧替換

Claims (25)

  1. 一種用於儲存一目標檔案之儲存裝置,該儲存裝置包含:一處理器,用以擷取及執行一包裝(wrapper)應用程式之程式碼,而該包裝應用程式之程式碼經組態以保護該目標檔案的資料免於損壞,該處理器經組態以:截取由另一應用程式所發出之至少一檔案命令,該至少一截取的檔案命令可操作以更新該目標檔案,且該包裝應用程式獨立於該另一應用程式;儲存與該至少一截取的檔案命令有關之更新資訊;在完成儲存該更新資訊後偵測一終止事件;及指示一檔案系統將該目標檔案的一部分,但非全部,複製入一臨時檔案以將該目標檔案的該部分之一複製本儲存於該臨時檔案中,俾以藉由將該更新資訊應用於該臨時檔案中該目標檔案的複製部分而修改該臨時檔案,在更新該目標檔案之前關閉該臨時檔案及根據經修改的臨時檔案更新該目標檔案;一第一記憶體空間,其用於儲存該目標檔案;及一第二記憶體空間,其用於儲存該更新資訊,其中該終止事件係由與該目標檔案之一更新狀態相關之一條件所致,且其中該處理器進一步經組態以藉由以修正之臨時檔案取代該目標檔案之該部分來更新該目標檔案。
  2. 如請求項1之儲存裝置,其進一步包含一非揮發性記憶 體,其中該第一記憶體空間駐存於該非揮發性記憶體中。
  3. 如請求項2之儲存裝置,其中該第二記憶體空間駐存於該儲存裝置的該非揮發性記憶體、該儲存裝置的一獨立非揮發性記憶體,及該儲存裝置的一揮發性記憶體之一或多者中。
  4. 如請求項1之儲存裝置,其進一步包含一揮發性記憶體,其中該第二記憶體空間駐存於該揮發性記憶體中。
  5. 如請求項1之儲存裝置,其中該更新資訊僅包括與該至少一截取的檔案命令有關之資料。
  6. 如請求項1之儲存裝置,其進一步包含:一第三記憶體空間,其用於儲存該臨時檔案,且其中該處理器進一步經組態以根據更新的臨時檔案更新該目標檔案,其係藉由更新的該臨時檔案替代該目標檔案的該至少部分。
  7. 一種採用一包裝程式來保護一目標檔案免受資料損壞之方法,該方法包含:藉由該包裝程式來截取由一應用程式所發出之至少一檔案命令,該至少一檔案命令可操作以更新該目標檔案,該截取對於該應用程式為透通式的,其中該至少一檔案命令包含一寫入命令以寫入資料至該目標檔案,且其中更新該目標檔案包括將該目標檔案的一部分,但非全部,複製入一臨時檔案中;指示一檔案系統儲存與該至少一檔案命令有關之更新 資訊於一增量檔案(delta file)中而不改變該目標檔案;在完成儲存該更新資訊後指示該檔案系統以偵測一終止事件;指示該檔案系統將儲存的該更新資訊與來自該目標檔案的資料合併以產生合併資料;指示該檔案系統將該合併資料寫入該臨時檔案中;指示該檔案系統以在更新該目標檔案前關閉該臨時檔案;及利用來自該臨時檔案的該合併資料更新該目標檔案,其中該終止事件係由與該目標檔案之一更新狀態相關之一條件所致。
  8. 如請求項7之方法,其中該包裝程式經組態以:判定該至少一檔案命令係一寫入命令;及判定該寫入命令係待截取及重定向(redirected)。
  9. 如請求項7之方法,其中更新該目標檔案包括:將該更新資訊應用於該臨時檔案中該目標檔案的複製部分以修改該臨時檔案;及利用經修改的該臨時檔案來替換該目標檔案之該部分。
  10. 如請求項9之方法,其進一步包含在將該更新資訊應用於該臨時檔案之後刪除與該更新資訊有關之該增量檔案。
  11. 如請求項7之方法,其中該更新在下列一或多者發生之後即被執行: 關閉該目標檔案之一命令的一發出;該應用程式的一關閉;存取該目標檔案之一應用程式的一關閉;依賴於與複數個檔案命令有關之統計之一條件的一發生;一作業系統之活動級至一最小活動臨限值以下的一經過(passing);自該至少一檔案命令之一發出以來之一最大時間臨限值的一超過;及自一先前合併事件以來之一最大時間臨限值的一超過。
  12. 如請求項7之方法,其中該截取及該儲存係以下列一或多者為條件:該應用程式為複數個所包括的應用程式中之一者、該應用程式不同於一被排除的應用程式、該至少一檔案命令可操作以更新一不同於一臨時檔案之檔案;該至少一檔案命令可操作以更新一所包括的檔案類型;該至少一檔案命令可操作以更新一不同於一被排除的檔案類型之檔案;及該至少一檔案命令可操作以更新一儲存於一所包括的儲存裝置中之檔案。
  13. 一種用於自一受保護目標檔案讀取資料及保護該受保護目標檔案的檔案免於損壞之儲存裝置,該儲存裝置包含:一處理器,用以擷取及執行一包裝應用程式之程式碼,該處理器經組態以: 截取由一獨立於該包裝應用程式之應用程式所發出之至少一檔案命令,該經截取的至少一檔案命令可操作以存取一受保護目標檔案,讀取與該經截取的至少一檔案命令有關之更新資訊;將該受保護目標檔案的一部分,但非全部,複製入一臨時檔案;在完成儲存與該經截取的至少一檔案命令有關之該更新資訊後偵測一終止事件;在更新該受保護目標檔案前關閉該臨時檔案;及藉由將該更新資訊應用至該臨時檔案中該受保護目標檔案的複製部分而修改該臨時檔案以產生一更新的臨時檔案;一第一記憶體空間,其用於儲存該受保護目標檔案;及一第二記憶體空間,其用於儲存該更新資訊,其中該終止事件係由與該受保護目標檔案之一更新狀態相關之一條件所致。
  14. 如請求項13之儲存裝置,其中該處理器進一步經組態以根據該更新的臨時檔案更新該受保護目標檔案。
  15. 一種採用一包裝程式來讀取一受保護目標檔案之方法,該方法包含:藉由該包裝程式來截取由一應用程式所發出之至少一檔案命令,該至少一截取的檔案命令可操作以存取該受保護目標檔案,該截取對於該應用程式為透通式的,且 藉由將該受保護目標檔案的一部分,但非全部,複製入一臨時檔案中以更新該受保護目標檔案;讀取儲存於一增量檔案中之與該至少一截取的檔案命令有關的更新資訊,該增量檔案可與該受保護目標檔案分離;偵測一終止事件;在該臨時檔案中將來自該受保護目標檔案的資料與儲存在該增量檔案中的該更新資訊合併,以回應一合併事件;在更新該受保護目標檔案前關閉該臨時檔案;及在利用該合併資料更新該受保護目標檔案之前,傳回該合併之一結果以作為對該至少一檔案命令之一回應,其中該終止事件係由與該受保護目標檔案之一更新狀態相關之一條件所致。
  16. 一種資料儲存裝置,其包含:用於儲存一受保護目標檔案的一第一記憶體空間;及用於儲存一未受保護的臨時檔案之一第二記憶體空間,其中該未受保護的臨時檔案包含由該受保護目標檔案的一部份,但非全部,複製之資料,及包含與操作以更新該受保護目標檔案的一檔案命令有關之更新資訊,其中該未受保護的臨時檔案係在更新該目標檔案前關閉,其中該更新資訊係接收自一包裝應用程式,以回應該包裝應用程式截取由獨立於該包裝應用程式的一應用程 式所發出的該檔案命令,其中接收該更新資訊以回應偵測一終止事件,且其中該終止事件係由與該受保護目標檔案之一更新狀態相關之一條件所致。
  17. 如請求項16的資料儲存裝置,其中該應用程式發出讀取及寫入檔案命令可操作以存取該受保護目標檔案,同時該受保護目標檔案維持開啟以用於讀取。
  18. 如請求項16的資料儲存裝置,其中藉由移動位址指標使該未受保護的臨時檔案併入該受保護目標檔案,以將該受保護目標檔案及該未受保護的臨時檔案合併。
  19. 如請求項18的資料儲存裝置,其中移動該位址指標包含從一檔案目錄移除指向該未受保護的臨時檔案之一指標,及將該受保護目標檔案的一指標改變至該未受保護的臨時檔案的一位址。
  20. 一種資料儲存裝置,其包含:用於儲存一目標檔案的一第一記憶體空間;及用於儲存一臨時檔案及更新該臨時檔案的一第二記憶體空間,該臨時檔案包含該目標檔案的一部分,但非全部,及包含與一檔案命令有關的更新資訊,且該第二記憶體空間係根據該更新資訊以更新該臨時檔案,其中該更新資訊係接收自一包裝應用程式,以回應該包裝應用程式截取由獨立於該包裝應用程式的一應用程式所發出的該檔案命令,其中接收該更新資訊以回應偵測一終止事件, 其中該終止事件係由與該目標檔案之一更新狀態相關之一條件所致,其中該臨時檔案係在更新該目標檔案前關閉,且其中該目標檔案之該至少部分以更新的該臨時檔案替代,以回應一讀取命令。
  21. 如請求項20的資料儲存裝置,其中該第一記憶體空間駐存於該資料儲存裝置的一非揮發性記憶體中,及該第二記憶體空間駐存於該資料儲存裝置的一揮發性記憶體中。
  22. 如請求項20的資料儲存裝置,其中該包裝應用程式係由該資料儲存裝置之外的一處理器執行。
  23. 一種用於保護一目標檔案之方法,該方法包含:在一資料儲存裝置中,執行:將一目標檔案儲存在一第一記憶體空間中;將包含與該目標檔案有關的更新資訊之一增量檔案儲存於一第二記憶體空間中;將該目標檔案的一部分,但非全部,複製入一臨時檔案;將該更新資訊應用於該臨時檔案中該目標檔案的複製部分以產生一更新的臨時檔案;偵測一終止事件;在更新該目標檔案前關閉該臨時檔案;及利用該更新的臨時檔案更新該目標檔案,其中該更新資訊係接收自一包裝應用程式以回應於該 包裝程式截取由獨立於該包裝應用程式的一應用程式所發出的一檔案命令,其中該檔案命令包含一命令以更新該目標檔案,及其中該目標檔案的該至少部分被替代以回應於一讀取命令,其中該終止事件係由與該目標檔案之一更新狀態相關之一條件所致,且其中取代該目標檔案之該部分以回應一讀取命令。
  24. 如請求項23的方法,其中該目標檔案的該更新係執行以回應於一終止事件。
  25. 如請求項23的方法,其中該複製及應用該更新資訊係執行以回應一合併事件。
TW96145944A 2006-12-04 2007-12-03 用於保護目標檔案的儲存裝置及方法 TWI420391B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US86836106P 2006-12-04 2006-12-04

Publications (2)

Publication Number Publication Date
TW200839568A TW200839568A (en) 2008-10-01
TWI420391B true TWI420391B (zh) 2013-12-21

Family

ID=41372750

Family Applications (1)

Application Number Title Priority Date Filing Date
TW96145944A TWI420391B (zh) 2006-12-04 2007-12-03 用於保護目標檔案的儲存裝置及方法

Country Status (2)

Country Link
CN (1) CN101589386B (zh)
TW (1) TWI420391B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9104690B2 (en) 2011-01-27 2015-08-11 Micron Technology, Inc. Transactional memory
DE112012004308B4 (de) * 2011-10-12 2020-08-27 International Business Machines Corporation Verfahren, System, Vermittlungsserver, Client und Computerprogramm zum Löschen von Daten zum Aufrechterhalten einer Sicherungsstufe
CN104679532B (zh) * 2013-11-27 2018-12-11 腾讯科技(深圳)有限公司 内核模块加载方法和装置
CN110233851B (zh) * 2019-06-21 2022-03-22 绿盟科技集团股份有限公司 一种数据传输方法和装置
CN112596954A (zh) * 2020-12-25 2021-04-02 深圳市科力锐科技有限公司 数据备份及重建方法、装置、设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030050940A1 (en) * 1999-10-12 2003-03-13 Eric Robinson Automatic backup system
US20030191743A1 (en) * 1998-03-03 2003-10-09 Siebel Systems, Inc. Method, apparatus, system, and program product for attaching files and other objects to a partially replicated database
US20040044930A1 (en) * 2002-08-30 2004-03-04 Keller S. Brandon System and method for controlling activity of temporary files in a computer system
TWI221967B (en) * 2003-04-25 2004-10-11 Taiwan Semiconductor Mfg High efficiency redundancy architecture
US20050022175A1 (en) * 2003-07-21 2005-01-27 Sliger Michael V. System and method for intra-package delta compression of data
US20050114672A1 (en) * 2003-11-20 2005-05-26 Encryptx Corporation Data rights management of digital information in a portable software permission wrapper

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6996586B2 (en) * 2003-06-18 2006-02-07 International Business Machines Corporation Method, system, and article for incremental virtual copy of a data block
US7743329B2 (en) * 2003-06-27 2010-06-22 Microsoft Corporation Incorporating interactive media into a playlist
US7401192B2 (en) * 2004-10-04 2008-07-15 International Business Machines Corporation Method of replicating a file using a base, delta, and reference file

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030191743A1 (en) * 1998-03-03 2003-10-09 Siebel Systems, Inc. Method, apparatus, system, and program product for attaching files and other objects to a partially replicated database
US20030050940A1 (en) * 1999-10-12 2003-03-13 Eric Robinson Automatic backup system
US20040044930A1 (en) * 2002-08-30 2004-03-04 Keller S. Brandon System and method for controlling activity of temporary files in a computer system
TWI221967B (en) * 2003-04-25 2004-10-11 Taiwan Semiconductor Mfg High efficiency redundancy architecture
US20050022175A1 (en) * 2003-07-21 2005-01-27 Sliger Michael V. System and method for intra-package delta compression of data
US20050114672A1 (en) * 2003-11-20 2005-05-26 Encryptx Corporation Data rights management of digital information in a portable software permission wrapper

Also Published As

Publication number Publication date
CN101589386B (zh) 2013-03-27
CN101589386A (zh) 2009-11-25
TW200839568A (en) 2008-10-01

Similar Documents

Publication Publication Date Title
US8589341B2 (en) Incremental transparent file updating
US10241873B2 (en) Headstart restore of first volume to a second volume
US8296264B1 (en) Method and system for file-level continuous data protection
US7953948B1 (en) System and method for data protection on a storage medium
Chen et al. The Rio file cache: Surviving operating system crashes
US8005797B1 (en) File-level continuous data protection with access to previous versions
US9852198B1 (en) Method and system for fast generation of file system snapshot bitmap in virtual environment
US5493649A (en) Detecting corruption in a computer program at execution time using a checksum
KR100437199B1 (ko) 컴퓨터시스템및그에저장된데이터를액세싱하기위한방법
US7650533B1 (en) Method and system for performing a restoration in a continuous data protection system
US5546534A (en) Method of operating a computer system
US20040107199A1 (en) Computer application backup method and system
US20030005168A1 (en) System and method for auditing system call events with system call wrappers
TWI420391B (zh) 用於保護目標檔案的儲存裝置及方法
US5291600A (en) Recovery of in-core disk data
US7383466B2 (en) Method and system of previewing a volume revert operation
US20060242381A1 (en) Systems, methods, and computer readable media for computer data protection
KR100766863B1 (ko) 이동식저장장치를 이용한 소프트웨어 설치 시스템 및 그방법
US20050108721A1 (en) Method of calling an export function stored in a shared library
CN110928840A (zh) 一种qnx6文件系统读取方法
CN102222185B (zh) 一种避免操作系统启动文件被感染的方法
KR102145358B1 (ko) 변경된 운영체제 환경에서 디스크의 데이터 무결성을 보호하는 방법 및 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체
CN115640269B (zh) 一种基于按需复制的安卓应用安装加速方法
US10977208B2 (en) Setup file system without editing kernel code
CA2153508C (en) A method of operating a computer system

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees