基于分離存儲(chǔ)的文件信息存儲(chǔ)方法和文件信息讀寫方法
【專利摘要】本發(fā)明提供一種基于分離存儲(chǔ)的文件信息存儲(chǔ)方法和文件信息存儲(chǔ)方法,所述文件信息存儲(chǔ)方法包括以下步驟:檢測(cè)記錄步驟,檢測(cè)文件中是否存在元數(shù)據(jù)存放地址的記錄,否則跳至新建記錄步驟,是則在記錄有效時(shí)訪問并讀回元數(shù)據(jù)和抽取數(shù)據(jù);更新元數(shù)據(jù)判斷步驟,判斷元數(shù)據(jù)文件中的內(nèi)容是否發(fā)生改變,是則更新元數(shù)據(jù)文件后跳轉(zhuǎn)至回填文件步驟,否則跳至回填文件步驟;回填文件步驟,回填抽取數(shù)據(jù)至文件中以恢復(fù)原文件內(nèi)容;以及,新建記錄步驟,新建一個(gè)分離存儲(chǔ)的元數(shù)據(jù)存放地址的記錄,在原文件中分出一段空間以存放該元數(shù)據(jù)存放地址,并將抽取數(shù)據(jù)與元數(shù)據(jù)一同分離存放至元數(shù)據(jù)文件。本發(fā)明將元數(shù)據(jù)分離存儲(chǔ),由文件維護(hù)自己的元數(shù)據(jù)存放記錄。
【專利說明】基于分離存儲(chǔ)的文件信息存儲(chǔ)方法和文件信息讀寫方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種文件信息存儲(chǔ)方法,尤其涉及一種基于分離存儲(chǔ)的文件信息存儲(chǔ)方法,并涉及其文件信息讀寫方法。
【背景技術(shù)】
[0002]通用文件系統(tǒng)下的文件存儲(chǔ)方法會(huì)將文件內(nèi)容與元數(shù)據(jù)存放在同一文件系統(tǒng)中。其中元數(shù)據(jù)主要分為兩大部分:文件系統(tǒng)維護(hù)的元數(shù)據(jù)以及由文件本身維護(hù)的特定文件類型的元數(shù)據(jù),文件系統(tǒng)維護(hù)的元數(shù)據(jù)(如文件大小,文件存放起始扇區(qū)號(hào)等)會(huì)與文件內(nèi)容分別存放,這一部分由文件系統(tǒng)集中管理,訪問文件時(shí),會(huì)首先訪問文件系統(tǒng)維護(hù)的元數(shù)據(jù)塊,通過這些數(shù)據(jù)塊找到文件內(nèi)容所在的扇區(qū),從而操作文件。另一部分由文件本身所維護(hù)的元數(shù)據(jù)會(huì)根據(jù)文件類型的不同,存放的內(nèi)容以及方式也都會(huì)有所不同,但通常都是嵌入到文件內(nèi)容本身,與文件作為一個(gè)整體存放在磁盤上。處理這類元數(shù)據(jù)時(shí)會(huì)由特定的應(yīng)用程序解析從而做出相應(yīng)的處理,如Pdf文件會(huì)將書簽,文本所屬語言,水平或垂直模式書寫等信息嵌入文件中,由Pdf閱讀器讀取之后進(jìn)行相應(yīng)處理。
[0003]然而隨著各種新興的技術(shù)產(chǎn)生,這種傳統(tǒng)的文件存儲(chǔ)方式已經(jīng)不能滿足特定的高級(jí)文件管理功能了,某些情況下需要在文件外部擴(kuò)展更多的元數(shù)據(jù)來描述文件。如在安全領(lǐng)域?yàn)榱藱z測(cè)文件是否被非法訪問,需要引入文件被訪問次數(shù)等記錄來達(dá)到目的,一般通過拓展元數(shù)據(jù)的方式來實(shí)現(xiàn)。
[0004]目前拓展元數(shù)據(jù)的方式主要有三種,一種是利用文件系統(tǒng)提供的接口,將擴(kuò)展的元數(shù)據(jù)交給文件系統(tǒng)管理,這種方法的缺點(diǎn)是對(duì)擴(kuò)展的元數(shù)據(jù)大小有明確限制,只能處理少量的數(shù)據(jù),在元數(shù)據(jù)量較大的情況下無法使用。第二種方式是將擴(kuò)展的元數(shù)據(jù)存到指定的磁盤空間(如數(shù)據(jù)庫),同時(shí)建立一個(gè)文件與相應(yīng)擴(kuò)展元數(shù)據(jù)的對(duì)應(yīng)關(guān)系,由一種數(shù)據(jù)結(jié)構(gòu)記錄來維護(hù)這種對(duì)應(yīng)關(guān)系,此方式的缺點(diǎn)是處理不夠靈活,需要維護(hù)文件對(duì)應(yīng)關(guān)系,并且在處理大量文件時(shí),對(duì)應(yīng)記錄的查找會(huì)浪費(fèi)大量時(shí)間。第三種方式是寫在文件本身,同時(shí)修改文件的處理邏輯,比如某些透明加密軟件需要將文件擴(kuò)大以容納額外加密信息,然后通過修改文件系統(tǒng)調(diào)用以隱藏該部分額外占用的空間。該方法需要對(duì)不同文件系統(tǒng)進(jìn)行針對(duì)性修改,而且對(duì)于非開放的文件系統(tǒng)容易出錯(cuò)。
【發(fā)明內(nèi)容】
[0005]本發(fā)明所要解決的技術(shù)問題是需要針對(duì)以上問題,本發(fā)明提出一種將元數(shù)據(jù)分離存儲(chǔ),由文件維護(hù)自己的元數(shù)據(jù)存放記錄的基于分離存儲(chǔ)的文件信息存儲(chǔ)方法,該文件信息存儲(chǔ)方法不需要修改文件系統(tǒng)的行為和數(shù)據(jù)結(jié)構(gòu),從而達(dá)到透明的管理以及使用元數(shù)據(jù)的作用,并進(jìn)一步提出相應(yīng)的基于分離存儲(chǔ)的文件讀寫方法。
[0006]對(duì)此,本發(fā)明提供一種基于分離存儲(chǔ)的文件信息存儲(chǔ)方法,包括以下步驟:
檢測(cè)記錄步驟,在打開文件時(shí),首先檢測(cè)該文件中是否存在元數(shù)據(jù)存放地址的記錄,如果不存在則直接跳轉(zhuǎn)至新建記錄步驟;如果存在則首先判斷其是否是有效的記錄,當(dāng)記錄有效時(shí)則根據(jù)記錄訪問并讀回元數(shù)據(jù)和抽取數(shù)據(jù);
更新元數(shù)據(jù)判斷步驟,判斷元數(shù)據(jù)文件中的內(nèi)容是否發(fā)生改變,當(dāng)訪問操作涉及抽取數(shù)據(jù)的內(nèi)容改變時(shí),則更新元數(shù)據(jù)文件中備份的抽取數(shù)據(jù)后跳轉(zhuǎn)至回填文件步驟;當(dāng)訪問操作涉及元數(shù)據(jù)的內(nèi)容改變時(shí),則更新元數(shù)據(jù)文件中備份的元數(shù)據(jù)后跳轉(zhuǎn)至回填文件步驟;當(dāng)元數(shù)據(jù)文件中的內(nèi)容沒有發(fā)生改變時(shí),則直接跳轉(zhuǎn)至回填文件步驟;
回填文件步驟,回填抽取數(shù)據(jù)至文件中以恢復(fù)原文件內(nèi)容,然后訪問原文件;
以及,新建記錄步驟,新建一個(gè)分離存儲(chǔ)的元數(shù)據(jù)存放地址的記錄,在原文件中分出一段空間以存放該記錄的元數(shù)據(jù)存放地址的信息,所述一段空間為抽離區(qū),并將被抽取的抽取數(shù)據(jù)與元數(shù)據(jù)一同分離存放至元數(shù)據(jù)文件中,然后訪問原文件;
其中,所述原文件的抽離區(qū)用于存放元數(shù)據(jù)存放地址的信息;所述抽離區(qū)原本的原文件數(shù)據(jù)被抽取出來,得到抽取數(shù)據(jù);所述抽取數(shù)據(jù)與元數(shù)據(jù)一起存放在元數(shù)據(jù)文件中。
[0007]本發(fā)明在原文件中的任意位置騰出一段空間作為抽離區(qū),比如說在原文件開始的部分騰出一個(gè)抽離區(qū),該抽離區(qū)用來記錄元數(shù)據(jù)存放地址的信息,從而能夠找到對(duì)應(yīng)的元數(shù)據(jù)記錄;同時(shí)為了做到不改變?cè)募膬?nèi)容,本發(fā)明將原文件騰出的抽離區(qū)中的數(shù)據(jù)部分抽取出來,作為元數(shù)據(jù)的一部分存放于元數(shù)據(jù)文件中,以確保原文件的完整性;對(duì)文件進(jìn)行操作時(shí),通過讀取文件中的元數(shù)據(jù)存放地址記錄,找到元數(shù)據(jù)及抽取數(shù)據(jù),將抽取數(shù)據(jù)填充到原文件的抽離區(qū)以獲得完整文件內(nèi)容,同時(shí)還能夠?qū)Λ@得的元數(shù)據(jù)進(jìn)行操作。
[0008]本發(fā)明解決了現(xiàn)有技術(shù)中需要拓展元數(shù)據(jù)的情況下,元數(shù)據(jù)與文件關(guān)系記錄處理所造成的系統(tǒng)開銷過大和效率低下等問題,同時(shí),本發(fā)明還能夠做到不改變文件系統(tǒng)的現(xiàn)有行為和數(shù)據(jù)結(jié)構(gòu),文件操作對(duì)文件系統(tǒng)透明的效果,從而普遍適用于各類文件系統(tǒng)。
[0009]本發(fā)明的進(jìn)一步改進(jìn)在于,所述元數(shù)據(jù)存放地址的記錄中還包含附加信息,在檢測(cè)記錄步驟中,當(dāng)記錄有效時(shí),需要先提取并處理附加信息以獲得完整的地址信息,然后再根據(jù)記錄訪問并讀回元數(shù)據(jù)和抽取數(shù)據(jù),所述附加信息包括權(quán)限、身份認(rèn)證、編解碼算法和有效性驗(yàn)證中至少一種。
[0010]本發(fā)明的進(jìn)一步改進(jìn)在于,當(dāng)所述元數(shù)據(jù)存放地址的記錄以獨(dú)立文件的形式存放于文件系統(tǒng)中,則該元數(shù)據(jù)存放地址以文件的絕對(duì)路徑的形式來實(shí)現(xiàn);當(dāng)所述元數(shù)據(jù)存放地址的記錄存放在數(shù)據(jù)庫中,則該元數(shù)據(jù)存放地址以數(shù)據(jù)庫的記錄鍵值來實(shí)現(xiàn);當(dāng)所述元數(shù)據(jù)存放地址的記錄存放在網(wǎng)上或云端時(shí),則該元數(shù)據(jù)存放地址以一個(gè)URL或者自定義的尋址結(jié)構(gòu)來實(shí)現(xiàn)。
[0011]本發(fā)明的進(jìn)一步改進(jìn)在于,所述元數(shù)據(jù)用于記錄訪問信息、記錄保密信息和原文件本身的部分?jǐn)?shù)據(jù)中至少一種。
[0012]本發(fā)明的進(jìn)一步改進(jìn)在于,所述元數(shù)據(jù)用于保存訪問次數(shù)、上一次訪問對(duì)象以及文件的data內(nèi)容,所述文件的data內(nèi)容隨機(jī)拆分成隨機(jī)大小的數(shù)據(jù)塊,并將拆分位置P和拆分長(zhǎng)度L存入元數(shù)據(jù)的信息記錄中。
[0013]本發(fā)明的進(jìn)一步改進(jìn)在于,在原文件中,將拆分位置數(shù)據(jù)清零或用垃圾數(shù)據(jù)填充,并將包括元數(shù)據(jù)文件路徑和文件訪問次數(shù)的安全信息存入至原文件的起始位置,將剩余的有效數(shù)據(jù)進(jìn)行加密拆分。
[0014]本發(fā)明的元數(shù)據(jù)存放地址記錄的結(jié)構(gòu)和形式取決于該元數(shù)據(jù)記錄的實(shí)際存放方式,當(dāng)元數(shù)據(jù)存放地址的記錄以獨(dú)立文件的形式存放于文件系統(tǒng)中的話,那么該元數(shù)據(jù)存放地址可以是文件的絕對(duì)路徑的形式;如果是存放在數(shù)據(jù)庫中的話,該元數(shù)據(jù)存放地址可以是數(shù)據(jù)庫的記錄鍵值;如果是存放在網(wǎng)上或云端的話,該元數(shù)據(jù)存放地址可以是一個(gè)URL或者是自定義的某種尋址結(jié)構(gòu)。除了元數(shù)據(jù)存放地址本身外,該元數(shù)據(jù)存放地址的記錄還可以包含其他和讀取元數(shù)據(jù)記錄相關(guān)的信息,比如權(quán)限、身份認(rèn)證、編解碼算法和有效性驗(yàn)證等等。由于該元數(shù)據(jù)存放地址的記錄所占據(jù)的原文件數(shù)據(jù)內(nèi)容會(huì)被抽取出來并同元數(shù)據(jù)一同存放,因此原文件中的存放地址記錄的大小和內(nèi)容可以非常靈活,能夠很好地適應(yīng)各種情況。
[0015]另外具體元數(shù)據(jù)的內(nèi)容也非常靈活,可以用于記錄訪問信息、記錄加密信息以及文件本身的部分?jǐn)?shù)據(jù)。該分離存儲(chǔ)的元數(shù)據(jù)文件的空間可以根據(jù)需求用來存放對(duì)原文件元數(shù)據(jù)記錄的任意擴(kuò)充,而無需改變?cè)募拇娣?、訪問和處理方式。
[0016]在一種基于文件拆分的透明加密系統(tǒng)中使用了本發(fā)明,元數(shù)據(jù)文件中不僅保存了如訪問次數(shù)和上一次訪問對(duì)象等描述文件的信息,還將文件的data內(nèi)容隨機(jī)拆分成隨機(jī)大小的塊,并記錄拆分位置P和拆分長(zhǎng)度L存入分離存儲(chǔ)的元數(shù)據(jù)記錄中。
[0017]分離存儲(chǔ)的元數(shù)據(jù)記錄以文件的形式存放在文件系統(tǒng)中,因此原文件中的元數(shù)據(jù)存放地址記錄就是該元數(shù)據(jù)文件的路徑及相關(guān)訪問信息,具體到這種實(shí)現(xiàn)方式下,原文件的更名和移動(dòng)等操作就不會(huì)影響到元數(shù)據(jù)存放地址信息;當(dāng)文件發(fā)生其他變化時(shí),需要根據(jù)元數(shù)據(jù)描述的內(nèi)容,決定是否需要更新元數(shù)據(jù)。
[0018]原文件中,拆分位置數(shù)據(jù)清零或用垃圾數(shù)據(jù)填充,并將元數(shù)據(jù)文件路徑和文件訪問次數(shù)等安全信息存入原文件起始位置或其他索引位置,將剩余有效數(shù)據(jù)進(jìn)行加密拆分;本發(fā)明通過這種文件信息存儲(chǔ)方法能夠達(dá)到拆分加密的效果。所述索引位置為文件索引的所在位置,用于實(shí)現(xiàn)元數(shù)據(jù)存儲(chǔ)地址的索引。
[0019]本發(fā)明還提供一種基于分離存儲(chǔ)的文件信息讀寫方法,采用上述的基于分離存儲(chǔ)的文件信息存儲(chǔ)方法進(jìn)行文件存儲(chǔ),所述文件信息讀寫方法包括以下讀取步驟:
判斷記錄步驟,當(dāng)文件打開時(shí),讀取文件中的元數(shù)據(jù)存放地址的記錄,判斷記錄是否有效,如果有效則跳轉(zhuǎn)至安全監(jiān)測(cè)判斷步驟,如果無效則新建一個(gè)記錄并跳轉(zhuǎn)至信息保存步驟;
安全監(jiān)測(cè)判斷步驟,判斷該文件是否進(jìn)行了加密拆分,若否則直接跳轉(zhuǎn)至信息保存步驟;若是,則訪問文件索引中的文件訪問計(jì)數(shù)器與元數(shù)據(jù)文件中的元數(shù)據(jù)文件訪問計(jì)數(shù)器,比較兩者是否相同,如果兩者不同則說明文件被非法訪問過,此時(shí)進(jìn)行文件安全處理,并返回打開文件失敗的信息;如果兩者相同,則跳轉(zhuǎn)至信息保存步驟;
以及,信息保存步驟,在內(nèi)存中保存記錄的相應(yīng)信息,并打開原文件。
[0020]本發(fā)明的進(jìn)一步改進(jìn)在于,所述元數(shù)據(jù)文件路徑和元數(shù)據(jù)文件訪問次數(shù)的信息存放于內(nèi)存中維護(hù)的一個(gè)哈希表里。
[0021]本發(fā)明的進(jìn)一步改進(jìn)在于,所述文件信息讀寫方法包括以下寫入步驟:
讀取步驟,開始寫文件操作,讀取內(nèi)存中相應(yīng)的記錄,判斷是否存在記錄,若否則直接實(shí)現(xiàn)寫原文件的操作,若是則跳裝至更新判斷步驟;
更新判斷步驟,判斷是否需要更新記錄,若是則更新記錄信息后跳裝至寫入抽離區(qū)判斷步驟,若否則直接跳裝至寫入抽離區(qū)判斷步驟;
寫入抽離區(qū)判斷步驟,判斷是否需要將更新記錄寫入原文件的抽離區(qū),若是則修改元數(shù)據(jù)文件后跳轉(zhuǎn)至拆分步驟,若否則直接跳轉(zhuǎn)至拆分步驟;
以及,拆分步驟,拆分要寫入的數(shù)據(jù),并將拆分部分寫入元數(shù)據(jù)文件,實(shí)現(xiàn)寫原文件的操作。
[0022]本發(fā)明的進(jìn)一步改進(jìn)在于,所述元數(shù)據(jù)文件路徑和元數(shù)據(jù)文件訪問次數(shù)的信息存放于內(nèi)存中維護(hù)的一個(gè)哈希表里,所述下寫入步驟中,在寫文件時(shí),首先判斷哈希表中是否存在該文件的記錄,如果不存在,則直接放棄處理;如果存在相應(yīng)記錄,則首先判斷該文件是否是初次被寫入,如果是則需要將哈希表中的元數(shù)據(jù)路徑和元數(shù)據(jù)文件訪問次數(shù)所組成的文件索引寫入至原文件的抽離區(qū),并將原來需要寫入該抽離區(qū)的原文件數(shù)據(jù)寫入至元數(shù)據(jù)文件中。
[0023]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于,通過分離存儲(chǔ)的方式擴(kuò)展文件的元數(shù)據(jù)存儲(chǔ)空間,通過替換的方式將分離存儲(chǔ)的元數(shù)據(jù)存放地址的記錄信息存放在原文件中,并將其占用的原文件空間中的數(shù)據(jù)抽取出來作為分離存儲(chǔ)的元數(shù)據(jù)文件的一部分進(jìn)行備份,從而可以完全恢復(fù)出原文件所有信息;而且由于本發(fā)明對(duì)原文件來講僅僅涉及到其部分內(nèi)容的替換改變,與底層文件系統(tǒng)無關(guān),文件的長(zhǎng)度大小、扇區(qū)分配、數(shù)據(jù)結(jié)構(gòu)和訪問管理等等都不受影響,因此適應(yīng)性非常廣。
[0024]另外,由于分離存儲(chǔ)的元數(shù)據(jù)與原文件分開存放,元數(shù)據(jù)存放地址的記錄可以存放在不同的介質(zhì)或者服務(wù)器上,使得可以將元數(shù)據(jù)的訪問同原文件的訪問分別控制起來,擴(kuò)大了元數(shù)據(jù)的使用范圍,比如可以用于以安全為目的的文件的透明拆分加密。
[0025]本發(fā)明將元數(shù)據(jù)存放地址的記錄等信息直接存放在原文件中,無需進(jìn)行對(duì)應(yīng)關(guān)系的集中維護(hù),一方面可以降低分離存儲(chǔ)關(guān)系的維護(hù)成本,另一方面也避免了單點(diǎn)失效的問題,而且原文件進(jìn)行移動(dòng)和改名等操作也不會(huì)導(dǎo)致記錄的更新。與本發(fā)明不同的是,現(xiàn)有技術(shù)中用數(shù)據(jù)庫集中維護(hù)的話,則原文件的移動(dòng)和改名很可能就需要修改映射記錄。
[0026]本發(fā)明在極小的操作代價(jià)下實(shí)現(xiàn)了文件的元數(shù)據(jù)的任意擴(kuò)充,擴(kuò)充出來的元數(shù)據(jù)空間可以用于任何目的,沒有空間和結(jié)構(gòu)上的限制,系統(tǒng)額外開銷小;同時(shí),由于沒有修改原文件中由操作系統(tǒng)以及特定文件類型維護(hù)的已有元數(shù)據(jù),擴(kuò)充了分離元數(shù)據(jù)的文件與標(biāo)準(zhǔn)文件對(duì)于文件系統(tǒng)來說是完全一樣的,做到了與任意文件系統(tǒng)的兼容。
[0027]分離存儲(chǔ)的元數(shù)據(jù)文件可以批量存放在本地、服務(wù)端或者其他介質(zhì),可以提供空間給進(jìn)行更高級(jí)的應(yīng)用級(jí)或系統(tǒng)級(jí)的安全管理,或者是其他需要以文件為粒度的額外空間的其他任何目的。
【專利附圖】
【附圖說明】
[0028]圖1是本發(fā)明一種實(shí)施例的元數(shù)據(jù)存放示意圖;
圖2是本發(fā)明一種實(shí)施例的工作流程示意圖;
圖3是本發(fā)明另一種實(shí)施例的工作流程示意圖;
圖4是本發(fā)明再一種實(shí)施例的工作流程示意圖。
【具體實(shí)施方式】
[0029]下面結(jié)合附圖,對(duì)本發(fā)明的較優(yōu)的實(shí)施例作進(jìn)一步的詳細(xì)說明。
[0030]實(shí)施例1: 如圖1和圖2所示,本例提供一種基于分離存儲(chǔ)的文件信息存儲(chǔ)方法,包括以下步驟:檢測(cè)記錄步驟,在打開文件時(shí),首先檢測(cè)該文件中是否存在元數(shù)據(jù)存放地址的記錄,如果不存在則直接跳轉(zhuǎn)至新建記錄步驟;如果存在則首先判斷其是否是有效的記錄,當(dāng)記錄有效時(shí)則根據(jù)記錄訪問并讀回元數(shù)據(jù)和抽取數(shù)據(jù);
更新元數(shù)據(jù)判斷步驟,判斷元數(shù)據(jù)文件中的內(nèi)容是否發(fā)生改變,當(dāng)訪問操作涉及抽取數(shù)據(jù)的內(nèi)容改變時(shí),則更新元數(shù)據(jù)文件中備份的抽取數(shù)據(jù)后跳轉(zhuǎn)至回填文件步驟;當(dāng)訪問操作涉及元數(shù)據(jù)的內(nèi)容改變時(shí),則更新元數(shù)據(jù)文件中備份的元數(shù)據(jù)后跳轉(zhuǎn)至回填文件步驟;當(dāng)元數(shù)據(jù)文件中的內(nèi)容沒有發(fā)生改變時(shí),則直接跳轉(zhuǎn)至回填文件步驟;
回填文件步驟,回填抽取數(shù)據(jù)至文件中以恢復(fù)原文件內(nèi)容,然后訪問原文件;
以及,新建記錄步驟,新建一個(gè)分離存儲(chǔ)的元數(shù)據(jù)存放地址的記錄,在原文件中分出一段空間以存放該記錄的元數(shù)據(jù)存放地址的信息,所述一段空間為抽離區(qū),并將被抽取的抽取數(shù)據(jù)與元數(shù)據(jù)一同分離存放至元數(shù)據(jù)文件中,然后訪問原文件;
其中,所述原文件的抽離區(qū)用于存放元數(shù)據(jù)存放地址的信息;所述抽離區(qū)原本的原文件數(shù)據(jù)被抽取出來,得到抽取數(shù)據(jù);所述抽取數(shù)據(jù)與元數(shù)據(jù)一起存放在元數(shù)據(jù)文件中。
[0031]如圖1所示,本例在原文件中的任意位置騰出一段空間作為抽離區(qū),比如在原文件開始的部分騰出一個(gè)抽離區(qū),該抽離區(qū)用來記錄元數(shù)據(jù)存放地址的信息,從而能夠找到對(duì)應(yīng)的元數(shù)據(jù)記錄;同時(shí)為了做到不改變?cè)募膬?nèi)容,本例將原文件騰出的抽離區(qū)中的數(shù)據(jù)部分抽取出來,作為元數(shù)據(jù)的一部分存放于元數(shù)據(jù)文件中,以確保原文件的完整性;對(duì)文件進(jìn)行操作時(shí),通過讀取文件中的元數(shù)據(jù)存放地址記錄,找到元數(shù)據(jù)及抽取數(shù)據(jù),將抽取數(shù)據(jù)填充到原文件的抽離區(qū)以獲得完整文件內(nèi)容,同時(shí)還能夠?qū)Λ@得的元數(shù)據(jù)進(jìn)行操作。
[0032]本例解決了現(xiàn)有技術(shù)中需要拓展元數(shù)據(jù)的情況下,元數(shù)據(jù)與文件關(guān)系記錄處理所造成的系統(tǒng)開銷過大和效率低下等問題,同時(shí),本例還能夠做到不改變文件系統(tǒng)的現(xiàn)有行為和數(shù)據(jù)結(jié)構(gòu),文件操作對(duì)文件系統(tǒng)透明的效果,從而普遍適用于各類文件系統(tǒng)。
[0033]現(xiàn)有技術(shù)中,提出了一種元數(shù)據(jù)屬性的混合索引方法,這種現(xiàn)有的混合索引方法依據(jù)各元數(shù)據(jù)屬性被使用頻率、創(chuàng)建時(shí)間和最近被訪問時(shí)間,將元數(shù)據(jù)屬性劃分為高頻元數(shù)據(jù)屬性和低頻元數(shù)據(jù)屬性,針對(duì)高頻和低頻元數(shù)據(jù)屬性的特性,分別使用KD-tree、B-tree樹和人工免疫算法建立索引,并給出了新型元數(shù)據(jù)管理系統(tǒng)的結(jié)構(gòu),介紹了主要模塊的功能和流程,但是這種現(xiàn)有技術(shù)在通用文件系統(tǒng)下,這種設(shè)計(jì)架構(gòu)繁瑣,開銷過大,同時(shí)當(dāng)系統(tǒng)中需要處理的文件較少時(shí),這種優(yōu)化算法顯得并不高效。
[0034]現(xiàn)有技術(shù)中還有通過多文件驅(qū)動(dòng)技術(shù)改變操作系統(tǒng)的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),使得所有文件的讀取訪問都必須按照新構(gòu)建的過程才能完成;對(duì)每一個(gè)涉密電子文檔賦予一個(gè)唯一的、不可分離的數(shù)據(jù)標(biāo)識(shí),并以不可分離的方式嵌入到電子文件中;但這種現(xiàn)有技術(shù)將拓展的元數(shù)據(jù)寫入文件本身,修改了文件的內(nèi)容,改變了文件的大小,文件在存儲(chǔ)介質(zhì)中的實(shí)際大小與系統(tǒng)記錄不一致,需要額外的監(jiān)控和轉(zhuǎn)換手段防止該不一致影響文件系統(tǒng)的正常工作;另一方面,由于將元數(shù)據(jù)嵌入文件中,導(dǎo)致元數(shù)據(jù)無法擴(kuò)展,無法集中管理元數(shù)據(jù),不能用于文件內(nèi)容安全保密等缺點(diǎn)。
[0035]本例所述元數(shù)據(jù)存放地址的記錄中還優(yōu)選包含附加信息,在檢測(cè)記錄步驟中,當(dāng)記錄有效時(shí),需要先提取并處理附加信息以獲得完整的地址信息,然后再根據(jù)記錄訪問并讀回元數(shù)據(jù)和抽取數(shù)據(jù),所述附加信息包括權(quán)限、身份認(rèn)證、編解碼算法和有效性驗(yàn)證中至少一種。
[0036]本例當(dāng)所述元數(shù)據(jù)存放地址的記錄以獨(dú)立文件的形式存放于文件系統(tǒng)中,則該元數(shù)據(jù)存放地址以文件的絕對(duì)路徑的形式來實(shí)現(xiàn);當(dāng)所述元數(shù)據(jù)存放地址的記錄存放在數(shù)據(jù)庫中,則該元數(shù)據(jù)存放地址以數(shù)據(jù)庫的記錄鍵值來實(shí)現(xiàn);當(dāng)所述元數(shù)據(jù)存放地址的記錄存放在網(wǎng)上或云端時(shí),則該元數(shù)據(jù)存放地址以一個(gè)URL或者自定義的尋址結(jié)構(gòu)來實(shí)現(xiàn)。所述元數(shù)據(jù)用于記錄訪問信息、記錄保密信息和原文件本身的部分?jǐn)?shù)據(jù)中至少一種。
[0037]本例所述元數(shù)據(jù)用于保存訪問次數(shù)、上一次訪問對(duì)象以及文件的data內(nèi)容,所述文件的data內(nèi)容隨機(jī)拆分成隨機(jī)大小的數(shù)據(jù)塊,并將拆分位置P和拆分長(zhǎng)度L存入元數(shù)據(jù)的信息記錄中。
[0038]本例在原文件中,將拆分位置數(shù)據(jù)清零或用垃圾數(shù)據(jù)填充,并將包括元數(shù)據(jù)文件路徑和文件訪問次數(shù)的安全信息存入至原文件的起始位置,將剩余的有效數(shù)據(jù)進(jìn)行加密拆分。
[0039]本例的元數(shù)據(jù)存放地址記錄的結(jié)構(gòu)和形式取決于該元數(shù)據(jù)記錄的實(shí)際存放方式,當(dāng)元數(shù)據(jù)存放地址的記錄以獨(dú)立文件的形式存放于文件系統(tǒng)中的話,那么該元數(shù)據(jù)存放地址可以是文件的絕對(duì)路徑的形式;如果是存放在數(shù)據(jù)庫中的話,該元數(shù)據(jù)存放地址可以是數(shù)據(jù)庫的記錄鍵值;如果是存放在網(wǎng)上或云端的話,該元數(shù)據(jù)存放地址可以是一個(gè)URL或者是自定義的某種尋址結(jié)構(gòu)。除了元數(shù)據(jù)存放地址本身外,該元數(shù)據(jù)存放地址的記錄還可以包含其他和讀取元數(shù)據(jù)記錄相關(guān)的信息,比如權(quán)限、身份認(rèn)證、編解碼算法和有效性驗(yàn)證等等。由于該元數(shù)據(jù)存放地址的記錄所占據(jù)的原文件數(shù)據(jù)內(nèi)容會(huì)被抽取出來并同元數(shù)據(jù)一同存放,因此原文件中的存放地址記錄的大小和內(nèi)容可以非常靈活,能夠很好地適應(yīng)各種情況。
[0040]另外具體元數(shù)據(jù)的內(nèi)容也非常靈活,可以用于記錄訪問信息、記錄加密信息以及文件本身的部分?jǐn)?shù)據(jù)。該分離存儲(chǔ)的元數(shù)據(jù)文件的空間可以根據(jù)需求用來存放對(duì)原文件元數(shù)據(jù)記錄的任意擴(kuò)充,而無需改變?cè)募拇娣拧⒃L問和處理方式。
[0041]更為具體的,本例的有益效果在于,通過分離存儲(chǔ)的方式擴(kuò)展文件的元數(shù)據(jù)存儲(chǔ)空間,通過替換的方式將分離存儲(chǔ)的元數(shù)據(jù)存放地址的記錄信息存放在原文件中,并將其占用的原文件空間中的數(shù)據(jù)抽取出來作為分離存儲(chǔ)的元數(shù)據(jù)文件的一部分進(jìn)行備份,從而可以完全恢復(fù)出原文件所有信息;而且由于本例對(duì)原文件來講僅僅涉及到其部分內(nèi)容的替換改變,與底層文件系統(tǒng)無關(guān),文件的長(zhǎng)度大小、扇區(qū)分配、數(shù)據(jù)結(jié)構(gòu)和訪問管理等等都不受影響,因此適應(yīng)性非常廣。
[0042]另外,由于分離存儲(chǔ)的元數(shù)據(jù)與原文件分開存放,元數(shù)據(jù)存放地址的記錄可以存放在不同的介質(zhì)或者服務(wù)器上,使得可以將元數(shù)據(jù)的訪問同原文件的訪問分別控制起來,擴(kuò)大了元數(shù)據(jù)的使用范圍,比如可以用于以安全為目的的文件的透明拆分加密。
[0043]本例將元數(shù)據(jù)存放地址的記錄等信息直接存放在原文件中,無需進(jìn)行對(duì)應(yīng)關(guān)系的集中維護(hù),一方面可以降低分離存儲(chǔ)關(guān)系的維護(hù)成本,另一方面也避免了單點(diǎn)失效的問題,而且原文件進(jìn)行移動(dòng)和改名等操作也不會(huì)導(dǎo)致記錄的更新。與本例不同的是,現(xiàn)有技術(shù)中用數(shù)據(jù)庫集中維護(hù)的話,則原文件的移動(dòng)和改名很可能就需要修改映射記錄。
[0044]本例在極小的操作代價(jià)下實(shí)現(xiàn)了文件的元數(shù)據(jù)的任意擴(kuò)充,擴(kuò)充出來的元數(shù)據(jù)空間可以用于任何目的,沒有空間和結(jié)構(gòu)上的限制,系統(tǒng)額外開銷??;同時(shí),由于沒有修改原文件中由操作系統(tǒng)以及特定文件類型維護(hù)的已有元數(shù)據(jù),擴(kuò)充了分離元數(shù)據(jù)的文件與標(biāo)準(zhǔn)文件對(duì)于文件系統(tǒng)來說是完全一樣的,做到了與任意文件系統(tǒng)的兼容。
[0045]分離存儲(chǔ)的元數(shù)據(jù)文件可以批量存放在本地、服務(wù)端或者其他介質(zhì),可以提供空間給進(jìn)行更高級(jí)的應(yīng)用級(jí)或系統(tǒng)級(jí)的安全管理,或者是其他需要以文件為粒度的額外空間的其他任何目的。
[0046]實(shí)施例2:
如圖3所示,本例還提供一種基于分離存儲(chǔ)的文件信息讀寫方法,本例采用實(shí)施例1所述的基于分離存儲(chǔ)的文件信息存儲(chǔ)方法進(jìn)行文件存儲(chǔ),所述文件信息讀寫方法包括以下讀取步驟:
判斷記錄步驟,當(dāng)文件打開時(shí),讀取文件中的元數(shù)據(jù)存放地址的記錄,判斷記錄是否有效,如果有效則跳轉(zhuǎn)至安全監(jiān)測(cè)判斷步驟,如果無效則新建一個(gè)記錄并跳轉(zhuǎn)至信息保存步驟;
安全監(jiān)測(cè)判斷步驟,判斷該文件是否進(jìn)行了加密拆分,若否則直接跳轉(zhuǎn)至信息保存步驟;若是,則訪問文件索引中的文件訪問計(jì)數(shù)器與元數(shù)據(jù)文件中的元數(shù)據(jù)文件訪問計(jì)數(shù)器,比較兩者是否相同,如果兩者不同則說明文件被非法訪問過,此時(shí)進(jìn)行文件安全處理,并返回打開文件失敗的信息;如果兩者相同,則跳轉(zhuǎn)至信息保存步驟;
以及,信息保存步驟,在內(nèi)存中保存記錄的相應(yīng)信息,并打開原文件。
[0047]本例所述元數(shù)據(jù)文件路徑和元數(shù)據(jù)文件訪問次數(shù)的信息存放于內(nèi)存中維護(hù)的一個(gè)哈希表里。
[0048]在基于文件拆分的透明加密系統(tǒng)中使用了實(shí)施例1或?qū)嵤├?所述的文件信息存儲(chǔ)方法,元數(shù)據(jù)文件中不僅保存了如訪問次數(shù),上一次訪問對(duì)象等描述文件的信息,還將文件的data內(nèi)容隨機(jī)拆分成隨機(jī)大小的塊,并記錄拆分位置P和拆分長(zhǎng)度L,存入分離存儲(chǔ)的元數(shù)據(jù)記錄中。
[0049]分離存儲(chǔ)的元數(shù)據(jù)記錄以文件的形式存放在文件系統(tǒng)中,因此原文件中的元數(shù)據(jù)存放地址的記錄就是該元數(shù)據(jù)文件的路徑及相關(guān)訪問信息。具體到這種實(shí)現(xiàn)方式下,原文件的更名和移動(dòng)等操作就不會(huì)影響到元數(shù)據(jù)存放地址信息。當(dāng)文件發(fā)生其他變化時(shí),需要根據(jù)元數(shù)據(jù)描述的內(nèi)容,決定是否需要更新元數(shù)據(jù)。
[0050]原文件中,拆分位置數(shù)據(jù)清零或用垃圾數(shù)據(jù)填充,并將元數(shù)據(jù)文件路徑,文件訪問次數(shù)等安全信息存入原文件起始位置,將剩余有效數(shù)據(jù)進(jìn)行加密拆分,本發(fā)明可以通過這種文件存放方式,達(dá)到拆分加密的效果。
[0051]實(shí)施例3:
如圖4所述,在實(shí)施例2的基礎(chǔ)上,本例所述文件信息讀寫方法包括以下寫入步驟:
讀取步驟,開始寫文件操作,讀取內(nèi)存中相應(yīng)的記錄,判斷是否存在記錄,若否則直接實(shí)現(xiàn)寫原文件的操作,若是則跳裝至更新判斷步驟;
更新判斷步驟,判斷是否需要更新記錄,若是則更新記錄信息后跳裝至寫入抽離區(qū)判斷步驟,若否則直接跳裝至寫入抽離區(qū)判斷步驟;
寫入抽離區(qū)判斷步驟,判斷是否需要將更新記錄寫入原文件的抽離區(qū),若是則修改元數(shù)據(jù)文件后跳轉(zhuǎn)至拆分步驟,若否則直接跳轉(zhuǎn)至拆分步驟;
以及,拆分步驟,拆分要寫入的數(shù)據(jù),并將拆分部分寫入元數(shù)據(jù)文件,實(shí)現(xiàn)寫原文件的操作。
[0052]本例所述下寫入步驟中,在寫文件時(shí),首先判斷哈希表中是否存在該文件的記錄,如果不存在,則直接放棄處理;如果存在相應(yīng)記錄,則首先判斷該文件是否是初次被寫入,如果是則需要將哈希表中的元數(shù)據(jù)路徑和元數(shù)據(jù)文件訪問次數(shù)所組成的文件索引寫入至原文件的抽離區(qū),并將原來需要寫入該抽離區(qū)的原文件數(shù)據(jù)寫入至元數(shù)據(jù)文件中。
[0053]以上內(nèi)容是結(jié)合具體的優(yōu)選實(shí)施方式對(duì)本發(fā)明所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說明。對(duì)于本發(fā)明所屬【技術(shù)領(lǐng)域】的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡(jiǎn)單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種基于分離存儲(chǔ)的文件信息存儲(chǔ)方法,其特征在于,包括以下步驟: 檢測(cè)記錄步驟,在打開文件時(shí),首先檢測(cè)該文件中是否存在元數(shù)據(jù)存放地址的記錄,如果不存在則直接跳轉(zhuǎn)至新建記錄步驟;如果存在則首先判斷其是否是有效的記錄,當(dāng)記錄有效時(shí)則根據(jù)記錄訪問并讀回元數(shù)據(jù)和抽取數(shù)據(jù); 更新元數(shù)據(jù)判斷步驟,判斷元數(shù)據(jù)文件中的內(nèi)容是否發(fā)生改變,當(dāng)訪問操作涉及抽取數(shù)據(jù)的內(nèi)容改變時(shí),則更新元數(shù)據(jù)文件中備份的抽取數(shù)據(jù)后跳轉(zhuǎn)至回填文件步驟;當(dāng)訪問操作涉及元數(shù)據(jù)的內(nèi)容改變時(shí),則更新元數(shù)據(jù)文件中備份的元數(shù)據(jù)后跳轉(zhuǎn)至回填文件步驟;當(dāng)元數(shù)據(jù)文件中的內(nèi)容沒有發(fā)生改變時(shí),則直接跳轉(zhuǎn)至回填文件步驟; 回填文件步驟,回填抽取數(shù)據(jù)至文件中以恢復(fù)原文件內(nèi)容,然后訪問原文件; 以及,新建記錄步驟,新建一個(gè)分離存儲(chǔ)的元數(shù)據(jù)存放地址的記錄,在原文件中分出一段空間以存放該記錄的元數(shù)據(jù)存放地址的信息,所述一段空間為抽離區(qū),并將被抽取的抽取數(shù)據(jù)與元數(shù)據(jù)一同分離存放至元數(shù)據(jù)文件中,然后訪問原文件; 其中,所述原文件的抽離區(qū)用于存放元數(shù)據(jù)存放地址的信息;所述抽離區(qū)原本的原文件數(shù)據(jù)被抽取出來,得到抽取數(shù)據(jù);所述抽取數(shù)據(jù)與元數(shù)據(jù)一起存放在元數(shù)據(jù)文件中。
2.根據(jù)權(quán)利要求1所述的基于分離存儲(chǔ)的文件信息存儲(chǔ)方法,其特征在于,所述元數(shù)據(jù)存放地址的記錄中還包含附加信息,在檢測(cè)記錄步驟中,當(dāng)記錄有效時(shí),需要先提取并處理附加信息以獲得完整的地址信息,然后再根據(jù)記錄訪問并讀回元數(shù)據(jù)和抽取數(shù)據(jù),所述附加信息包括權(quán)限、身份認(rèn)證、編解碼算法和有效性驗(yàn)證中至少一種。
3.根據(jù)權(quán)利要求1所述的基于分離存儲(chǔ)的文件信息存儲(chǔ)方法,其特征在于,當(dāng)所述元數(shù)據(jù)存放地址的記錄以獨(dú)立文件的形式存放于文件系統(tǒng)中,則該元數(shù)據(jù)存放地址以文件的絕對(duì)路徑的形式來實(shí)現(xiàn);當(dāng)所述元數(shù)據(jù)存放地址的記錄存放在數(shù)據(jù)庫中,則該元數(shù)據(jù)存放地址以數(shù)據(jù)庫的記錄鍵值來實(shí)現(xiàn);當(dāng)所述元數(shù)據(jù)存放地址的記錄存放在網(wǎng)上或云端時(shí),則該元數(shù)據(jù)存放地址以一個(gè)URL或者自定義的尋址結(jié)構(gòu)來實(shí)現(xiàn)。
4.根據(jù)權(quán)利要求1至3任意一項(xiàng)所述的基于分離存儲(chǔ)的文件信息存儲(chǔ)方法,其特征在于,所述元數(shù)據(jù)用于記錄訪問信息、記錄保密信息和原文件本身的部分?jǐn)?shù)據(jù)中至少一種。
5.根據(jù)權(quán)利要求1至3任意一項(xiàng)所述的基于分離存儲(chǔ)的文件信息存儲(chǔ)方法,其特征在于,所述元數(shù)據(jù)用于保存訪問次數(shù)、上一次訪問對(duì)象以及文件的data內(nèi)容,所述文件的data內(nèi)容隨機(jī)拆分成隨機(jī)大小的數(shù)據(jù)塊,并將拆分位置P和拆分長(zhǎng)度L存入元數(shù)據(jù)的信息記錄中。
6.根據(jù)權(quán)利要求5所述的基于分離存儲(chǔ)的文件信息存儲(chǔ)方法,其特征在于,在原文件中,將拆分位置數(shù)據(jù)清零或用垃圾數(shù)據(jù)填充,并將包括元數(shù)據(jù)文件路徑和文件訪問次數(shù)的安全信息存入至原文件的起始位置,將剩余的有效數(shù)據(jù)進(jìn)行加密拆分。
7.一種基于分離存儲(chǔ)的文件信息讀寫方法,其特征在于,米用如權(quán)利要求1至6任意一項(xiàng)所述的基于分離存儲(chǔ)的文件信息存儲(chǔ)方法進(jìn)行文件存儲(chǔ),所述文件信息讀寫方法包括以下讀取步驟: 判斷記錄步驟,當(dāng)文件打開時(shí),讀取文件中的元數(shù)據(jù)存放地址的記錄,判斷記錄是否有效,如果有效則跳轉(zhuǎn)至安全監(jiān)測(cè)判斷步驟,如果無效則新建一個(gè)記錄并跳轉(zhuǎn)至信息保存步驟; 安全監(jiān)測(cè)判斷步驟,判斷該文件是否進(jìn)行了加密拆分,若否則直接跳轉(zhuǎn)至信息保存步驟;若是,則訪問文件索引中的文件訪問計(jì)數(shù)器與元數(shù)據(jù)文件中的元數(shù)據(jù)文件訪問計(jì)數(shù)器,比較兩者是否相同,如果兩者不同則說明文件被非法訪問過,此時(shí)進(jìn)行文件安全處理,并返回打開文件失敗的信息;如果兩者相同,則跳轉(zhuǎn)至信息保存步驟; 以及,信息保存步驟,在內(nèi)存中保存記錄的相應(yīng)信息,并打開原文件。
8.根據(jù)權(quán)利要求7所述的基于分離存儲(chǔ)的文件信息讀寫方法,其特征在于,所述元數(shù)據(jù)文件路徑和元數(shù)據(jù)文件訪問次數(shù)的信息存放于內(nèi)存中維護(hù)的一個(gè)哈希表里。
9.根據(jù)權(quán)利要求8所述的基于分離存儲(chǔ)的文件信息讀寫方法,其特征在于,所述文件信息讀寫方法包括以下寫入步驟: 讀取步驟,開始寫文件操作,讀取內(nèi)存中相應(yīng)的記錄,判斷是否存在記錄,若否則直接實(shí)現(xiàn)寫原文件的操作,若是則跳裝至更新判斷步驟; 更新判斷步驟,判斷是否需要更新記錄,若是則更新記錄信息后跳裝至寫入抽離區(qū)判斷步驟,若否則直接跳裝至寫入抽離區(qū)判斷步驟; 寫入抽離區(qū)判斷步驟,判斷是否需要將更新記錄寫入原文件的抽離區(qū),若是則修改元數(shù)據(jù)文件后跳轉(zhuǎn)至拆分步驟,若否則直接跳轉(zhuǎn)至拆分步驟; 以及,拆分步驟,拆分要寫入的數(shù)據(jù),并將拆分部分寫入元數(shù)據(jù)文件,實(shí)現(xiàn)寫原文件的操作。
10.根據(jù)權(quán)利要求9所述的基于分離存儲(chǔ)的文件信息讀寫方法,其特征在于,所述元數(shù)據(jù)文件路徑和元數(shù)據(jù)文件訪問次數(shù)的信息存放于內(nèi)存中維護(hù)的一個(gè)哈希表里,所述下寫入步驟中,在寫文件時(shí),首先判斷哈希表中是否存在該文件的記錄,如果不存在,則直接放棄處理;如果存在相應(yīng)記錄,則首先判斷該文件是否是初次被寫入,如果是則需要將哈希表中的元數(shù)據(jù)路徑和元數(shù)據(jù)文件訪問次數(shù)所組成的文件索引寫入至原文件的抽離區(qū),并將原來需要寫入該抽離區(qū)的原文件數(shù)據(jù)寫入至元數(shù)據(jù)文件中。
【文檔編號(hào)】G06F17/30GK104239438SQ201410437750
【公開日】2014年12月24日 申請(qǐng)日期:2014年8月29日 優(yōu)先權(quán)日:2014年8月29日
【發(fā)明者】李大剛, 汪洋, 林信南, 朱曉陽 申請(qǐng)人:北京大學(xué)深圳研究生院