本發(fā)明涉及文件刪除技術(shù)領(lǐng)域,更具體的說(shuō),涉及一種刪除文件的方法及系統(tǒng)。
背景技術(shù):
通常被刪除文件中也會(huì)包含一些重要信息,因此為保證被刪除文件中數(shù)據(jù)的安全性,在一些應(yīng)用場(chǎng)景中,需保證被刪除文件中的數(shù)據(jù)不可再被讀取出來(lái),也即,要實(shí)現(xiàn)被刪除文件中數(shù)據(jù)的徹底刪除。
然而,對(duì)于很多文件系統(tǒng),文件刪除的操作僅僅是將文件的元數(shù)據(jù)或者部分元數(shù)據(jù)進(jìn)行刪除,而文件的數(shù)據(jù)部分仍完好的保存在磁盤中,在這種情況下,通過(guò)特殊的掃描工具,就可以從磁盤的文件數(shù)據(jù)位置,直接讀取被刪除文件包含的數(shù)據(jù),從而導(dǎo)致被刪除文件中數(shù)據(jù)的隱私性和安全性受到威脅。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明公開一種刪除文件的方法及系統(tǒng),以實(shí)現(xiàn)在文件系統(tǒng)中執(zhí)行刪除文件的操作后,被刪除文件的元數(shù)據(jù)和數(shù)據(jù)能夠同時(shí)被刪除,從而使被刪除文件所涉及到的數(shù)據(jù)塊內(nèi)容無(wú)法再被讀取,保證被刪除文件的安全性和隱私性。
一種刪除文件的方法,包括:
當(dāng)確定待刪除文件設(shè)置有安全刪除標(biāo)志位時(shí),則將所述待刪除文件的文件節(jié)點(diǎn)從文件系統(tǒng)的目錄樹中刪除;
查找所述待刪除文件的元數(shù)據(jù),并刪除所述元數(shù)據(jù);
將所述待刪除文件的相關(guān)信息記錄到所述文件系統(tǒng)預(yù)先設(shè)置的一個(gè)數(shù)據(jù)結(jié)構(gòu)中,得到一個(gè)已記錄數(shù)據(jù)結(jié)構(gòu),其中,所述相關(guān)信息至少包括:所述待刪除文件所在的塊設(shè)備描述符、文件所屬的用戶id和用戶組id、執(zhí)行刪除操作時(shí)的系統(tǒng)時(shí)間、以及文件所占用的磁盤扇區(qū);
將所述已記錄數(shù)據(jù)結(jié)構(gòu)傳送至設(shè)置在文件系統(tǒng)內(nèi)核的數(shù)據(jù)覆寫模塊,由所述數(shù)據(jù)覆寫模塊對(duì)所述已記錄數(shù)據(jù)結(jié)構(gòu)中記錄的磁盤扇區(qū)執(zhí)行清零操作,實(shí)現(xiàn)對(duì)所述待刪除文件的數(shù)據(jù)的刪除。
優(yōu)選的,在對(duì)所述待刪除文件的數(shù)據(jù)刪除之后,還包括:
釋放已執(zhí)行清零操作的磁盤扇區(qū);
通過(guò)所述數(shù)據(jù)覆寫模塊調(diào)用所述文件系統(tǒng)的回調(diào)函數(shù),將釋放的磁盤扇區(qū)信息發(fā)送給所述文件系統(tǒng);
根據(jù)所述已記錄數(shù)據(jù)結(jié)構(gòu)中記錄的用戶id和用戶組id,更改所述文件系統(tǒng)相應(yīng)的配額大小。
優(yōu)選的,所述由所述數(shù)據(jù)覆寫模塊對(duì)所述已記錄數(shù)據(jù)結(jié)構(gòu)中記錄的磁盤扇區(qū)執(zhí)行清零操作,實(shí)現(xiàn)對(duì)所述待刪除文件的數(shù)據(jù)刪除的過(guò)程,具體包括:
通過(guò)所述數(shù)據(jù)覆寫模塊接收所述已記錄數(shù)據(jù)結(jié)構(gòu);
將所述已記錄數(shù)據(jù)結(jié)構(gòu)插入到第一鏈表中,其中,所述第一鏈表用于記錄未執(zhí)行清零操作的已記錄數(shù)據(jù)結(jié)構(gòu);
判斷所述第一鏈表和第二鏈表的扇區(qū)數(shù)目總和是否大于扇區(qū)數(shù)目閾值,其中,所述第二鏈表用于記錄已執(zhí)行一次清零操作的已記錄數(shù)據(jù)結(jié)構(gòu);
若所述扇區(qū)數(shù)目總和不大于所述扇區(qū)數(shù)目閾值,則對(duì)所述第二鏈表中所有的磁盤扇區(qū)執(zhí)行清零操作,實(shí)現(xiàn)對(duì)所述待刪除文件的數(shù)據(jù)的刪除;
若所述扇區(qū)數(shù)目總和大于所述扇區(qū)數(shù)目閾值,則繼續(xù)判斷所述第一鏈表的扇區(qū)數(shù)目是否大于所述扇區(qū)數(shù)目閾值;
若所述第一鏈表的扇區(qū)數(shù)目不大于所述扇區(qū)數(shù)目閾值,則對(duì)所述第二鏈表中所有的磁盤扇區(qū)執(zhí)行清零操作,實(shí)現(xiàn)對(duì)所述待刪除文件的數(shù)據(jù)的刪除。
優(yōu)選的,若所述第一鏈表的扇區(qū)數(shù)目大于所述扇區(qū)數(shù)目閾值,則所述方法還包括:
遍歷所述第一鏈表,查找文件刪除時(shí)間最久的已記錄數(shù)據(jù)結(jié)構(gòu);
對(duì)查找到的文件刪除時(shí)間最久的已記錄數(shù)據(jù)結(jié)構(gòu)中的磁盤扇區(qū),執(zhí)行清零操作;
將執(zhí)行完清零操作的已記錄數(shù)據(jù)結(jié)構(gòu)從所述第一鏈表移入所述第二鏈表;
如此反復(fù),直至所述第一鏈表的扇區(qū)數(shù)目小于所述扇區(qū)數(shù)目閾值,對(duì)所述第二鏈表中所有的磁盤扇區(qū)執(zhí)行清零操作,實(shí)現(xiàn)對(duì)所述待刪除文件的數(shù)據(jù)的刪除。
優(yōu)選的,還包括:
遍歷所述第一鏈表,檢測(cè)所述第一鏈表中是否有文件刪除周期超過(guò)文件刪除周期閾值的已記錄數(shù)據(jù)結(jié)構(gòu),其中,所述文件刪除周期指的是從執(zhí)行文件刪除操作開始到文件數(shù)據(jù)塊被清零所需時(shí)間;
對(duì)文件刪除周期超過(guò)所述文件刪除周期閾值的已記錄數(shù)據(jù)結(jié)構(gòu),所記錄的磁盤扇區(qū)執(zhí)行第一次清零操作;
當(dāng)對(duì)所述第一鏈表中所有文件刪除周期超過(guò)所述文件刪除周期閾值的已記錄數(shù)據(jù)結(jié)構(gòu),均執(zhí)行第一次清零操作后,對(duì)所述第二鏈表中的所有磁盤扇區(qū)執(zhí)行清零操作,實(shí)現(xiàn)對(duì)所述待刪除文件的數(shù)據(jù)的刪除。
優(yōu)選的,所述將所述已記錄數(shù)據(jù)結(jié)構(gòu)插入到第一鏈表中具體包括:
當(dāng)所述第一鏈表中的磁盤扇區(qū)包含有能夠與所述已記錄數(shù)據(jù)結(jié)構(gòu)中的磁盤扇區(qū)相連的磁盤扇區(qū),并且這兩個(gè)相連的磁盤扇區(qū)所屬文件對(duì)應(yīng)的用戶和用戶組均相同時(shí),對(duì)所述第一鏈表中和所述已記錄數(shù)據(jù)結(jié)構(gòu)中相連的磁盤扇區(qū)進(jìn)行合并,實(shí)現(xiàn)將所述已記錄數(shù)據(jù)結(jié)構(gòu)插入到所述第一鏈表中;
當(dāng)所述第一鏈表中的磁盤扇區(qū)沒(méi)有包含有能夠與所述已記錄數(shù)據(jù)結(jié)構(gòu)中的磁盤扇區(qū)相連的磁盤扇區(qū)時(shí),將所述已記錄數(shù)據(jù)結(jié)構(gòu)直接插入到所述第一鏈表中。
一種刪除文件的系統(tǒng),包括:
刪除單元,用于當(dāng)確定待刪除文件設(shè)置有安全刪除標(biāo)志位時(shí),則將所述待刪除文件的文件節(jié)點(diǎn)從文件系統(tǒng)的目錄樹中刪除;
查找單元,用于查找所述待刪除文件的元數(shù)據(jù),并刪除所述元數(shù)據(jù);
記錄單元,用于將所述待刪除文件的相關(guān)信息記錄到所述文件系統(tǒng)預(yù)先設(shè)置的一個(gè)數(shù)據(jù)結(jié)構(gòu)中,得到一個(gè)已記錄數(shù)據(jù)結(jié)構(gòu),其中,所述相關(guān)信息至少包括:所述待刪除文件所在的塊設(shè)備描述符、文件所屬的用戶id和用戶組id、執(zhí)行刪除操作時(shí)的系統(tǒng)時(shí)間、以及文件所占用的磁盤扇區(qū);
處理單元,用于將所述已記錄數(shù)據(jù)結(jié)構(gòu)傳送至設(shè)置在文件系統(tǒng)內(nèi)核的數(shù)據(jù)覆寫模塊,由所述數(shù)據(jù)覆寫模塊對(duì)所述已記錄數(shù)據(jù)結(jié)構(gòu)中記錄的磁盤扇區(qū)執(zhí)行清零操作,實(shí)現(xiàn)對(duì)所述待刪除文件的數(shù)據(jù)的刪除。
優(yōu)選的,還包括:
釋放單元,用于在對(duì)所述待刪除文件的數(shù)據(jù)刪除之后,釋放已執(zhí)行清零操作的磁盤扇區(qū);
發(fā)送單元,用于通過(guò)所述數(shù)據(jù)覆寫模塊調(diào)用所述文件系統(tǒng)的回調(diào)函數(shù),將釋放的磁盤扇區(qū)信息發(fā)送給所述文件系統(tǒng);
更改單元,用于根據(jù)所述已記錄數(shù)據(jù)結(jié)構(gòu)中記錄的用戶id和用戶組id,更改所述文件系統(tǒng)相應(yīng)的配額大小。
優(yōu)選的,所述處理單元包括:
接收子單元,用于通過(guò)所述數(shù)據(jù)覆寫模塊接收所述已記錄數(shù)據(jù)結(jié)構(gòu);
插入子單元,用于將所述已記錄數(shù)據(jù)結(jié)構(gòu)插入到第一鏈表中,其中,所述第一鏈表用于記錄未執(zhí)行清零操作的已記錄數(shù)據(jù)結(jié)構(gòu);
第一判斷子單元,用于判斷所述第一鏈表和第二鏈表的扇區(qū)數(shù)目總和是否大于扇區(qū)數(shù)目閾值,其中,所述第二鏈表用于記錄已執(zhí)行一次清零操作的已記錄數(shù)據(jù)結(jié)構(gòu);
第一清零子單元,用于在所述第一判斷子單元判斷為否的情況下,對(duì)所述第二鏈表中所有的磁盤扇區(qū)執(zhí)行清零操作,實(shí)現(xiàn)對(duì)所述待刪除文件的數(shù)據(jù)的刪除;
第二判斷子單元,用于在所述第一判斷子單元判斷為是的情況下,判斷所述第一鏈表的扇區(qū)數(shù)目是否大于所述扇區(qū)數(shù)目閾值;
第二清零子單元,用于在所述第二判斷子單元判斷為否的情況下,對(duì)所述第二鏈表中所有的磁盤扇區(qū)執(zhí)行清零操作,實(shí)現(xiàn)對(duì)所述待刪除文件的數(shù)據(jù)的刪除。
優(yōu)選的,還包括:
查找子單元,用于在所述第二判斷子單元判斷為是的情況下,遍歷所述第一鏈表,查找文件刪除時(shí)間最久的已記錄數(shù)據(jù)結(jié)構(gòu);
第三清零子單元,用于對(duì)查找到的文件刪除時(shí)間最久的已記錄數(shù)據(jù)結(jié)構(gòu)中的磁盤扇區(qū),執(zhí)行清零操作;
移動(dòng)子單元,用于將執(zhí)行完清零操作的已記錄數(shù)據(jù)結(jié)構(gòu)從所述第一鏈表移入所述第二鏈表;
第四清零子單元,用于當(dāng)所述第一鏈表的扇區(qū)數(shù)目小于所述扇區(qū)數(shù)目閾值時(shí),對(duì)所述第二鏈表中所有的磁盤扇區(qū)執(zhí)行清零操作,實(shí)現(xiàn)對(duì)所述待刪除文件的數(shù)據(jù)的刪除。
優(yōu)選的,還包括:
檢測(cè)子單元,用于遍歷所述第一鏈表,檢測(cè)所述第一鏈表中是否有文件刪除周期超過(guò)文件刪除周期閾值的已記錄數(shù)據(jù)結(jié)構(gòu),其中,所述文件刪除周期指的是從執(zhí)行文件刪除操作開始到文件數(shù)據(jù)塊被清零所需時(shí)間;
第五清零子單元,用于對(duì)文件刪除周期超過(guò)所述文件刪除周期閾值的已記錄數(shù)據(jù)結(jié)構(gòu),所記錄的磁盤扇區(qū)執(zhí)行第一次清零操作;
第六清零子單元,用于當(dāng)對(duì)所述第一鏈表中所有文件刪除周期超過(guò)所述文件刪除周期閾值的已記錄數(shù)據(jù)結(jié)構(gòu),均執(zhí)行第一次清零操作后,對(duì)所述第二鏈表中的所有磁盤扇區(qū)執(zhí)行清零操作,實(shí)現(xiàn)對(duì)所述待刪除文件的數(shù)據(jù)的刪除。
優(yōu)選的,所述插入子單元包括:
合并子單元,用于當(dāng)所述第一鏈表中的磁盤扇區(qū)包含有能夠與所述已記錄數(shù)據(jù)結(jié)構(gòu)中的磁盤扇區(qū)相連的磁盤扇區(qū),并且這兩個(gè)相連的磁盤扇區(qū)所屬文件對(duì)應(yīng)的用戶和用戶組均相同時(shí),對(duì)所述第一鏈表中和所述已記錄數(shù)據(jù)結(jié)構(gòu)中相連的磁盤扇區(qū)進(jìn)行合并,實(shí)現(xiàn)將所述已記錄數(shù)據(jù)結(jié)構(gòu)插入到所述第一鏈表中;
直接插入子單元,用于當(dāng)所述第一鏈表中的磁盤扇區(qū)沒(méi)有包含有能夠與所述已記錄數(shù)據(jù)結(jié)構(gòu)中的磁盤扇區(qū)相連的磁盤扇區(qū)時(shí),將所述已記錄數(shù)據(jù)結(jié)構(gòu)直接插入到所述第一鏈表中。
從上述的技術(shù)方案可知,本發(fā)明公開了一種刪除文件的方法及系統(tǒng),當(dāng)待刪除文件上設(shè)置有安全刪除標(biāo)志位時(shí),將待刪除文件的文件節(jié)點(diǎn)從文件系統(tǒng)的目錄樹中刪除,并將查找到的刪除文件的元數(shù)據(jù)刪除,通過(guò)將待刪除文件的磁盤扇區(qū)信息記錄到數(shù)據(jù)結(jié)構(gòu),將該數(shù)據(jù)結(jié)構(gòu)傳送至設(shè)置在文件系統(tǒng)內(nèi)核的數(shù)據(jù)覆寫模塊,由數(shù)據(jù)覆寫模塊對(duì)待刪除文件的磁盤扇區(qū)執(zhí)行清零操作,實(shí)現(xiàn)對(duì)待刪除文件的數(shù)據(jù)的刪除。因此,本發(fā)明實(shí)現(xiàn)了在文件系統(tǒng)中執(zhí)行刪除文件的操作后,被刪除文件的元數(shù)據(jù)和數(shù)據(jù)能夠同時(shí)被刪除,從而使被刪除文件所涉及到的數(shù)據(jù)塊內(nèi)容無(wú)法再被讀取,保證被刪除文件的安全性和隱私性。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)公開的附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例公開的一種刪除文件的方法流程圖;
圖2為本發(fā)明實(shí)施例公開的一種由數(shù)據(jù)覆寫模塊對(duì)已記錄數(shù)據(jù)結(jié)構(gòu)中記錄的磁盤扇區(qū)執(zhí)行清零操作,實(shí)現(xiàn)對(duì)待刪除文件的數(shù)據(jù)刪除的方法流程圖;
圖3為本發(fā)明實(shí)施例公開的一種刪除文件的系統(tǒng)的結(jié)構(gòu)示意圖;
圖4為本發(fā)明實(shí)施例公開的一種處理單元的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明實(shí)施例公開了一種刪除文件的方法及系統(tǒng),以實(shí)現(xiàn)在文件系統(tǒng)中執(zhí)行刪除文件的操作后,被刪除文件的元數(shù)據(jù)和數(shù)據(jù)能夠同時(shí)被刪除,從而使被刪除文件所涉及到的數(shù)據(jù)塊內(nèi)容無(wú)法再被讀取,保證被刪除文件的安全性和隱私性。
其中,本發(fā)明所公開的刪除文件的方法主要包括兩部分,一個(gè)是對(duì)文件系統(tǒng)本身的改進(jìn),一個(gè)是在系統(tǒng)內(nèi)核增加一個(gè)數(shù)據(jù)覆寫模塊。為滿足安全刪除文件的要求,本發(fā)明在文件系統(tǒng)中還增加了一個(gè)數(shù)據(jù)結(jié)構(gòu)(file_desp_data),該數(shù)據(jù)結(jié)構(gòu)描述了一個(gè)文件所在塊設(shè)備描述符、用戶id(可簡(jiǎn)稱為uid)、用戶組id(可簡(jiǎn)稱為gid)、文件的刪除時(shí)間以及文件所占用的磁盤扇區(qū)。
具體參見圖1,本發(fā)明一實(shí)施例公開的一種刪除文件的方法流程圖,該刪除文件方法適用于linux操作系統(tǒng)的文件系統(tǒng),尤其適用于xfs文件系統(tǒng)的文件刪除管理,該方法包括步驟:
步驟s101、當(dāng)確定待刪除文件設(shè)置有安全刪除標(biāo)志位時(shí),則將所述待刪除文件的文件節(jié)點(diǎn)從文件系統(tǒng)的目錄樹中刪除;
具體的,在執(zhí)行文件的刪除命令或調(diào)用文件的刪除接口之前,首先設(shè)置待刪除文件屬性的安全刪除標(biāo)志位,文件系統(tǒng)在刪除文件時(shí),首先檢測(cè)待刪除文件是否設(shè)置有安全刪除標(biāo)志位,若待刪除文件沒(méi)有設(shè)置安全刪除標(biāo)志位,則執(zhí)行傳統(tǒng)的刪除操作,也即,將待刪除文件的文件節(jié)點(diǎn)從文件系統(tǒng)的目錄樹中刪除,同時(shí)將待刪除文件的元數(shù)據(jù)所占用的磁盤空間標(biāo)記為空,歸還給空閑鏈表,并更改文件系統(tǒng)響應(yīng)的配額大?。蝗舸齽h除文件設(shè)置有安全刪除標(biāo)志位,則執(zhí)行本發(fā)明公開的刪除文件的方法。
步驟s102、查找所述待刪除文件的元數(shù)據(jù),并刪除所述元數(shù)據(jù);
本步驟中的元數(shù)據(jù)指的是文件系統(tǒng)中描述一個(gè)文件的名稱、大小、創(chuàng)建時(shí)間等內(nèi)容的數(shù)據(jù),同時(shí)元數(shù)據(jù)還會(huì)記錄該文件所占用的磁盤數(shù)據(jù)塊的位置。
步驟s103、將所述待刪除文件的相關(guān)信息記錄到所述文件系統(tǒng)預(yù)先設(shè)置的一個(gè)數(shù)據(jù)結(jié)構(gòu)中,得到一個(gè)已記錄數(shù)據(jù)結(jié)構(gòu);
其中,所述相關(guān)信息至少包括:所述待刪除文件所在的塊設(shè)備描述符、文件所屬的用戶id和用戶組id、執(zhí)行刪除操作時(shí)的系統(tǒng)時(shí)間、以及文件所占用的磁盤扇區(qū)。
相比傳統(tǒng)方案而言,本發(fā)明在文件系統(tǒng)中增加了一個(gè)數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)用于描述一個(gè)文件所在的塊設(shè)備描述符、文件所屬的用戶id和用戶組id、執(zhí)行刪除操作時(shí)的系統(tǒng)時(shí)間、以及文件所占用的磁盤扇區(qū),以為后續(xù)刪除待刪除文件的數(shù)據(jù)做準(zhǔn)備。
步驟s104、將所述已記錄數(shù)據(jù)結(jié)構(gòu)傳送至設(shè)置在文件系統(tǒng)內(nèi)核的數(shù)據(jù)覆寫模塊,由所述數(shù)據(jù)覆寫模塊對(duì)所述已記錄數(shù)據(jù)結(jié)構(gòu)中記錄的磁盤扇區(qū)執(zhí)行清零操作,實(shí)現(xiàn)對(duì)所述待刪除文件的數(shù)據(jù)的刪除。
其中,待刪除文件的數(shù)據(jù)指的是實(shí)際存放文件內(nèi)容的磁盤數(shù)據(jù)塊,文件內(nèi)容所占用的磁盤數(shù)據(jù)塊位置在文件的元數(shù)據(jù)中的指定。
綜上可知,本發(fā)明公開的刪除文件的方法,實(shí)現(xiàn)了在文件系統(tǒng)中執(zhí)行刪除文件的操作后,被刪除文件的元數(shù)據(jù)和數(shù)據(jù)能夠同時(shí)被刪除,從而使被刪除文件所涉及到的數(shù)據(jù)塊內(nèi)容無(wú)法再被讀取,保證被刪除文件的安全性和隱私性。
需要說(shuō)明的是,本發(fā)明公開的刪除文件的方法,對(duì)于用戶而言是透明的,安全刪除在磁盤扇區(qū)的所執(zhí)行的清零操作是異步進(jìn)行的,用戶感知不到所進(jìn)行的安全操作和傳統(tǒng)刪除操作的不同,從而提高用戶的體驗(yàn)。
基于上述論述可知,數(shù)據(jù)覆寫模塊的主要功能是對(duì)待刪除文件的磁盤扇區(qū)執(zhí)行清零操作。為保證待刪除文件被刪除后,其數(shù)據(jù)不可再被讀取,本發(fā)明將清零操作的次數(shù)定為兩次,因此在守護(hù)進(jìn)程中定義了一個(gè)鏈表,第一鏈表(list1)和第二鏈表(list2),第一鏈表用于記錄未執(zhí)行清零操作的已記錄數(shù)據(jù)結(jié)構(gòu),也即,剛剛發(fā)送至數(shù)據(jù)覆寫模塊的已記錄數(shù)據(jù)結(jié)構(gòu);第二鏈表用于記錄已執(zhí)行一次清零操作的已記錄數(shù)據(jù)結(jié)構(gòu)。
為進(jìn)一步優(yōu)化上述實(shí)施例,參見圖2,本發(fā)明一實(shí)施例公開的一種由數(shù)據(jù)覆寫模塊對(duì)已記錄數(shù)據(jù)結(jié)構(gòu)中記錄的磁盤扇區(qū)執(zhí)行清零操作,實(shí)現(xiàn)對(duì)待刪除文件的數(shù)據(jù)刪除的方法流程圖,包括步驟:
步驟s201、通過(guò)數(shù)據(jù)覆寫模塊接收已記錄數(shù)據(jù)結(jié)構(gòu);
其中,本步驟中已記錄數(shù)據(jù)結(jié)構(gòu)指的是:已記錄待刪除文件的相關(guān)信息的數(shù)據(jù)結(jié)構(gòu)。
步驟s202、將所述已記錄數(shù)據(jù)結(jié)構(gòu)插入到第一鏈表中;
具體的,當(dāng)數(shù)據(jù)覆寫模塊接收到已記錄數(shù)據(jù)結(jié)構(gòu)時(shí),并不是立即對(duì)磁盤扇區(qū)執(zhí)行清零操作,而是遍歷第一鏈表,查找第一鏈表中的磁盤扇區(qū)是否有能夠與已記錄數(shù)據(jù)結(jié)構(gòu)中的磁盤扇區(qū)相連的磁盤扇區(qū),當(dāng)?shù)谝绘湵碇械拇疟P扇區(qū)包含有能夠與所述已記錄數(shù)據(jù)結(jié)構(gòu)中的磁盤扇區(qū)相連的磁盤扇區(qū),并且這兩個(gè)相連的磁盤扇區(qū)所屬文件對(duì)應(yīng)的用戶和用戶組均相同時(shí),對(duì)所述第一鏈表中和所述已記錄數(shù)據(jù)結(jié)構(gòu)中相連的磁盤扇區(qū)進(jìn)行合并,實(shí)現(xiàn)將所述已記錄數(shù)據(jù)結(jié)構(gòu)插入到所述第一鏈表中;
當(dāng)所述第一鏈表中的磁盤扇區(qū)沒(méi)有包含有能夠與所述已記錄數(shù)據(jù)結(jié)構(gòu)中的磁盤扇區(qū)相連的磁盤扇區(qū)時(shí),將所述已記錄數(shù)據(jù)結(jié)構(gòu)直接插入到所述第一鏈表中。
步驟s203、判斷所述第一鏈表和第二鏈表的扇區(qū)數(shù)目總和是否大于扇區(qū)數(shù)目閾值,如果否,則執(zhí)行步驟s209,否則,執(zhí)行步驟s204;
步驟s204、判斷所述第一鏈表的扇區(qū)數(shù)目是否大于所述扇區(qū)數(shù)目閾值,如果否,則執(zhí)行步驟s209,如果是,則執(zhí)行步驟s205;
步驟s205、遍歷所述第一鏈表,查找文件刪除時(shí)間最久的已記錄數(shù)據(jù)結(jié)構(gòu);
具體的,在實(shí)際中,可以將第一鏈表中所有文件的刪除時(shí)間按照從大到小的順序進(jìn)行排序,排名靠前的文件,表明該文件的刪除時(shí)間越久。
步驟s206、對(duì)查找到的文件刪除時(shí)間最久的已記錄數(shù)據(jù)結(jié)構(gòu)中的磁盤扇區(qū),執(zhí)行清零操作;
步驟s207、將執(zhí)行完清零操作的已記錄數(shù)據(jù)結(jié)構(gòu)從所述第一鏈表移入所述第二鏈表;
步驟s208、判斷第一鏈表的扇區(qū)數(shù)目是否小于所述扇區(qū)數(shù)目閾值,如果否,則返回執(zhí)行步驟s205,否則繼續(xù)執(zhí)行步驟s209;
步驟s209、對(duì)所述第二鏈表中所有的磁盤扇區(qū)執(zhí)行清零操作,實(shí)現(xiàn)對(duì)所述待刪除文件的數(shù)據(jù)的刪除。
需要說(shuō)明的是,在對(duì)第二鏈表中所有的磁盤扇區(qū)執(zhí)行清零操作之后,還會(huì)釋放已執(zhí)行清零操作的磁盤扇區(qū)。
因此,為進(jìn)一步優(yōu)化上述實(shí)施例,在步驟s104對(duì)待刪除文件的數(shù)據(jù)刪除之后,還包括:
釋放已執(zhí)行清零操作的磁盤扇區(qū);
通過(guò)所述數(shù)據(jù)覆寫模塊調(diào)用所述文件系統(tǒng)的回調(diào)函數(shù),將釋放的磁盤扇區(qū)信息發(fā)送給所述文件系統(tǒng);
根據(jù)所述已記錄數(shù)據(jù)結(jié)構(gòu)中記錄的用戶id和用戶組id,更改所述文件系統(tǒng)相應(yīng)的配額大小。
其中,在實(shí)際應(yīng)用中,本發(fā)明對(duì)文件系統(tǒng)的用戶和用戶組的配額是透明后,在文件安全刪除完成以后,通過(guò)文件的用戶id和用戶組id,改變相應(yīng)的配額大小,以保證配額的準(zhǔn)確性。
需要說(shuō)明的是,本發(fā)明公開的數(shù)據(jù)覆寫模塊在執(zhí)行清零操作時(shí)有兩個(gè)判斷條件,一個(gè)判斷條件是第一鏈表和第二鏈表扇區(qū)數(shù)目總和是否大于扇區(qū)數(shù)目閾值,也即圖2所示實(shí)施例,另一判斷條件是第一鏈表中是否包含有文件刪除周期超過(guò)文件刪除周期閾值的已記錄數(shù)據(jù)結(jié)構(gòu),其中,文件刪除周期指的是從執(zhí)行文件刪除操作開始到文件數(shù)據(jù)塊被清零所需時(shí)間。
因此,基于第二個(gè)判斷條件,上述實(shí)施例還可以包括:
遍歷第一鏈表,檢測(cè)所述第一鏈表中是否有文件刪除周期超過(guò)文件刪除周期閾值的已記錄數(shù)據(jù)結(jié)構(gòu);
具體的,在實(shí)際應(yīng)用中,可以將第一鏈表中所有文件的刪除周期按照從大到小的順序進(jìn)行排序,然后,通過(guò)將各文件的刪除周期與文件刪除周期閾值進(jìn)行比較,確定第一鏈表中文件刪除周期超過(guò)文件刪除周期閾值的已記錄數(shù)據(jù)結(jié)構(gòu)。
對(duì)文件刪除周期超過(guò)所述文件刪除周期閾值的已記錄數(shù)據(jù)結(jié)構(gòu),所記錄的磁盤扇區(qū)執(zhí)行第一次清零操作;
當(dāng)對(duì)所述第一鏈表中所有文件刪除周期超過(guò)所述文件刪除周期閾值的已記錄數(shù)據(jù)結(jié)構(gòu),均執(zhí)行第一次清零操作后,對(duì)所述第二鏈表中的所有磁盤扇區(qū)執(zhí)行清零操作,實(shí)現(xiàn)對(duì)所述待刪除文件的數(shù)據(jù)的刪除。
需要說(shuō)明的是,在對(duì)第二鏈表中所有磁盤扇區(qū)執(zhí)行清零操作之后,還需釋放執(zhí)行清零操作的磁盤扇區(qū)。
可以理解的是,第一鏈表中的已記錄數(shù)據(jù)結(jié)構(gòu)并不是固定不變的,因此,基于第二個(gè)判斷的操作步驟,可以每隔預(yù)設(shè)時(shí)間(如60s)執(zhí)行一次。
綜上可知,本發(fā)明公開的刪除文件的方法,實(shí)現(xiàn)了在文件系統(tǒng)中執(zhí)行刪除文件的操作后,被刪除文件的元數(shù)據(jù)和數(shù)據(jù)能夠同時(shí)被刪除,從而使被刪除文件所涉及到的數(shù)據(jù)塊內(nèi)容無(wú)法再被讀取,保證被刪除文件的安全性和隱私性。
與上述方法實(shí)施例相對(duì)應(yīng),本發(fā)明還公開了一種刪除文件的系統(tǒng)。
參見圖3,本發(fā)明一實(shí)施例公開的一種刪除文件的系統(tǒng)的結(jié)構(gòu)示意圖,該系統(tǒng)包括:
刪除單元301,用于當(dāng)確定待刪除文件設(shè)置有安全刪除標(biāo)志位時(shí),則將所述待刪除文件的文件節(jié)點(diǎn)從文件系統(tǒng)的目錄樹中刪除;
具體的,在執(zhí)行文件的刪除命令或調(diào)用文件的刪除接口之前,首先設(shè)置待刪除文件屬性的安全刪除標(biāo)志位,文件系統(tǒng)在刪除文件時(shí),首先檢測(cè)待刪除文件是否設(shè)置有安全刪除標(biāo)志位,若待刪除文件沒(méi)有設(shè)置安全刪除標(biāo)志位,則執(zhí)行傳統(tǒng)的刪除操作,也即,將待刪除文件的文件節(jié)點(diǎn)從文件系統(tǒng)的目錄樹中刪除,同時(shí)將待刪除文件的元數(shù)據(jù)所占用的磁盤空間標(biāo)記為空,歸還給空閑鏈表,并更改文件系統(tǒng)響應(yīng)的配額大?。蝗舸齽h除文件設(shè)置有安全刪除標(biāo)志位,則執(zhí)行本發(fā)明公開的刪除文件的方法。
查找單元302,用于查找所述待刪除文件的元數(shù)據(jù),并刪除所述元數(shù)據(jù);
其中,元數(shù)據(jù)指的是文件系統(tǒng)中描述一個(gè)文件的名稱、大小、創(chuàng)建時(shí)間等內(nèi)容的數(shù)據(jù),同時(shí)元數(shù)據(jù)還會(huì)記錄該文件所占用的磁盤數(shù)據(jù)塊的位置。
記錄單元303,用于將所述待刪除文件的相關(guān)信息記錄到所述文件系統(tǒng)預(yù)先設(shè)置的一個(gè)數(shù)據(jù)結(jié)構(gòu)中,得到一個(gè)已記錄數(shù)據(jù)結(jié)構(gòu),其中,所述相關(guān)信息至少包括:所述待刪除文件所在的塊設(shè)備描述符、文件所屬的用戶id和用戶組id、執(zhí)行刪除操作時(shí)的系統(tǒng)時(shí)間、以及文件所占用的磁盤扇區(qū);
處理單元304,用于將所述已記錄數(shù)據(jù)結(jié)構(gòu)傳送至設(shè)置在文件系統(tǒng)內(nèi)核的數(shù)據(jù)覆寫模塊,由所述數(shù)據(jù)覆寫模塊對(duì)所述已記錄數(shù)據(jù)結(jié)構(gòu)中記錄的磁盤扇區(qū)執(zhí)行清零操作,實(shí)現(xiàn)對(duì)所述待刪除文件的數(shù)據(jù)的刪除。
其中,待刪除文件的數(shù)據(jù)指的是實(shí)際存放文件內(nèi)容的磁盤數(shù)據(jù)塊,文件內(nèi)容所占用的磁盤數(shù)據(jù)塊位置在文件的元數(shù)據(jù)中的指定。
綜上可知,本發(fā)明公開的刪除文件的系統(tǒng),實(shí)現(xiàn)了在文件系統(tǒng)中執(zhí)行刪除文件的操作后,被刪除文件的元數(shù)據(jù)和數(shù)據(jù)能夠同時(shí)被刪除,從而使被刪除文件所涉及到的數(shù)據(jù)塊內(nèi)容無(wú)法再被讀取,保證被刪除文件的安全性和隱私性。
基于上述論述可知,數(shù)據(jù)覆寫模塊的主要功能是對(duì)待刪除文件的磁盤扇區(qū)執(zhí)行清零操作。為保證待刪除文件被刪除后,其數(shù)據(jù)不可再被讀取,本發(fā)明將清零操作的次數(shù)定為兩次,因此在守護(hù)進(jìn)程中定義了一個(gè)鏈表,第一鏈表(list1)和第二鏈表(list2),第一鏈表用于記錄未執(zhí)行清零操作的已記錄數(shù)據(jù)結(jié)構(gòu),也即,剛剛發(fā)送至數(shù)據(jù)覆寫模塊的已記錄數(shù)據(jù)結(jié)構(gòu);第二鏈表用于記錄已執(zhí)行一次清零操作的已記錄數(shù)據(jù)結(jié)構(gòu)。
為進(jìn)一步優(yōu)化上述實(shí)施例,參見圖4,本發(fā)明一實(shí)施例公開的一種處理單元的結(jié)構(gòu)示意圖,包括:
接收子單元401,用于通過(guò)所述數(shù)據(jù)覆寫模塊接收所述已記錄數(shù)據(jù)結(jié)構(gòu);
已記錄數(shù)據(jù)結(jié)構(gòu)指的是:已記錄待刪除文件的相關(guān)信息的數(shù)據(jù)結(jié)構(gòu)。
插入子單元402,用于將所述已記錄數(shù)據(jù)結(jié)構(gòu)插入到第一鏈表中,其中,所述第一鏈表用于記錄未執(zhí)行清零操作的已記錄數(shù)據(jù)結(jié)構(gòu);
具體的,當(dāng)數(shù)據(jù)覆寫模塊接收到已記錄數(shù)據(jù)結(jié)構(gòu)時(shí),并不是立即對(duì)磁盤扇區(qū)執(zhí)行清零操作,而是遍歷第一鏈表,查找第一鏈表中的磁盤扇區(qū)是否有能夠與已記錄數(shù)據(jù)結(jié)構(gòu)中的磁盤扇區(qū)相連的磁盤扇區(qū),當(dāng)?shù)谝绘湵碇械拇疟P扇區(qū)包含有能夠與所述已記錄數(shù)據(jù)結(jié)構(gòu)中的磁盤扇區(qū)相連的磁盤扇區(qū),并且這兩個(gè)相連的磁盤扇區(qū)所屬文件對(duì)應(yīng)的用戶和用戶組均相同時(shí),對(duì)所述第一鏈表中和所述已記錄數(shù)據(jù)結(jié)構(gòu)中相連的磁盤扇區(qū)進(jìn)行合并,實(shí)現(xiàn)將所述已記錄數(shù)據(jù)結(jié)構(gòu)插入到所述第一鏈表中;
當(dāng)所述第一鏈表中的磁盤扇區(qū)沒(méi)有包含有能夠與所述已記錄數(shù)據(jù)結(jié)構(gòu)中的磁盤扇區(qū)相連的磁盤扇區(qū)時(shí),將所述已記錄數(shù)據(jù)結(jié)構(gòu)直接插入到所述第一鏈表中。
因此,插入子單元具體包括:
合并子單元,用于當(dāng)所述第一鏈表中的磁盤扇區(qū)包含有能夠與所述已記錄數(shù)據(jù)結(jié)構(gòu)中的磁盤扇區(qū)相連的磁盤扇區(qū),并且這兩個(gè)相連的磁盤扇區(qū)所屬文件對(duì)應(yīng)的用戶和用戶組均相同時(shí),對(duì)所述第一鏈表中和所述已記錄數(shù)據(jù)結(jié)構(gòu)中相連的磁盤扇區(qū)進(jìn)行合并,實(shí)現(xiàn)將所述已記錄數(shù)據(jù)結(jié)構(gòu)插入到所述第一鏈表中;
直接插入子單元,用于當(dāng)所述第一鏈表中的磁盤扇區(qū)沒(méi)有包含有能夠與所述已記錄數(shù)據(jù)結(jié)構(gòu)中的磁盤扇區(qū)相連的磁盤扇區(qū)時(shí),將所述已記錄數(shù)據(jù)結(jié)構(gòu)直接插入到所述第一鏈表中。
第一判斷子單元403,用于判斷所述第一鏈表和第二鏈表的扇區(qū)數(shù)目總和是否大于扇區(qū)數(shù)目閾值,其中,所述第二鏈表用于記錄已執(zhí)行一次清零操作的已記錄數(shù)據(jù)結(jié)構(gòu);
第一清零子單元404,用于在所述第一判斷子單元403判斷為否的情況下,對(duì)所述第二鏈表中所有的磁盤扇區(qū)執(zhí)行清零操作,實(shí)現(xiàn)對(duì)所述待刪除文件的數(shù)據(jù)的刪除;
第二判斷子單元405,用于在所述第一判斷子單元403判斷為是的情況下,判斷所述第一鏈表的扇區(qū)數(shù)目是否大于所述扇區(qū)數(shù)目閾值;
第二清零子單元406,用于在所述第二判斷子單元405判斷為否的情況下,對(duì)所述第二鏈表中所有的磁盤扇區(qū)執(zhí)行清零操作,實(shí)現(xiàn)對(duì)所述待刪除文件的數(shù)據(jù)的刪除。
查找子單元407,用于在所述第二判斷子單元405判斷為是的情況下,遍歷所述第一鏈表,查找文件刪除時(shí)間最久的已記錄數(shù)據(jù)結(jié)構(gòu);
第三清零子單元408,用于對(duì)查找到的文件刪除時(shí)間最久的已記錄數(shù)據(jù)結(jié)構(gòu)中的磁盤扇區(qū),執(zhí)行清零操作;
移動(dòng)子單元409,用于將執(zhí)行完清零操作的已記錄數(shù)據(jù)結(jié)構(gòu)從所述第一鏈表移入所述第二鏈表;
第四清零子單元410,用于當(dāng)所述第一鏈表的扇區(qū)數(shù)目小于所述扇區(qū)數(shù)目閾值時(shí),對(duì)所述第二鏈表中所有的磁盤扇區(qū)執(zhí)行清零操作,實(shí)現(xiàn)對(duì)所述待刪除文件的數(shù)據(jù)的刪除。
需要說(shuō)明的是,在對(duì)第二鏈表中所有的磁盤扇區(qū)執(zhí)行清零操作之后,還會(huì)釋放已執(zhí)行清零操作的磁盤扇區(qū)。
因此,為進(jìn)一步優(yōu)化上述實(shí)施例,刪除文件的系統(tǒng)還包括:
釋放單元,用于在對(duì)所述待刪除文件的數(shù)據(jù)刪除之后,釋放已執(zhí)行清零操作的磁盤扇區(qū);
發(fā)送單元,用于通過(guò)所述數(shù)據(jù)覆寫模塊調(diào)用所述文件系統(tǒng)的回調(diào)函數(shù),將釋放的磁盤扇區(qū)信息發(fā)送給所述文件系統(tǒng);
更改單元,用于根據(jù)所述已記錄數(shù)據(jù)結(jié)構(gòu)中記錄的用戶id和用戶組id,更改所述文件系統(tǒng)相應(yīng)的配額大小。
其中,在實(shí)際應(yīng)用中,本發(fā)明對(duì)文件系統(tǒng)的用戶和用戶組的配額是透明后,在文件安全刪除完成以后,通過(guò)文件的用戶id和用戶組id,改變相應(yīng)的配額大小,以保證配額的準(zhǔn)確性。
需要說(shuō)明的是,本發(fā)明公開的數(shù)據(jù)覆寫模塊在執(zhí)行清零操作時(shí)有兩個(gè)判斷條件,一個(gè)判斷條件是第一鏈表和第二鏈表扇區(qū)數(shù)目總和是否大于扇區(qū)數(shù)目閾值,也即圖4所示實(shí)施例,另一判斷條件是第一鏈表中是否包含有文件刪除周期超過(guò)文件刪除周期閾值的已記錄數(shù)據(jù)結(jié)構(gòu),其中,文件刪除周期指的是從執(zhí)行文件刪除操作開始到文件數(shù)據(jù)塊被清零所需時(shí)間。
因此,基于第二個(gè)判斷條件,上述實(shí)施例還可以包括:
檢測(cè)子單元,用于遍歷所述第一鏈表,檢測(cè)所述第一鏈表中是否有文件刪除周期超過(guò)文件刪除周期閾值的已記錄數(shù)據(jù)結(jié)構(gòu),其中,所述文件刪除周期指的是從執(zhí)行文件刪除操作開始到文件數(shù)據(jù)塊被清零所需時(shí)間;
具體的,在實(shí)際應(yīng)用中,可以將第一鏈表中所有文件的刪除周期按照從大到小的順序進(jìn)行排序,然后,通過(guò)將各文件的刪除周期與文件刪除周期閾值進(jìn)行比較,確定第一鏈表中文件刪除周期超過(guò)文件刪除周期閾值的已記錄數(shù)據(jù)結(jié)構(gòu)。
第五清零子單元,用于對(duì)文件刪除周期超過(guò)所述文件刪除周期閾值的已記錄數(shù)據(jù)結(jié)構(gòu),所記錄的磁盤扇區(qū)執(zhí)行第一次清零操作;
第六清零子單元,用于當(dāng)對(duì)所述第一鏈表中所有文件刪除周期超過(guò)所述文件刪除周期閾值的已記錄數(shù)據(jù)結(jié)構(gòu),均執(zhí)行第一次清零操作后,對(duì)所述第二鏈表中的所有磁盤扇區(qū)執(zhí)行清零操作,實(shí)現(xiàn)對(duì)所述待刪除文件的數(shù)據(jù)的刪除。
需要說(shuō)明的是,在對(duì)第二鏈表中所有磁盤扇區(qū)執(zhí)行清零操作之后,還需釋放執(zhí)行清零操作的磁盤扇區(qū)。
可以理解的是,第一鏈表中的已記錄數(shù)據(jù)結(jié)構(gòu)并不是固定不變的,因此,基于第二個(gè)判斷的操作步驟,可以每隔預(yù)設(shè)時(shí)間(如60s)執(zhí)行一次。
綜上可知,本發(fā)明公開的刪除文件的系統(tǒng),實(shí)現(xiàn)了在文件系統(tǒng)中執(zhí)行刪除文件的操作后,被刪除文件的元數(shù)據(jù)和數(shù)據(jù)能夠同時(shí)被刪除,從而使被刪除文件所涉及到的數(shù)據(jù)塊內(nèi)容無(wú)法再被讀取,保證被刪除文件的安全性和隱私性。
需要說(shuō)明的是,系統(tǒng)實(shí)施例中,各組成部分的具體工作原理,請(qǐng)參見方法實(shí)施例對(duì)應(yīng)部分,此處不再贅述。
最后,還需要說(shuō)明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來(lái)而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
本說(shuō)明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。
對(duì)所公開的實(shí)施例的上述說(shuō)明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專業(yè)技術(shù)人員來(lái)說(shuō)將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。