專利名稱:保護(hù)包括可編輯元數(shù)據(jù)的文件的制作方法
保護(hù)包括可編輯元數(shù)據(jù)的文件
背景技術(shù):
文件經(jīng)常包括元數(shù)據(jù)。對文件的包括元數(shù)據(jù)的任何部分的改變可以觸發(fā)備份系統(tǒng)向備份設(shè)備復(fù)制文件。就如今的多媒體和其它文件的大小而言,響應(yīng)于對文件的改變來創(chuàng)建文件的多個(gè)副本可能快速填滿備份設(shè)備。這里要求保護(hù)的主題內(nèi)容并不限于僅在例如上文描述的環(huán)境的環(huán)境中解決弊端或者操作的實(shí)施例。而是,提供這個(gè)背景技術(shù)僅為了說明一個(gè)其中可以實(shí)現(xiàn)這里描述的一些實(shí)施例的示例性技術(shù)領(lǐng)域。
發(fā)明內(nèi)容
簡而言之,這里描述的主題內(nèi)容的方面涉及對包括內(nèi)容和嵌入的元數(shù)據(jù)的文件的 數(shù)據(jù)保護(hù)。在各方面中,接收文件已經(jīng)改變的指示。如果內(nèi)容已經(jīng)改變,則可以備份整個(gè)文件或者僅備份所述內(nèi)容。如果僅元數(shù)據(jù)已經(jīng)改變,則根據(jù)實(shí)施方式可以備份或者可以不備份元數(shù)據(jù)。可以將文件劃分成頭部分、中間部分和尾部分這三個(gè)部分而不是解析文件以確定文件內(nèi)元數(shù)據(jù)的確切大小和定位。這些部分的散列(hash)然后可以用來確定文件的元數(shù)據(jù)和/或內(nèi)容是否已經(jīng)改變。提供這一發(fā)明內(nèi)容以簡潔地標(biāo)識下文在具體實(shí)施方式
中進(jìn)一步描述的主題內(nèi)容的一些方面。這一發(fā)明內(nèi)容并非為了標(biāo)識要求保護(hù)的主題內(nèi)容的關(guān)鍵或者必要特征,也并非為了用來限制要求保護(hù)的主題內(nèi)容的范圍。除非上下文另有明示,短語“這里描述的主題內(nèi)容”是指在具體實(shí)施方式
中描述的主題內(nèi)容。術(shù)語“方面”將理解為“至少一個(gè)方面”。標(biāo)識在具體實(shí)施方式
中描述的主題內(nèi)容的各方面并非為了標(biāo)識要求保護(hù)的主題內(nèi)容的關(guān)鍵或者必要特征。這里描述的主題內(nèi)容的上述方面和其它方面以實(shí)例的方式說明,并且不限于同樣的標(biāo)號表不相似兀素的附圖中。
圖I是代表這里描述的主題內(nèi)容的方面可以并入于其中的示例通用計(jì)算環(huán)境的框 圖2是一般性地代表根據(jù)這里描述的主題內(nèi)容的方面的如下文件的框圖,該文件包括嵌入于其中的元數(shù)據(jù)和內(nèi)容;
圖3是圖示了根據(jù)這里描述的主題內(nèi)容的方面的如下文件的框圖,該文件具有在頭部的元數(shù)據(jù)和隨后的若干壓縮塊;
圖4是代表根據(jù)這里描述的主題內(nèi)容的方面配置的裝置的框圖;并且 圖5是一般性地代表根據(jù)這里描述的主題內(nèi)容的方面發(fā)生的示例動(dòng)作的流程圖。
具體實(shí)施例方式如這里所用,術(shù)語“包括”及其變體將理解為意味著“包括但是并不限于”的開放式術(shù)語。除非上下文另有指明,術(shù)語“或者”將理解為“和/或”。術(shù)語“基于”將理解為“至少部分基于”。術(shù)語“一個(gè)實(shí)施例”和“實(shí)施例”將理解為“至少一個(gè)實(shí)施例”。術(shù)語“另一實(shí)施例”將理解為“至少一個(gè)其它實(shí)施例”。如這里所用,例如“ 一個(gè)/ 一種”和“該”這樣的術(shù)語包括所言項(xiàng)目或者動(dòng)作中的一個(gè)或者多個(gè)。具體而言,在權(quán)利要求中,提及項(xiàng)目一般意味著存在至少一個(gè)這樣的項(xiàng)目,而提及動(dòng)作意味著執(zhí)行該動(dòng)作的至少一個(gè)實(shí)例。術(shù)語數(shù)據(jù)將廣義地理解為包括一個(gè)或者多個(gè)計(jì)算機(jī)存儲(chǔ)元件可以表示的任何事物。邏輯上可以在易失性或者非易失性存儲(chǔ)器中將數(shù)據(jù)表示為連串的I和O。在具有非二進(jìn)制存儲(chǔ)介質(zhì)的計(jì)算機(jī)中,可以根據(jù)存儲(chǔ)介質(zhì)的能 力來表示數(shù)據(jù)。可以將數(shù)據(jù)組織成不同類型的數(shù)據(jù)結(jié)構(gòu)(包括諸如數(shù)字、字母等簡單數(shù)據(jù)類型、分級的、鏈接的或者其它相關(guān)數(shù)據(jù)類型、包括多個(gè)其它數(shù)據(jù)結(jié)構(gòu)或者簡單數(shù)據(jù)類型的數(shù)據(jù)結(jié)構(gòu)等)。一些數(shù)據(jù)例子包括信息、程序代碼、程序狀態(tài)、程序數(shù)據(jù)、其它數(shù)據(jù)等。標(biāo)題僅為了方便;可以在標(biāo)題指示給定主題的章節(jié)以外發(fā)現(xiàn)關(guān)于該給定的主題的信息。下文可以包括其它明確和隱含定義。示例操作環(huán)境
圖I圖示了本文描述的主題內(nèi)容的方面可以實(shí)施于其上的適當(dāng)計(jì)算系統(tǒng)環(huán)境100的例子。計(jì)算系統(tǒng)環(huán)境100僅為適當(dāng)計(jì)算環(huán)境的一個(gè)例子而并非為了暗示與這里描述的主題內(nèi)容的方面的使用或者功能范圍有關(guān)的任何限制。計(jì)算環(huán)境100也不應(yīng)解釋為具有與在示例操作環(huán)境100中圖示的部件中的任一部件或者組合有關(guān)的任何依賴或者要求。這里描述的主題內(nèi)容的方面與諸多其它通用或者專用計(jì)算系統(tǒng)環(huán)境或者配置一起操作??梢赃m合于與這里描述的主題內(nèi)容的方面一起使用的公知計(jì)算系統(tǒng)、環(huán)境或者配置的例子包括個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持或者膝上型設(shè)備、多處理器系統(tǒng)、基于微控制器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PC、微型計(jì)算機(jī)、大型計(jì)算機(jī)、個(gè)人數(shù)字助理(PDA)、游戲設(shè)備、打印機(jī)、包括機(jī)頂盒、媒體中心或者其它設(shè)備的設(shè)備、汽車嵌入或者附著的計(jì)算設(shè)備、其它移動(dòng)設(shè)備、包括任何上述系統(tǒng)或者設(shè)備的分布式計(jì)算環(huán)境等??梢栽谟?jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令(例如程序模塊)的一般背景中描述這里描述的主題內(nèi)容的方面。一般而言,程序模塊包括執(zhí)行特定任務(wù)或者實(shí)施特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等。也可以在任務(wù)由通過通信網(wǎng)絡(luò)來鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的分布式計(jì)算環(huán)境中實(shí)現(xiàn)這里描述的主題內(nèi)容的方面。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)器存儲(chǔ)設(shè)備的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。參照圖1,用于實(shí)施這里描述的主題內(nèi)容的方面的示例系統(tǒng)包括形式為計(jì)算機(jī)110的通用計(jì)算設(shè)備。計(jì)算機(jī)可以包括能夠執(zhí)行指令的任何電子設(shè)備。計(jì)算機(jī)110的部件可以包括處理單元120、系統(tǒng)存儲(chǔ)器130和將包括系統(tǒng)存儲(chǔ)器的各種系統(tǒng)部件耦合到處理單元120的系統(tǒng)總線121。系統(tǒng)總線121可以是若干總線結(jié)構(gòu)類型(包括存儲(chǔ)器總線或者存儲(chǔ)器控制器、外圍總線和使用各種總線架構(gòu)中的任何總線架構(gòu)的本地總線)中的任何總線結(jié)構(gòu)類型。舉例而言而非限制,這樣的架構(gòu)包括工業(yè)標(biāo)準(zhǔn)架構(gòu)(ISA)總線、微通道架構(gòu)(MCA)總線、增強(qiáng)型ISA (EISA)總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA)本地總線、外圍部件互連(PCI)總線(也稱為Mezzanine總線)、外圍部件互連擴(kuò)展(PCI-X)總線、高級圖形端口(AGP)和PCI快速(PCIe)。計(jì)算機(jī)110通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)110可以訪問的任何可用介質(zhì)并且包括易失性和非易失性介質(zhì)以及可拆卸和不可拆卸介質(zhì)。舉例而言而非限制,計(jì)算機(jī)可讀介質(zhì)可以包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括用任何用于存儲(chǔ)信息(例如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或者其它數(shù)據(jù))的方法或者技術(shù)實(shí)施的易失性和非易失性、可拆卸和不可拆卸介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括RAM、ROM、EEPR0M、閃存或者其它存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字萬用盤(DVD)或者其它光盤儲(chǔ)存器、磁盒、磁帶、磁盤儲(chǔ)存器或者其它磁存儲(chǔ)設(shè)備或者任何可以用來存儲(chǔ)所需信息并且可以由計(jì)算機(jī)110訪問的其它介質(zhì)。通信介質(zhì)通常在調(diào)制的數(shù)據(jù)信號(例如載波或者其它傳送機(jī)制)中具體化計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或者其它數(shù)據(jù)并且包括任何信息遞送介質(zhì)。術(shù)語“調(diào)制的數(shù)據(jù)信號”意味著如下信號,該信號以這樣的方式改變其特征集的一個(gè)或多個(gè)以便在該信號 中編碼信息。舉例而言而非限制,通信介質(zhì)包括有線介質(zhì)(例如有線網(wǎng)絡(luò)或者直接有線連接)和無線介質(zhì)(例如聲學(xué)、RF、紅外線和其它無線介質(zhì))。也應(yīng)當(dāng)在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)包括任何上述通信介質(zhì)的組合。系統(tǒng)存儲(chǔ)器130包括形式為易失性和/或非易失性存儲(chǔ)器(例如只讀存儲(chǔ)器(ROM)131和隨機(jī)存取存儲(chǔ)器(RAM) 132)的計(jì)算機(jī)存儲(chǔ)介質(zhì)。基本輸入/輸出系統(tǒng)133 (BIOS)通常存儲(chǔ)于ROM 131中,該基本輸入/輸出系統(tǒng)133包含有助于例如在啟動(dòng)期間在計(jì)算機(jī)110內(nèi)的單元之間傳送信息的基本例程。RAM 132通常包含處理單元120立即可訪問和/或處理單元120目前操作的數(shù)據(jù)和/或程序模塊。舉例而言而非限制,圖I圖示了操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137。計(jì)算機(jī)110也可以包括其它可拆卸/不可拆卸、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。僅舉例而言,圖I圖示了從不可拆卸、非易失性磁介質(zhì)讀取或者向其中寫入的硬盤驅(qū)動(dòng)器141、從可拆卸、非易失性磁盤152讀取或者向其中寫入的磁盤驅(qū)動(dòng)器151和從可拆卸、非易失性光盤156 (例如CD ROM或者其它光學(xué)介質(zhì))讀取或者向其中寫入的光盤驅(qū)動(dòng)器155??梢栽谑纠圆僮鳝h(huán)境中使用的其它可拆卸/不可拆卸、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)包括磁帶盒、閃存卡、數(shù)字萬用盤、其它光盤、數(shù)字視頻帶、固態(tài)RAM、固態(tài)ROM等。硬盤驅(qū)動(dòng)器141可以通過接口 140連接到系統(tǒng)總線121,而磁盤驅(qū)動(dòng)器151和光盤驅(qū)動(dòng)器155可以通過用于可拆卸、非易失性存儲(chǔ)器的接口(例如接口 150)連接到系統(tǒng)總線121。上文討論并且在圖I中圖示的驅(qū)動(dòng)器及其關(guān)聯(lián)計(jì)算機(jī)存儲(chǔ)介質(zhì)提供對用于計(jì)算機(jī)110的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲(chǔ)。在圖I中例如將硬盤驅(qū)動(dòng)器141圖示為存儲(chǔ)操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146和程序數(shù)據(jù)147。注意,這些部件可以與操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137相同或者不同。這里向操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146和程序數(shù)據(jù)147給予不同編號以便以最低限度說明它們?yōu)椴煌母北?。用戶可以通過輸入設(shè)備(例如鍵盤162和指示設(shè)備161)(慣稱為鼠標(biāo)、跟蹤球或者觸墊)向計(jì)算機(jī)110中錄入命令和信息。其它輸入設(shè)備(未示出)可以包括麥克風(fēng)、操縱桿、游戲墊、碟形衛(wèi)星天線、掃描儀、觸敏屏幕、寫字板等。這些和其它輸入設(shè)備經(jīng)常通過用戶輸入接口 160 (該用戶輸入接口耦合到系統(tǒng)總線)連接到處理單元120、但是可以由其它接口和總線結(jié)構(gòu)(例如并行端口、游戲端口或者通用串行總線(USB))連接。監(jiān)視器191或者其它類型的顯示設(shè)備也經(jīng)由接口(例如視頻接口 190)連接到系統(tǒng)總線121。除了監(jiān)視器之外,計(jì)算機(jī)也可以包括可以通過輸出外圍接口 195連接的其它外圍輸出設(shè)備,例如揚(yáng)聲器197和指示器198。計(jì)算機(jī)110可以使用到一個(gè)或者多個(gè)遠(yuǎn)程計(jì)算機(jī)(例如遠(yuǎn)程計(jì)算機(jī)180)的邏輯連接在聯(lián)網(wǎng)環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)180可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或者其它常見網(wǎng)絡(luò)節(jié)點(diǎn)并且通常包括上文相對于計(jì)算機(jī)110描述的元件中的多個(gè)或者全部,盡管在圖I中僅已經(jīng)圖示存儲(chǔ)器存儲(chǔ)設(shè)備181。圖I中描繪的邏輯連接包括局域網(wǎng)(LAN) 171和廣域網(wǎng)(WAN) 173、但是也可以包括其它網(wǎng)絡(luò)。這樣的聯(lián)網(wǎng)環(huán)境在辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)部網(wǎng)和因特網(wǎng)中司空見慣。
當(dāng)使用于LAN聯(lián)網(wǎng)環(huán)境中時(shí),計(jì)算機(jī)110通過網(wǎng)絡(luò)接口或者適配器170連接到LAN171。當(dāng)使用于WAN聯(lián)網(wǎng)環(huán)境中時(shí),計(jì)算機(jī)110可以包括調(diào)制解調(diào)器172或者用于通過WAN173 (例如因特網(wǎng))建立通信的其它裝置??梢允莾?nèi)部或者外部的調(diào)制器解調(diào)器172可以經(jīng)由用戶輸入接口 160或者其它適當(dāng)機(jī)構(gòu)連接到系統(tǒng)總線121。在聯(lián)網(wǎng)的環(huán)境中,相對于計(jì)算機(jī)110描繪的程序模塊或者其部分可以存儲(chǔ)于遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。舉例而言而非限制,圖I將遠(yuǎn)程應(yīng)用程序185圖示為駐留于存儲(chǔ)器設(shè)備181上。將理解所示網(wǎng)絡(luò)連接為示例性的,并且可以使用其它在計(jì)算機(jī)之間建立通信鏈路的裝置。保護(hù)文件
如先前提到的那樣,創(chuàng)建大型文件的多個(gè)副本可能快速填充備份設(shè)備。圖2是一般性地表示根據(jù)這里描述的主題內(nèi)容的方面的如下文件的框圖,該文件具有嵌入于其中的元數(shù)據(jù)和內(nèi)容。如圖所示,文件200可以劃分成頭部分205、中間部分206和尾部分207。未按比例繪出這些部分205-207。許多文件包括元數(shù)據(jù)或者與元數(shù)據(jù)關(guān)聯(lián)。元數(shù)據(jù)是關(guān)于文件的數(shù)據(jù)而不是文件的實(shí)際內(nèi)容。例如元數(shù)據(jù)可以包括作者、創(chuàng)建時(shí)間和日期、大小、用途、編碼方案、色深度、圖像分辨率、文件內(nèi)容摘要或者關(guān)于文件的其它數(shù)據(jù)。有時(shí),在文件外部維護(hù)元數(shù)據(jù)。例如,文件系統(tǒng)可以維護(hù)與文件系統(tǒng)的文件有關(guān)的元數(shù)據(jù)??梢栽谖募到y(tǒng)數(shù)據(jù)結(jié)構(gòu)中維護(hù)而不是在文件本身中嵌入這個(gè)元數(shù)據(jù)。對于一些文件類型,向文件本身中嵌入(例如在文件本身以內(nèi)放置)元數(shù)據(jù)。另外,不同文件類型(例如 mp3、. wav、. pdf、. tiff、. bmp、. mov等)可以具有不同數(shù)量的元數(shù)據(jù)。相同文件類型可以具有不同數(shù)量的元數(shù)據(jù)用于該文件類型的文件的不同實(shí)例。當(dāng)元數(shù)據(jù)嵌入于文件中而不是存儲(chǔ)于單獨(dú)地方時(shí),元數(shù)據(jù)經(jīng)常放置于文件的開頭或者末尾。檢測是否僅元數(shù)據(jù)已經(jīng)改變可以用來確定文件是否需要備份并且如果是這樣則確定將針對該文件備份什么。例如,為了節(jié)約備份空間,一些用戶可能希望在僅文件的元數(shù)據(jù)改變時(shí)不創(chuàng)建文件的備份副本。例如多媒體文件的元數(shù)據(jù)“星”等級盡管有用但是可能對于用戶而言不如文件內(nèi)容的改變那樣重要。如這里描述的那樣,一種用于確定文件的元數(shù)據(jù)是否已經(jīng)改變的機(jī)制包括針對文件計(jì)算兩個(gè)散列。具體而言,可以針對文件200的頭部分205計(jì)算頭部散列,并且可以針對文件200的尾部分207計(jì)算尾部散列。如果頭部散列等于文件的先前計(jì)算的頭部散列并且尾部散列等于文件的先前計(jì)算的尾部散列,則認(rèn)為文件200的元數(shù)據(jù)尚未改變。另一種用于確定文件的元數(shù)據(jù)是否已經(jīng)改變的機(jī)制包括針對文件的頭部分或者尾部分但是并非二者計(jì)算散列。具體而言,在一種實(shí)施方式中,僅針對文件200的頭部分205計(jì)算頭部散列。如果頭部散列等于文件200的先前計(jì)算的頭部散列,則認(rèn)為文件200的元數(shù)據(jù)尚未改變。在這一實(shí)施方式中,可以在包括中間部分206和尾部分207的內(nèi)容部分中包括文件200的尾部分207。這一實(shí)施方式可以例如在預(yù)期元數(shù)據(jù)在文件頭部的情況下使用。在另一實(shí)施方式中,僅針對文件200的尾部分207計(jì)算尾部散列。如果尾部散列等于文件200的先前計(jì)算的尾部散列,則認(rèn)為文件200的元數(shù)據(jù)尚未改變。在這一實(shí)施方式中,可以在包括頭部分205和中間部分206的內(nèi)容部分中包括文件200的頭部分205。這一實(shí)施方式可以例如使用于預(yù)計(jì)元數(shù)據(jù)在文件尾部的情況下。在可以計(jì)算頭部散列和尾部散列這二者的實(shí)施方式中,文件200的內(nèi)容部分僅包括文件200的中間部分206。內(nèi)容散列是針對被指定為內(nèi)容部分的部分計(jì)算的散列,并且可 以僅包括中間部分206、包括中間部分206和頭部分205或者包括中間部分206和尾部分207。散列是可以通過向輸入數(shù)據(jù)應(yīng)用一組運(yùn)算(例如加法、乘法、除法、減法、移位等)來產(chǎn)生的輸出數(shù)據(jù)。計(jì)算散列與向輸入數(shù)據(jù)應(yīng)用這組運(yùn)算以獲得輸出數(shù)據(jù)同義。通常,輸入數(shù)據(jù)比輸出數(shù)據(jù)大得多。另外,輸入數(shù)據(jù)大小可變,而輸出數(shù)據(jù)可以是固定大小。產(chǎn)生散列的函數(shù)(有時(shí)稱為散列函數(shù))是確定性的對于給定的輸入數(shù)據(jù)而言意味著散列函數(shù)將生成相同輸出數(shù)據(jù)。雖然散列函數(shù)可以向相同輸出數(shù)據(jù)映射兩個(gè)或者更多不同輸入數(shù)據(jù),但是可以選擇散列函數(shù)以保證這一情況的出現(xiàn)概率相對小。利用這些性質(zhì),散列可以用來通過比較文件的數(shù)據(jù)的兩個(gè)單獨(dú)散列來檢測文件(或者其部分)是否已經(jīng)改變而無需比較文件的每個(gè)字節(jié)與它在文件的先前版本中的對應(yīng)字節(jié)。如果頭部散列或者尾部散列不等于它的對應(yīng)的先前計(jì)算的散列,則可以執(zhí)行附加校驗(yàn)以確定是否僅元數(shù)據(jù)改變或者是否文件的元數(shù)據(jù)和內(nèi)容改變。這一附加校驗(yàn)涉及針對文件200的中間部分206計(jì)算散列并且比較這一散列與針對文件200的中間部分206先前計(jì)算的散列。如果中間散列等于先前計(jì)算的中間散列,則認(rèn)為僅元數(shù)據(jù)已經(jīng)改變。如果中間散列不等于先前計(jì)算的中間散列,則認(rèn)為除了元數(shù)據(jù)之外或者替代元數(shù)據(jù)還改變了內(nèi)容??梢杂酶鞣N方式執(zhí)行選擇視為文件200的頭部分205的長度并且選擇視為文件200的尾部分的長度。這里描述的一種不例方式是如下文描述的那樣基于壓縮塊大小來選擇長度。為了節(jié)約空間,多媒體和其它文件可以具有壓縮的內(nèi)容??梢允褂靡环N使用壓縮塊大小的壓縮算法來壓縮內(nèi)容。為了查看和編輯內(nèi)容,可以解壓內(nèi)容或者一個(gè)或者多個(gè)塊。如果任何這一解壓內(nèi)容改變,則壓縮算法可以壓縮改變的內(nèi)容,從而原壓縮內(nèi)容和新壓縮內(nèi)容明顯或者完全不同一即使很少解壓的內(nèi)容改變。另外,對一個(gè)塊中的內(nèi)容進(jìn)行的改變可以在壓縮期間對整個(gè)文件內(nèi)的其它塊具有影響。對具有嵌入的元數(shù)據(jù)的多媒體文件的這一壓縮可以用于選擇視為文件200的頭部分205的長度和視為文件200的尾部分207的長度。為了檢測僅元數(shù)據(jù)已經(jīng)改變,可以選擇等于元數(shù)據(jù)的長度。然而,因?yàn)樵獢?shù)據(jù)的長度可能隨文件類型的改變而改變,或者甚至在同一文件類型內(nèi)隨文件的改變而改變,所以選擇與元數(shù)據(jù)的長度確切相等的長度可以涉及具有關(guān)于元數(shù)據(jù)結(jié)構(gòu)的理解并且能夠解析元數(shù)據(jù)以確定它的長度。選擇經(jīng)?;蛘呖偸潜仍獢?shù)據(jù)的長度更小的長度可以觸發(fā)備份機(jī)構(gòu)以甚至針對元數(shù)據(jù)的改變來創(chuàng)建備份副本。作為極端例子,如果選擇的長度為一個(gè)字節(jié),則在頭部分205的第一字節(jié)之后或者在尾部分207的最后字節(jié)之前的任何改變將視為文件的內(nèi)容而不是元數(shù)據(jù)的改變。對內(nèi)容的改變可以觸發(fā)備份機(jī)構(gòu)以創(chuàng)建文件的備份副本。選擇預(yù)期經(jīng)常或者總是比元數(shù)據(jù)的長度更大、但是比壓縮塊大小更小的長度具有檢測元數(shù)據(jù)的改變而未頻繁地(或者從未)將對內(nèi)容的改變歸于對元數(shù)據(jù)的改變這樣的效果。根據(jù)關(guān)于壓縮算法的上述觀察得出這一結(jié)論甚至內(nèi)容的最小改變也可以改變盤上的整個(gè)塊的壓縮內(nèi)容或者甚至改變盤上的文件的全部壓縮內(nèi)容。
圖3是圖示了根據(jù)這里描述的主題內(nèi)容的方面的如下文件的框圖,該文件具有在頭部的元數(shù)據(jù)和隨后若干壓縮塊。如圖所示,文件300包括嵌入的元數(shù)據(jù)305和已經(jīng)在壓縮塊310-314中壓縮的內(nèi)容。已經(jīng)選擇長度320作為文件300的頭部分的大小。如圖所示的長度320略少于壓縮塊大小。如果僅元數(shù)據(jù)305改變,則在文件300的頭部的具有長度320的數(shù)據(jù)的散列檢測到這一改變,但是可能不足以確定文件300的元數(shù)據(jù)305或者內(nèi)容中是否出現(xiàn)改變。例如在點(diǎn)325之前的任一處的數(shù)據(jù)的改變可能使頭部分的散列不同于頭部分的先前計(jì)算的散列。頭部分具有從文件的開頭起的長度320并且大于元數(shù)據(jù)305。在這一情況下,為了檢測元數(shù)據(jù)305或者元數(shù)據(jù)305之后的內(nèi)容中是否出現(xiàn)改變,也可以計(jì)算中間部分(包括點(diǎn)325之后的數(shù)據(jù))的另一散列。計(jì)算中間部分的散列在確定元數(shù)據(jù)或者內(nèi)容是否因?yàn)閴嚎s算法的性質(zhì)而改變時(shí)有效。具體而言,如果在壓縮期間在元數(shù)據(jù)305之后、但是在點(diǎn)325之前的數(shù)據(jù)改變,則這可能引起對壓縮塊310中的甚至在點(diǎn)325之后的數(shù)據(jù)的改變。然而僅元數(shù)據(jù)305的改變一般將不會(huì)對壓縮塊310中的數(shù)據(jù)具有任何影響,因?yàn)樵獢?shù)據(jù)通常不在壓縮塊中。因此,如果僅元數(shù)據(jù)305改變,則壓縮塊310將不改變并且中間散列將等同于先前計(jì)算的中間散列。另一方面,如果在壓縮期間元數(shù)據(jù)305之后并且在點(diǎn)325之前的任一處的數(shù)據(jù)改變,則這將引起整個(gè)壓縮塊310中的數(shù)據(jù)的明顯改變。因此,頭部分(在點(diǎn)325之前的部分)的散列和中間部分(在點(diǎn)325之后的部分)的散列都將檢測到這一改變。如果兩個(gè)散列指示數(shù)據(jù)改變,則數(shù)據(jù)保護(hù)引擎可以推斷至少文件的內(nèi)容改變并且可能地文件的內(nèi)容和元數(shù)據(jù)也改變。由于內(nèi)容改變,所以需要備份文件。下文是用于選擇長度320的一些示例方式
I.選擇與在大型多媒體文件之中常見的壓縮塊大小相等或者更小的長度。例如對于一些多媒體文件,64千字節(jié)、128千字節(jié)、256千字節(jié)或者一些其它大小可以是常見的壓縮塊大小。2.通過使用將文件擴(kuò)展名與長度關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)(例如表)來選擇長度。數(shù)據(jù)結(jié)構(gòu)可以將一個(gè)或者多個(gè)文件擴(kuò)展名與每個(gè)長度關(guān)聯(lián)。例如具有某些擴(kuò)展名的視頻文件可以與一個(gè)長度關(guān)聯(lián),具有某些擴(kuò)展名的音頻文件可以與另一長度關(guān)聯(lián),具有某些擴(kuò)展名的視頻文件和音頻文件可以與又一長度關(guān)聯(lián),等等。如果數(shù)據(jù)結(jié)構(gòu)沒有用于給定的文件擴(kuò)展名的具體長度,那么數(shù)據(jù)結(jié)構(gòu)也可以指定要使用的默認(rèn)長度。3.通過讀取元數(shù)據(jù)本身并且據(jù)此確定元數(shù)據(jù)的長度來選擇長度。這可以涉及能夠讀取用于不同文件類型的元數(shù)據(jù)的一個(gè)或者多個(gè)部件?;氐綀D2,一些文件格式可以向文件的末尾(例如在尾部分207之后)添加新的或者改變的數(shù)據(jù)。在這些情況下,數(shù)據(jù)保護(hù)引擎可以維護(hù)如下數(shù)據(jù),該數(shù)據(jù)指示尾部分207從何處開始并且尾部分207有多長,并且數(shù)據(jù)保護(hù)引擎可以使用這一信息對尾部分207執(zhí)行散列。換而言之,可以基于原尾部分的位置來計(jì)算散列而不是將尾部分207限定為從文件的末尾起的長度。如果在尾部分207之后添加的數(shù)據(jù)量超過可配置閾值,則可以再次從文件的末尾測量尾部分207。已經(jīng)針對文件計(jì)算的散列可以存儲(chǔ)于記錄中用于在與針對文件計(jì)算的后續(xù)散列比較時(shí)使用。在一個(gè)實(shí)施例中,如果文件的內(nèi)容已經(jīng)改變,則數(shù)據(jù)保護(hù)引擎可以制作文件的備份副本,而如果僅文件的元數(shù)據(jù)已經(jīng)改變(如散列指示的那樣),則可以不創(chuàng)建文件的備 份副本。在另一實(shí)施例中,數(shù)據(jù)保護(hù)弓丨擎可以創(chuàng)建已經(jīng)改變的文件的每個(gè)部分的備份副本。例如,如果元數(shù)據(jù)已經(jīng)改變,則數(shù)據(jù)保護(hù)引擎可以創(chuàng)建元數(shù)據(jù)的備份副本。如果文件的內(nèi)容已經(jīng)改變,則數(shù)據(jù)保護(hù)引擎可以創(chuàng)建文件的內(nèi)容的備份副本。在這一實(shí)施例中,出于備份考慮,可以將文件視為三個(gè)文件。如果文件的任何“部分”改變,則備份該部分。阻止列表可以包括如下標(biāo)識符,這些標(biāo)識符針對文件的包括在文件的各種版本中的部分。在這一實(shí)施例中,可以選擇頭部和尾部的長度至少如最大預(yù)期元數(shù)據(jù)長度那樣大。在可以獨(dú)立備份元數(shù)據(jù)和內(nèi)容的場合,備份管理器可以能夠在用戶界面中示出對元數(shù)據(jù)的改變。例如,備份管理器可以顯示示出元數(shù)據(jù)的兩個(gè)版本的兩個(gè)并排窗口或者其它用戶界面元素。圖4是表示根據(jù)這里描述的主題內(nèi)容的方面配置的裝置的框圖。圖4中所示部件為示例性的而并非意在囊括可能需要或者包括的部件。在一個(gè)實(shí)施例中,結(jié)合圖4描述的部件可以包含于其它部件(已示出或者未示出)中或者放置于子部件中,這未脫離這里描述的主題內(nèi)容的方面的精神或者范圍。在一些實(shí)施例中,結(jié)合圖4描述的部件和/或功能可以跨多個(gè)設(shè)備而分布。轉(zhuǎn)向圖4,裝置405可以包括數(shù)據(jù)保護(hù)部件410、儲(chǔ)存器435、通信機(jī)構(gòu)440和其它部件(未示出)。裝置405可以實(shí)施于計(jì)算機(jī)上或者實(shí)施為計(jì)算機(jī)(例如圖I的計(jì)算機(jī)110)。通信機(jī)構(gòu)440允許裝置405與其它實(shí)體通信。例如,通信機(jī)構(gòu)440可以允許裝置與一個(gè)或者多個(gè)如下設(shè)備(例如附著于網(wǎng)絡(luò)儲(chǔ)存器、存儲(chǔ)區(qū)網(wǎng)絡(luò)設(shè)備、文件服務(wù)器等)通信,所述設(shè)備存儲(chǔ)儲(chǔ)存器435上包括的文件的備份副本。通信機(jī)構(gòu)440可以是如結(jié)合圖I描述的網(wǎng)絡(luò)接口或者適配器170、調(diào)制解調(diào)器172、USB或者其它端口或者用于建立通信的任何其它機(jī)構(gòu)。儲(chǔ)存器435是能夠存儲(chǔ)數(shù)據(jù)的任何存儲(chǔ)介質(zhì)。儲(chǔ)存器435可以實(shí)施為文件系統(tǒng)、數(shù)據(jù)庫、易失性存儲(chǔ)器(例如RAM)、其它儲(chǔ)存器、上述儲(chǔ)存器的一些組合等并且可跨多個(gè)設(shè)備而分布。儲(chǔ)存器435可以在裝置405外部、內(nèi)部或者包括在裝置405外部和內(nèi)部的部件。數(shù)據(jù)保護(hù)部件410可以包括改變檢測器415、散列器420、散列管理器425、數(shù)據(jù)保護(hù)引擎430和其它部件(未示出)。如這里所用,術(shù)語部件將理解為包括硬件(例如設(shè)備的全部或者部分)、一個(gè)或者多個(gè)軟件模塊或者其部分的集合、一個(gè)或者多個(gè)軟件模塊或者其部分與一個(gè)或者多個(gè)設(shè)備或者其部分的一些組合等。改變檢測器415是檢測保護(hù)的命名空間的文件是否已經(jīng)出現(xiàn)改變。例如,改變檢測器415可以使用時(shí)間戳、可以監(jiān)視對文件系統(tǒng)的改變或者可以使用其它機(jī)構(gòu)來確定是否已經(jīng)出現(xiàn)改變。基于這里的教導(dǎo),本領(lǐng)域技術(shù)人員可以認(rèn)識到可以使用其它用于檢測文件是否已經(jīng)出現(xiàn)改變的方式而未脫離這里描述的主題內(nèi)容的方面的精神或者范圍。當(dāng)改變檢測器415確定文件已經(jīng)改變時(shí),改變檢測器415可以向數(shù)據(jù)保護(hù)引擎通知文件已經(jīng)改變。為了確定文件的元數(shù)據(jù)和/或內(nèi)容已經(jīng)改 變,數(shù)據(jù)保護(hù)引擎430可以運(yùn)用散列管理器425。散列管理器425可操作地使用散列器420來生成散列以確定文件中什么已經(jīng)改變。散列管理器425可以向散列器420提供文件的部分用于輸入并且可以獲得與輸入對應(yīng)的不同散列作為輸出。例如,散列器420可以向散列器420提供文件的頭部、尾部和中間部分的數(shù)據(jù)并且響應(yīng)于此獲得頭部散列、尾部散列和中間散列。散列管理器425可以存儲(chǔ)先前計(jì)算的散列以便與后續(xù)計(jì)算的散列比較以確定文件中的什么已經(jīng)改變。例如,如果頭部散列等于文件的先前計(jì)算的頭部散列并且文件的尾部散列等于文件的先前計(jì)算的尾部散列,則散列管理器425可以確定文件的內(nèi)容已經(jīng)改變并且可以向數(shù)據(jù)保護(hù)引擎430指示這一點(diǎn)。如果文件的頭部散列或者尾部散列已經(jīng)改變,則散列管理器425可以確定文件的至少元數(shù)據(jù)已經(jīng)改變并且還可以操作地獲得文件的中間部分的中間散列并且比較中間散列與文件的先前計(jì)算的中間散列。如果中間散列等于先前計(jì)算的中間散列,則散列管理器425可以指示僅元數(shù)據(jù)已經(jīng)改變;否則,散列管理器425可以指示文件的元數(shù)據(jù)和內(nèi)容均已經(jīng)改變。在一個(gè)實(shí)施例中,散列管理器425可以將預(yù)選固定長度用于文件的頭部分和尾部分。固定長度可以獨(dú)立于文件的元數(shù)據(jù)的大小并且可以基于用于文件內(nèi)容的壓縮算法的預(yù)期壓縮塊大小來(例如通過開發(fā)者等)選擇。在另一實(shí)施例中,散列管理器425可以通過使用文件的擴(kuò)展名以根據(jù)將文件擴(kuò)展名與長度關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)獲得頭部和/或尾部分的長度來獲得該長度。在選擇尾部分的起始位置時(shí),散列管理器425可以使用文件的尾部分的先前起始位置。如先前提到的那樣,這可以在已經(jīng)向文件的末尾添加數(shù)據(jù)的場合有用。散列器420是可操作地接收數(shù)據(jù)并且通過對數(shù)據(jù)執(zhí)行一組運(yùn)算來基于該數(shù)據(jù)產(chǎn)生散列的任何部件。在執(zhí)行運(yùn)算時(shí),散列器420可以用對數(shù)據(jù)的各種部分的運(yùn)算的結(jié)果來更新作為散列器420的變量。如先前提到的那樣,在一個(gè)實(shí)施例中,散列函數(shù)可以接收可變長度的數(shù)據(jù)并且據(jù)此產(chǎn)生獨(dú)立于可變長度的固定尺寸的輸出數(shù)據(jù)。數(shù)據(jù)保護(hù)引擎430可操作地基于散列管理器指示什么已經(jīng)改變來創(chuàng)建內(nèi)容和/或元數(shù)據(jù)的備份副本。例如,在一個(gè)實(shí)施例中,如果散列管理器指示文件的內(nèi)容已經(jīng)改變,則數(shù)據(jù)保護(hù)引擎430可以創(chuàng)建內(nèi)容和嵌入的元數(shù)據(jù)的備份副本。在另一實(shí)施例中,只有在僅元數(shù)據(jù)已經(jīng)改變的情況下,數(shù)據(jù)保護(hù)引擎430才可以創(chuàng)建元數(shù)據(jù)的備份副本。在另一實(shí)施例中,數(shù)據(jù)保護(hù)引擎430可以將文件視為三個(gè)單獨(dú)文件(出于備份考慮)并且可以僅備份文件的改變的部分。
圖5是一般性地表示根據(jù)這里描述的主題內(nèi)容的方面的可能出現(xiàn)的示例動(dòng)作的流程圖。為了簡化說明,將結(jié)合圖5描述的方法描繪和描述為一連串動(dòng)作。將理解和認(rèn)識到這里描述的主題內(nèi)容的方面不受所示動(dòng)作和/或不受動(dòng)作順序限制。在一個(gè)實(shí)施例中,動(dòng)作按照如下文描述的順序出現(xiàn)。然而在其它實(shí)施例中,動(dòng)作可以并行、按照另一順序和/或與這里未呈現(xiàn)和描述的其它動(dòng)作一起出現(xiàn)。另外,不是所有所說明的動(dòng)作可以被需要來實(shí)施根據(jù)這里描述的主題內(nèi)容的方面的方法。此外,本領(lǐng)域技術(shù)人員將理解和認(rèn)識到該方法可以可替換地經(jīng)由狀態(tài)圖被表示為一系列互相關(guān)的狀態(tài)或者被表示為事件。參照圖5,在塊505,動(dòng)作開始。在塊510,接收文件改變指示。例如,參照圖4,改變檢測器415可以檢測到儲(chǔ)存器435上的文件已經(jīng)發(fā)生改變。在塊515,計(jì)算文件的散列。例如,參照圖4,散列管理器425可以命令散列器420針對文件的頭部分、尾部分和/或中間部分計(jì)算散列。如先前提到的那樣,在一個(gè)實(shí)施例中,代表文件頭部分和尾部分的長度可以在運(yùn)行時(shí)間之前由開發(fā)者等選擇并且可以獨(dú)立于文件的類型(例如不考慮文件的內(nèi)容而使用)。在另一實(shí)施例中,可以通過使用文件的擴(kuò)展 名以根據(jù)將文件擴(kuò)展名與長度關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)獲得長度來獲得該長度??梢苑蛛A段完成計(jì)算散列。從塊520到塊515的線指示這一類型的實(shí)施方式。例如,起初可以針對文件的頭部計(jì)算散列。如果散列不等于先前計(jì)算的頭部散列,則這指示至少元數(shù)據(jù)已經(jīng)改變。在這一點(diǎn),可以計(jì)算文件中間部分的中間散列。如果這一中間散列不等同于先前計(jì)算的中間散列,則這指示文件的元數(shù)據(jù)和內(nèi)容均已經(jīng)改變。另一方面,如果頭部散列等于先前計(jì)算的頭部散列,則可以計(jì)算尾部散列。如果尾 部散列不等同于先前生成的尾部散列,則這意味著至少元數(shù)據(jù)已經(jīng)改變并且可以執(zhí)行進(jìn)一步校驗(yàn)以確定內(nèi)容是否也已經(jīng)改變。然而,如果頭部散列等同于先前計(jì)算的頭部散列并且尾部散列等同于先前計(jì)算的尾部散列并且文件已經(jīng)改變(如改變檢測器指示的那樣),則這意味著文件的內(nèi)容已經(jīng)改變。在這一情況下,可以無需生成中間散列,因?yàn)槠渌鼦l件可以用來推知內(nèi)容已經(jīng)改變。在這一情況下,在一個(gè)實(shí)施例中,可以備份包括內(nèi)容和元數(shù)據(jù)的整個(gè)文件。在另一實(shí)施例中,可以僅備份內(nèi)容。替代首先計(jì)算頭部散列,可以根據(jù)比較散列與先前生成的散列的結(jié)果用以下類似動(dòng)作首先計(jì)算尾部散列。在塊520,確定文件的什么部分(一個(gè)或多個(gè))已經(jīng)改變。例如,使用由散列器420返回的散列,散列管理器425可以確定文件的內(nèi)容、元數(shù)據(jù)或者內(nèi)容和元數(shù)據(jù)是否已經(jīng)改變。例如校驗(yàn)頭部散列是否等于文件的先前計(jì)算的頭部散列并且尾部散列是否等于文件的先前計(jì)算的尾部散列可以指示是否僅文件的內(nèi)容已經(jīng)改變。例如,如果這些條件均為真(并且文件已經(jīng)改變),則可以確定文件的內(nèi)容已經(jīng)改變。如果這些條件中的任一條件不為真,則認(rèn)為至少元數(shù)據(jù)已經(jīng)改變并且可以執(zhí)行附加動(dòng)作以確定內(nèi)容是否也已經(jīng)改變。在塊525,可以創(chuàng)建內(nèi)容和/或元數(shù)據(jù)的備份副本。例如,參照圖4,數(shù)據(jù)保護(hù)引擎430可以制作儲(chǔ)存器435上的文件的已經(jīng)改變的內(nèi)容和/或元數(shù)據(jù)的備份副本。如果僅文件的元數(shù)據(jù)已經(jīng)改變,則數(shù)據(jù)保護(hù)引擎430根據(jù)實(shí)施方式可以僅備份元數(shù)據(jù)或者避免創(chuàng)建文件的任何部分的備份副本。這可以涉及根據(jù)指示僅文件的頭部分或者尾部分是否已經(jīng)改變的散列而僅備份文件的頭部分或者僅備份文件的尾部分。 在塊530可以執(zhí)行其它動(dòng)作(如果有)。如根據(jù)前文具體實(shí)施方式
可見,已經(jīng)描述了與數(shù)據(jù)保護(hù)有關(guān)的方面。盡管這里描述的主題內(nèi)容的方面容許各種修改和替代構(gòu)造,但是在附圖中示出并且上文已經(jīng)具體描述了其某些所示實(shí)施例。然而應(yīng)當(dāng)理解,不旨在將要求保護(hù)的主題內(nèi)容的方面限于公開的具體形式,而是相反,旨在覆蓋落入這里描述的主題內(nèi)容的各種方面的精神和范圍內(nèi)的所有修改、替代結(jié)構(gòu)和等效 物。
權(quán)利要求
1.一種至少部分由計(jì)算機(jī)實(shí)施的方法,該方法包括 接收(510)文件的數(shù)據(jù)已經(jīng)改變的指示,所述文件包括嵌入其中的元數(shù)據(jù)和內(nèi)容; 響應(yīng)于所述指示,計(jì)算(515)至少兩個(gè)散列,包括計(jì)算所述文件的頭部分的頭部散列和所述文件的尾部分的尾部散列;并且 至少部分地通過校驗(yàn)是否所述頭部散列等于所述文件的先前計(jì)算的頭部散列并且所述尾部散列等于所述文件的先前計(jì)算的尾部散列來確定(520)所述文件的所述元數(shù)據(jù)是否已經(jīng)改變。
2.根據(jù)權(quán)利要求I所述的方法,還包括計(jì)算所述文件的中間部分的中間散列以便在與所述文件的先前計(jì)算的中間散列比較時(shí)使用。
3.根據(jù)權(quán)利要求2所述的方法,還包括如果所述頭部散列不等于所述先前計(jì)算的頭部散列并且如果所述中間散列等于所述先前計(jì)算的中間散列并且所述尾部散列等于所述先前計(jì)算的尾部散列,則創(chuàng)建僅所述文件的所述頭部分的備份副本。
4.根據(jù)權(quán)利要求2所述的方法,還包括如果所述頭部散列不等于所述先前計(jì)算的頭部散列或者所述尾部散列不等于所述先前計(jì)算的尾部散列,則創(chuàng)建至少所述文件的所述頭部分和所述文件的所述尾部分的備份副本。
5.根據(jù)權(quán)利要求2所述的方法,還包括如果所述中間散列不等于所述文件的所述先前計(jì)算的中間散列,則創(chuàng)建整個(gè)所述文件的備份副本。
6.—種在計(jì)算環(huán)境中的系統(tǒng),包括 改變檢測器(415),其可操作地確定包括內(nèi)容和嵌入的元數(shù)據(jù)的文件已經(jīng)改變; 散列器(420),其可操作地接收數(shù)據(jù)并且通過對所述數(shù)據(jù)執(zhí)行一組運(yùn)算來基于所述數(shù)據(jù)產(chǎn)生散列; 散列管理器(425),其可操作地使用所述散列器來計(jì)算所述文件的內(nèi)容部分的內(nèi)容散列并且計(jì)算所述文件的頭部分的頭部散列和所述文件的尾部分的尾部散列中的一個(gè)或者多個(gè),所述散列管理器還可操作地進(jìn)行對散列的一個(gè)或者多個(gè)比較,包括比較所述頭部散列與所述文件的先前計(jì)算的頭部散列、比較所述尾部散列與所述文件的先前計(jì)算的尾部散列以及比較所述內(nèi)容散列與所述文件的先前計(jì)算的內(nèi)容散列,所述散列管理器還可操作地基于所述一個(gè)或者多個(gè)比較來指示所述文件的內(nèi)容和/或元數(shù)據(jù)是否已經(jīng)改變;以及 數(shù)據(jù)保護(hù)引擎(430),可操作地基于所述散列管理器指示什么已經(jīng)改變來創(chuàng)建所述內(nèi)容和/或所述元數(shù)據(jù)的備份副本。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其中所述散列管理器可操作地在所述中間散列等于所述先前計(jì)算的中間散列的情況下指示僅所述元數(shù)據(jù)已經(jīng)改變。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其中可操作地基于所述散列管理器指示什么已經(jīng)改變來創(chuàng)建所述內(nèi)容和/或所述元數(shù)據(jù)的備份副本的數(shù)據(jù)保護(hù)引擎包括可操作地在所述散列管理器指示僅所述元數(shù)據(jù)已經(jīng)改變的情況下避免創(chuàng)建所述備份副本的數(shù)據(jù)保護(hù)引擎。
9.根據(jù)權(quán)利要求7所述的系統(tǒng),其中可操作地基于所述散列管理器指示什么已經(jīng)改變來創(chuàng)建所述內(nèi)容管理器和/或所述元數(shù)據(jù)的備份副本的所述數(shù)據(jù)保護(hù)管理器包括可操作地在所述散列管理器指示僅所述元數(shù)據(jù)已經(jīng)改變的情況下創(chuàng)建僅所述元數(shù)據(jù)的備份副本的所述數(shù)據(jù)保護(hù)引擎。
10.一種具有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可執(zhí)行指令在執(zhí)行時(shí)執(zhí)行包括以下的動(dòng)作 接收(510)文件的數(shù)據(jù)已經(jīng)改變的指示,所述文件包括嵌入其中的內(nèi)容和元數(shù)據(jù);計(jì)算(515)所述文件的頭部分的頭部散列、所述文件的尾部分的尾部散列和所述文件的內(nèi)容部分的內(nèi)容散列中的一個(gè)或者多個(gè); 如果所述頭部散列不等同于所述文件的先前計(jì)算的頭部散列或者如果所述尾部散列不等同于所述文件的先前計(jì)算的尾部散列,則比較(520)所述內(nèi)容散列與所述文件的先前 計(jì)算的內(nèi)容散列;并且 如果所述內(nèi)容散列不等同于所述先前計(jì)算的內(nèi)容散列,則創(chuàng)建(525)至少所述文件的所述內(nèi)容的備份副本。
全文摘要
這里描述的主題內(nèi)容的方面涉及對可以包括內(nèi)容和嵌入的元數(shù)據(jù)這二者的文件的數(shù)據(jù)保護(hù)。在各方面中,接收文件已經(jīng)改變的指示。如果內(nèi)容已經(jīng)改變,則可以備份整個(gè)文件或者僅備份內(nèi)容。如果僅元數(shù)據(jù)已經(jīng)改變,則根據(jù)實(shí)施方式可以備份或者可以不備份元數(shù)據(jù)。替代解析文件以確定文件內(nèi)的元數(shù)據(jù)的確切大小和定位,可以將文件劃分成頭部分、中間部分和尾部分這三個(gè)部分。這些部分的散列然后可以用來確定文件的元數(shù)據(jù)和/或內(nèi)容是否已經(jīng)改變。
文檔編號G06F21/24GK102737205SQ20111039498
公開日2012年10月17日 申請日期2011年12月2日 優(yōu)先權(quán)日2010年12月2日
發(fā)明者A.A.多施, G.B.利亞霍維特斯基 申請人:微軟公司