專利名稱:一種文件掃描方法、文件掃描裝置及文件檢測(cè)系統(tǒng)的制作方法
一種文件掃描方法、文件掃描裝置及文件檢測(cè)系統(tǒng)技術(shù)領(lǐng)域
本發(fā)明實(shí)施例涉及掃描技術(shù)領(lǐng)域,具體涉及一種文件掃描方法、文件掃描裝置及文件檢測(cè)系統(tǒng)。
背景技術(shù):
隨著計(jì)算機(jī)的普及,服務(wù)端和用戶端都需要對(duì)計(jì)算機(jī)內(nèi)的文件進(jìn)行掃描從而及時(shí)發(fā)現(xiàn)病毒等惡意軟件。但是在進(jìn)行掃描的時(shí)候,需要大量的CPU運(yùn)算和磁盤操作,掃描過程漫長(zhǎng)而且影響系統(tǒng)的速度。在這些掃描的文件中,有許多文件都是相同的,例如Windows的文件、幫助文件、壓縮文件和很多軟件的安裝包文件等。
目前現(xiàn)有技術(shù)中對(duì)上述具有相同特征的文件進(jìn)行掃描時(shí),第一次會(huì)全盤掃描計(jì)算機(jī)內(nèi)所有的文件,并且會(huì)掃描文件的所有內(nèi)容,因此對(duì)于包括內(nèi)容比較多的文件,其掃描的時(shí)耗費(fèi)的時(shí)間相當(dāng)長(zhǎng),占用的資源也相當(dāng)多,從而導(dǎo)致第一次掃描的時(shí)間非常長(zhǎng)。而第一次掃描之后的再次掃描也需要重新獲取這些特征,以至于掃描速度仍然很慢。發(fā)明內(nèi)容
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的一種文件掃描方法、文件掃描裝置及文件檢測(cè)系統(tǒng)和相應(yīng)的文件檢測(cè)系統(tǒng)。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種文件掃描方法,包括
獲取待掃描文件的當(dāng)前屬性信息;
訪問本地緩存數(shù)據(jù)庫(kù),判斷本地緩存數(shù)據(jù)庫(kù)中是否存在待掃描文件的已掃描特征信息;
若存在,則解析已掃描特征信息得到已掃描屬性信息,并判斷已掃描屬性信息與當(dāng)前屬性信息是否一致;
若一致,則讀取已掃描特征信息作為待掃描文件的當(dāng)前特征信息;若不一致,則通過當(dāng)前屬性信息計(jì)算待掃描文件的當(dāng)前特征信息,并存入本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。
本發(fā)明實(shí)施例中,還包括若本地緩存數(shù)據(jù)庫(kù)中不存在待掃描文件的已掃描特征信息,則通過當(dāng)前屬性信息計(jì)算待掃描文件的當(dāng)前特征信息,并存入本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。
本發(fā)明實(shí)施例中,還包括監(jiān)控待掃描文件,當(dāng)待掃描文件進(jìn)行修改操作時(shí),對(duì)本地緩存數(shù)據(jù)庫(kù)中待掃描文件的已掃描特征信息設(shè)置無效標(biāo)志。
本發(fā)明實(shí)施例中,讀取已掃描特征信息作為待掃描文件的當(dāng)前特征信息之前,還包括判斷待掃描文件的已掃描特征信息是否包含無效標(biāo)志,若不包含無效標(biāo)志,則讀取已掃描特征信息作為待掃描文件的當(dāng)前特征信息;若包含無效標(biāo)志,則通過當(dāng)前屬性信息計(jì)算待掃描文件的當(dāng)前特征信息,并存入本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。
本發(fā)明實(shí)施例中,獲取待掃描文件的當(dāng)前屬性信息包括
讀取待掃描文件的路徑;
根據(jù)待掃描文件的路徑獲取待掃描文件的當(dāng)前屬性信息。
本發(fā)明實(shí)施例中,訪問本地緩存數(shù)據(jù)庫(kù)包括
根據(jù)待掃描文件的路徑生成鍵值,并依據(jù)鍵值訪問本地緩存數(shù)據(jù)庫(kù);其中,本地緩存數(shù)據(jù)庫(kù)以鍵值為訪問索引。
本發(fā)明實(shí)施例中,待掃描文件的當(dāng)前屬性信息包括文件的大小、文件的最后修改時(shí)間和文件的創(chuàng)建時(shí)間;
待掃描文件的已掃描特征信息包括屬性信息和特征值,特征值通過屬性信息計(jì)算得到。
根據(jù)本發(fā)明的另一方面,提供了一種文件掃描裝置,包括
屬性獲取模塊,適于獲取待掃描文件的當(dāng)前屬性信息;
判斷模塊,適于訪問本地緩存數(shù)據(jù)庫(kù),判斷本地緩存數(shù)據(jù)庫(kù)中是否存在待掃描文件的已掃描特征信息;若存在,則解析已掃描特征信息得到已掃描屬性信息,并判斷已掃描屬性信息與當(dāng)前屬性信息是否一致;
讀取模塊,適于當(dāng)已掃描屬性信息與當(dāng)前屬性信息一致時(shí),讀取已掃描特征信息作為待掃描文件的當(dāng)前特征信息;
計(jì)算模塊,適于當(dāng)已掃描屬性信息與當(dāng)前屬性信息不一致時(shí),通過當(dāng)前屬性信息計(jì)算待掃描文件的當(dāng)前特征信息,并存入本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信肩、O
本發(fā)明實(shí)施例中,計(jì)算模塊還適于當(dāng)本地緩存數(shù)據(jù)庫(kù)中不存在待掃描文件的已掃描特征信息時(shí),通過當(dāng)前屬性信息計(jì)算待掃描文件的當(dāng)前特征信息,并存入本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。
本發(fā)明實(shí)施例中,還包括監(jiān)控模塊,適于監(jiān)控待掃描文件,當(dāng)待掃描文件進(jìn)行修改操作時(shí),對(duì)本地緩存數(shù)據(jù)庫(kù)中待掃描文件的已掃描特征信息設(shè)置無效標(biāo)志。
本發(fā)明實(shí)施例中,判斷模塊還適于讀取已掃描特征信息作為待掃描文件的當(dāng)前特征信息之前,判斷待掃描文件的已掃描特征信息是否包含無效標(biāo)志;
讀取模塊還適于待掃描文件的已掃描特征信息不包含無效標(biāo)志時(shí),讀取已掃描特征信息作為待掃描文件的當(dāng)前特征信息;
計(jì)算模塊還適于待掃描文件的已掃描特征信息包含無效標(biāo)志時(shí),通過當(dāng)前屬性信息計(jì)算待掃描文件的當(dāng)前特征信息,并存入本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信肩、O
本發(fā)明實(shí)施例中,屬性獲取模塊包括
路徑讀取子模塊,適于讀取待掃描文件的路徑;
信息獲取子模塊,適于根據(jù)待掃描文件的路徑獲取待掃描文件的當(dāng)前屬性信息。
本發(fā)明實(shí)施例中,待掃描文件的當(dāng)前屬性信息包括文件的大小、文件的最后修改時(shí)間和文件的創(chuàng)建時(shí)間;
待掃描文件的已掃描特征信息包括屬性信息和特征值,特征值通過屬性信息計(jì)算得到。
根據(jù)本發(fā)明的另一方面,提供了一種文件檢測(cè)系統(tǒng),包括
主界面模塊,適于對(duì)封裝模塊發(fā)起文件掃描操作,并指定待掃描文件;
封裝模塊,適于調(diào)用掃描模塊;
掃描模塊,適于掃描待掃描文件并調(diào)用數(shù)據(jù)庫(kù)操作模塊獲取所述待掃描文件的特征信息;
數(shù)據(jù)庫(kù)操作模塊,適于讀取所述待掃描文件的特征信息。
本發(fā)明實(shí)施例中,還包括
驅(qū)動(dòng)模塊,適于監(jiān)控所述待掃描文件,當(dāng)所述待掃描文件進(jìn)行修改操作時(shí),將包含所述待掃描文件進(jìn)行的修改操作的文件修改消息發(fā)送至所述消息服務(wù)模塊;
消息服務(wù)模塊,適于接收所述驅(qū)動(dòng)模塊發(fā)送的文件修改消息,并將所述文件修改消息發(fā)送至所述數(shù)據(jù)庫(kù)操作模塊;
所述數(shù)據(jù)庫(kù)操作模塊,還適于接收所述消息服務(wù)模塊發(fā)送的文件修改消息,并依據(jù)所述文件修改消息對(duì)該文件對(duì)應(yīng)的數(shù)據(jù)庫(kù)文件設(shè)置無效標(biāo)志。
與現(xiàn)有技術(shù)相比,本發(fā)明包括以下優(yōu)點(diǎn)
首先,本發(fā)明實(shí)施例通過訪問本地緩存數(shù)據(jù)庫(kù),判斷所述本地緩存數(shù)據(jù)庫(kù)中是否存在所述待掃描文件的已掃描特征信息,在本地緩存數(shù)據(jù)庫(kù)中存在待掃描文件的已掃描特征信息且與當(dāng)前屬性信息一致時(shí),直接讀取緩存數(shù)據(jù)庫(kù)中的已掃描特征信息作為所述待掃描文件的當(dāng)前特征信息,而不需要再次通過當(dāng)前屬性信息計(jì)算當(dāng)前特征信息,從而可以減少再次掃描時(shí)獲取同一文件特征的時(shí)間,大大提高了文件掃描的速度,節(jié)約了系統(tǒng)資源。
其次,本發(fā)明實(shí)施例即使本地緩存數(shù)據(jù)庫(kù)中不存在待掃描文件的已掃描特征信息或者在本地緩存數(shù)據(jù)庫(kù)中存在待掃描文件的已掃描特征信息且與當(dāng)前屬性信息不一致時(shí), 在本次掃描的時(shí)候通過當(dāng)前屬性信息計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息,這樣對(duì)該文件進(jìn)行再次掃描的時(shí)候,就可以直接從緩存數(shù)據(jù)庫(kù)中找到該文件的特征信息了,可以加速再次掃描的進(jìn)度。
最后,本發(fā)明實(shí)施例監(jiān)控所述待掃描文件,當(dāng)所述待掃描文件進(jìn)行修改操作時(shí),對(duì)所述本地緩存數(shù)據(jù)庫(kù)中待掃描文件的已掃描特征信息設(shè)置無效標(biāo)志。也就是說,一旦文件發(fā)生了修改操作,例如,寫操作、或者屬性進(jìn)行了修改,就對(duì)本地緩存數(shù)據(jù)庫(kù)中存儲(chǔ)的待掃描文件的已掃描特征信息設(shè)置一個(gè)無效標(biāo)志,代表該已掃描特征信息已經(jīng)失效,下次進(jìn)行掃描的時(shí)候,需要通過所述當(dāng)前屬性信息重新計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。避免了文件內(nèi)容發(fā)生變化而文件的大小相同,且文件的最后修改時(shí)間及文件的創(chuàng)建時(shí)間也改為相同的情況下,如果只判斷已掃描屬性信息與當(dāng)前屬性信息一致,就直接讀取緩存數(shù)據(jù)庫(kù)中的已掃描特征信息作為所述待掃描文件的當(dāng)前特征信息的錯(cuò)誤操作。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段, 而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式
。
通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中
圖I示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種文件掃描方法的流程圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的另一種文件掃描方法的流程圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種文件掃描裝置的結(jié)構(gòu)框圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的另一種文件掃描裝置的結(jié)構(gòu)框圖5示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種文件檢測(cè)系統(tǒng)的結(jié)構(gòu)框圖。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
本發(fā)明實(shí)施例可以應(yīng)用到木馬云查殺的掃描引擎中,該引擎可以結(jié)合安全相關(guān)的產(chǎn)品使用,包括殺毒軟件,主動(dòng)防御系統(tǒng)和其他的利用服務(wù)器查殺相關(guān)軟件中。本發(fā)明實(shí)施例可以應(yīng)用于計(jì)算機(jī)系統(tǒng)/服務(wù)器,其可與眾多其它通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置一起操作。適于與計(jì)算機(jī)系統(tǒng)/服務(wù)器一起使用的眾所周知的計(jì)算系統(tǒng)、環(huán)境和/或配置的例子包括但不限于個(gè)人計(jì)算機(jī)系統(tǒng)、服務(wù)器計(jì)算機(jī)系統(tǒng)、瘦客戶機(jī)、厚客戶機(jī)、手持或膝上設(shè)備、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)電子產(chǎn)品、網(wǎng)絡(luò)個(gè)人電腦、小型計(jì)算機(jī)系統(tǒng)、 大型計(jì)算機(jī)系統(tǒng)和包括上述任何系統(tǒng)的分布式云計(jì)算技術(shù)環(huán)境,等等。
計(jì)算機(jī)系統(tǒng)/服務(wù)器可以在由計(jì)算機(jī)系統(tǒng)執(zhí)行的計(jì)算機(jī)系統(tǒng)可執(zhí)行指令(諸如程序模塊)的一般語境下描述。通常,程序模塊可以包括例程、程序、目標(biāo)程序、組件、邏輯、數(shù)據(jù)結(jié)構(gòu)等等,它們執(zhí)行特定的任務(wù)或者實(shí)現(xiàn)特定的抽象數(shù)據(jù)類型。計(jì)算機(jī)系統(tǒng)/服務(wù)器可以在分布式云計(jì)算環(huán)境中實(shí)施,分布式云計(jì)算環(huán)境中,任務(wù)是由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的。在分布式云計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備的本地或遠(yuǎn)程計(jì)算系統(tǒng)存儲(chǔ)介質(zhì)上。
實(shí)施例一
參照?qǐng)D1,示出了本發(fā)明實(shí)施例的一種文件掃描方法的流程圖,本實(shí)施例具體可以包括以下步驟
S101,獲取待掃描文件的當(dāng)前屬性信息。
本實(shí)施例中所述獲取待掃描文件的當(dāng)前屬性信息包括
讀取待掃描文件的路徑;
根據(jù)所述待掃描文件的路徑獲取待掃描文件的當(dāng)前屬性信息。
具體地,首先可以通過遍歷待掃描文件目錄,從所述待掃描文件目錄中提取待掃描文件的路徑;其次可以通過待掃描文件的路徑找到待掃描文件;最后讀取待掃描文件的當(dāng)前屬性信息。本實(shí)施例中待掃描文件的當(dāng)前屬性信息包括文件的大小、文件的最后修改時(shí)間和文件的創(chuàng)建時(shí)間。
例如,待掃描文件的路徑為C:\program files\msn gamingzone\windows\ rvsezm. exe,依據(jù)此路徑,就可以從C盤中找到待掃描文件rvsezm. exe,然后讀取待掃描文件的當(dāng)前屬性信息,具體包括文件的大小41. 5KB、文件的最后修改時(shí)間2009年8月10日,10:11:21和/或文件的創(chuàng)建時(shí)間:2004年8月17日,20:00:00。
S102,訪問本地緩存數(shù)據(jù)庫(kù)。
本地緩存數(shù)據(jù)庫(kù)中中保存有已掃描文件的特征信息,具體的,所述特征信息包括屬性信息和特征值,屬性信息包括上述文件的大小、文件的最后修改時(shí)間和文件的創(chuàng)建時(shí)間,特征值通過屬性信息計(jì)算得到,例如通過文件的大小、文件的最后修改時(shí)間和文件的創(chuàng)建時(shí)間計(jì)算出全文信息-摘要算法(MD5,message_digest algorithm 5),全文安全哈希算法(SHA1, Secure HashAlgorithm)等特征值。
本實(shí)施例中可以根據(jù)所述待掃描文件的路徑生成鍵值,并依據(jù)所述鍵值訪問本地緩存數(shù)據(jù)庫(kù);其中,所述本地緩存數(shù)據(jù)庫(kù)以鍵值為訪問索引。
需要說明的是,在文件掃描過程中,獲取特征值是非常重要的一步。之后需要根據(jù)所述特征值判斷文件的安全級(jí)別。
S103,判斷所述本地緩存數(shù)據(jù)庫(kù)中是否存在所述待掃描文件的已掃描特征信息。
依據(jù)步驟S102中的描述,本地緩存數(shù)據(jù)庫(kù)中保存有已掃描文件的特征信息,在本實(shí)施例中已掃描文件的含義是之前進(jìn)行過掃描,對(duì)于待掃描文件來說,其也有可能在此次掃描之前進(jìn)行過掃描,對(duì)于此次掃描而言該文件為待掃描文件,對(duì)于下次掃描而言該文件為已掃描文件。
在步驟S103中需要判斷本地緩存數(shù)據(jù)庫(kù)中是否存在該待掃描文件的已掃描特征信息,如果本地緩存數(shù)據(jù)庫(kù)中存在該待掃描文件的已掃描特征信息,說明該文件在此次掃描之前進(jìn)行過掃描,此次掃描為再次掃描,執(zhí)行步驟S104解析所述已掃描特征信息得到已掃描屬性信息;如果本地緩存數(shù)據(jù)庫(kù)中不存在該待掃描文件的已掃描特征信息,說明該待掃描文件在此次掃描之前沒有進(jìn)行過掃描,此次掃描為第一次掃描,執(zhí)行步驟S107通過所述當(dāng)前屬性信息計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。這樣第一次掃描的文件計(jì)算得到的特征信息就作為已掃描特征信息存儲(chǔ)到緩存數(shù)據(jù)庫(kù)中了,該文件進(jìn)行再次掃描的時(shí)候,就可以從緩存數(shù)據(jù)庫(kù)中找到該文件的已掃描特征信息了。
S104,當(dāng)本地緩存數(shù)據(jù)庫(kù)中存在所述待掃描文件的已掃描特征信息時(shí),解析所述已掃描特征信息得到已掃描屬性信息。
特征信息包含屬性信息和特征值,在步驟S104中解析已掃描特征信息就可以得到已掃描屬性信息,也就是文件的大小、文件的最后修改時(shí)間和文件的創(chuàng)建時(shí)間,這些已掃描屬性信息是存儲(chǔ)在緩存數(shù)據(jù)庫(kù)中的。
S105,判斷所述已掃描屬性信息與所述當(dāng)前屬性信息是否一致,若一致,執(zhí)行步驟 S106,若不一致,則執(zhí)行步驟S107。
將步驟SlOl中獲取的待掃描文件的當(dāng)前屬性信息和步驟S104中得到的已掃描屬性信息進(jìn)行比對(duì),判斷上述當(dāng)前屬性信息和已掃描屬性信息是否一致,具體地,判斷上述當(dāng)前屬性信息和已掃描屬性信息包含的文件的大小是否一致、文件的最后修改時(shí)間是否一致、文件的創(chuàng)建時(shí)間是否一致。只有上述文件的大小、文件的最后修改時(shí)間和文件的創(chuàng)建時(shí)間三者都一致,才判定已掃描屬性信息與當(dāng)前屬性信息一致,只要上述三者有一者不一致, 都判定已掃描屬性信息與當(dāng)前屬性信息不一致。
S106,讀取所述已掃描特征信息作為所述待掃描文件的當(dāng)前特征信息。
舉例來說掃描A. exe文件并獲取全文MD5。
第一次掃描時(shí),需完整讀取A.exe的內(nèi)容,然后計(jì)算出A.exe文件內(nèi)容的MD5,并存入數(shù)據(jù)庫(kù)。
第二次掃描時(shí),如果A. exe的文件大小、文件最后修改時(shí)間、文件創(chuàng)建時(shí)間沒有變化,且文件沒有發(fā)生過寫操作,那么直接從數(shù)據(jù)庫(kù)中獲取A. exe的MD5值。
當(dāng)所述已掃描屬性信息與所述當(dāng)前屬性信息一致的時(shí)候,直接讀取緩存數(shù)據(jù)庫(kù)中的已掃描特征信息作為所述待掃描文件的當(dāng)前特征信息,而不需要再通過當(dāng)前屬性信息重新進(jìn)行特征值的計(jì)算,節(jié)省了獲取特征值的時(shí)間,從而節(jié)省了文件掃描所需的時(shí)間,進(jìn)而加速了文件掃描的速度。
S107,通過所述當(dāng)前屬性信息計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。
當(dāng)所述已掃描屬性信息與所述當(dāng)前屬性信息不一致的時(shí)候,說明該文件很有可能進(jìn)行了修改,因此不能直接讀取緩存數(shù)據(jù)庫(kù)中的已掃描特征信息作為所述待掃描文件的當(dāng)前特征信息,而需要通過所述當(dāng)前屬性信息計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。
當(dāng)然,如果步驟S103中判斷本地緩存數(shù)據(jù)庫(kù)中不存在所述待掃描文件的已掃描特征信息,也需要通過所述當(dāng)前屬性信息計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。
首先,本實(shí)施例通過訪問本地緩存數(shù)據(jù)庫(kù),判斷所述本地緩存數(shù)據(jù)庫(kù)中是否存在所述待掃描文件的已掃描特征信息,在本地緩存數(shù)據(jù)庫(kù)中存在待掃描文件的已掃描特征信息且與當(dāng)前屬性信息一致時(shí),直接讀取緩存數(shù)據(jù)庫(kù)中的已掃描特征信息作為所述待掃描文件的當(dāng)前特征信息,而不需要再次通過當(dāng)前屬性信息計(jì)算當(dāng)前特征信息,從而可以減少再次掃描時(shí)獲取同一文件特征的時(shí)間,大大提高了文件掃描的速度,不需要重新從磁盤讀取文件的全部?jī)?nèi)容,從而節(jié)省了重復(fù)讀寫磁盤文件所帶來的系統(tǒng)資源消耗。其次,本實(shí)施例即使本地緩存數(shù)據(jù)庫(kù)中不存在待掃描文件的已掃描特征信息或者在本地緩存數(shù)據(jù)庫(kù)中存在待掃描文件的已掃描特征信息且與當(dāng)前屬性信息不一致時(shí),在本次掃描的時(shí)候通過當(dāng)前屬性信息計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息,這樣對(duì)該文件進(jìn)行再次掃描的時(shí)候,就可以直接從緩存數(shù)據(jù)庫(kù)中找到該文件的特征信息了,可以加速再次掃描的進(jìn)度。
需要說明的是,對(duì)于前述的方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本申請(qǐng)并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本申請(qǐng),某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉, 說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作并不一定是本申請(qǐng)所必需的。
實(shí)施例二
參照?qǐng)D2,示出了本發(fā)明實(shí)施例的一種文件掃描方法的流程圖,本實(shí)施例具體可以包括以下步驟
S201,獲取待掃描文件的當(dāng)前屬性信息。
本實(shí)施例中,可以通過遍歷待掃描文件目錄,從所述待掃描文件目錄中提取待掃描文件的路徑。然后可以通過待掃描文件的路徑找到待掃描文件,繼而讀取待掃描文件的當(dāng)前屬性信息。本實(shí)施例中待掃描文件的當(dāng)前屬性信息包括文件的大小、文件的最后修改時(shí)間和文件的創(chuàng)建時(shí)間。
例如,待掃描文件的路徑為C:\program files\msn gamingzone\windows\ rvsezm. exe,依據(jù)此路徑,就可以從C盤中找到待掃描文件rvsezm. exe,然后讀取待掃描文件的當(dāng)前屬性信息,具體包括文件的大小41. 5KB、文件的最后修改時(shí)間2009年8月10 日,10:11:21和/或文件的創(chuàng)建時(shí)間:2004年8月17日,20:00:00。
S202,訪問本地緩存數(shù)據(jù)庫(kù)。
本地緩存數(shù)據(jù)中保存有已掃描文件的特征信息,具體的,所述特征信息包括屬性信息和特征值,屬性信息包括上述文件的大小、文件的最后修改時(shí)間和文件的創(chuàng)建時(shí)間,特征值通過屬性信息計(jì)算得到,例如通過文件的大小、文件的最后修改時(shí)間和文件的創(chuàng)建時(shí)間計(jì)算出全文MD5,SHAl等特征值。
本實(shí)施例中可以根據(jù)所述待掃描文件的路徑生成鍵值,并依據(jù)所述鍵值訪問本地緩存數(shù)據(jù)庫(kù);其中,所述本地緩存數(shù)據(jù)庫(kù)以鍵值為訪問索引。
S203,判斷所述本地緩存數(shù)據(jù)庫(kù)中是否存在所述待掃描文件的已掃描特征信息, 若存在,則執(zhí)行步驟S204,若不存在,則執(zhí)行步驟S208。
依據(jù)步驟S202中的描述,本地緩存數(shù)據(jù)庫(kù)中保存有已掃描文件的特征信息,在本實(shí)施例中已掃描文件的含義是之前進(jìn)行過掃描,對(duì)于待掃描文件來說,其也有可能在此次掃描之前進(jìn)行過掃描,對(duì)于此次掃描而言該文件為待掃描文件,對(duì)于下次掃描而言該文件為已掃描文件。
在步驟S203中需要判斷本地緩存數(shù)據(jù)庫(kù)中是否存在該待掃描文件的已掃描特征信息,如果本地緩存數(shù)據(jù)庫(kù)中存在該待掃描文件的已掃描特征信息,說明該文件在此次掃描之前進(jìn)行過掃描,執(zhí)行步驟S204解析所述已掃描特征信息得到已掃描屬性信息;如果本地緩存數(shù)據(jù)庫(kù)中不存在該待掃描文件的已掃描特征信息,說明該待掃描文件在此次掃描之前沒有進(jìn)行過掃描,執(zhí)行步驟S207通過所述當(dāng)前屬性信息計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。這樣第一次掃描的文件計(jì)算得到的特征信息就作為已掃描特征信息存儲(chǔ)到緩存數(shù)據(jù)庫(kù)中了,該文件進(jìn)行再次掃描的時(shí)候,就可以從緩存數(shù)據(jù)庫(kù)中找到該文件的已掃描特征信息了。
S204,解析所述已掃描特征信息得到已掃描屬性信息。
已掃描特征信息包含屬性信息和特征值,在步驟S204中解析已掃描特征信息就可以得到已掃描屬性信息,也就是文件的大小、文件的最后修改時(shí)間和文件的創(chuàng)建時(shí)間,這些已掃描屬性信息是存儲(chǔ)在緩存數(shù)據(jù)庫(kù)中的。
S205,判斷所述已掃描屬性信息與所述當(dāng)前屬性信息是否一致,若一致,執(zhí)行步驟 S206,若不一致,則執(zhí)行步驟S208。
將步驟S201中獲取的待掃描文件的當(dāng)前屬性信息和步驟S204中得到的已掃描屬性信息進(jìn)行比對(duì),判斷上述當(dāng)前屬性信息和已掃描屬性信息是否一致,具體地,判斷上述當(dāng)前屬性信息和已掃描屬性信息包含的文件的大小是否一致、文件的最后修改時(shí)間是否一致、文件的創(chuàng)建時(shí)間是否一致。只有上述文件的大小、文件的最后修改時(shí)間和文件的創(chuàng)建時(shí)間三者都一致,才判定已掃描屬性信息與當(dāng)前屬性信息一致,只要上述三者有一者不一致, 都判定已掃描屬性信息與當(dāng)前屬性信息不一致。
S206,判斷所述待掃描文件的已掃描特征信息是否包含無效標(biāo)志,若不包含無效標(biāo)志,則執(zhí)行步驟S207,若包含無效標(biāo)志,則執(zhí)行步驟S208。
需要說明的是,即使步驟S205中判斷已掃描屬性信息與所述當(dāng)前屬性信息包含的文件的大小一致、文件的最后修改時(shí)間一致和文件的創(chuàng)建時(shí)間都一致,也不能確定文件沒有進(jìn)行過修改。因?yàn)槲募淖詈笮薷臅r(shí)間和文件的創(chuàng)建時(shí)間是可以修改的,如果文件內(nèi)容發(fā)生變化而文件的大小相同,且文件的最后修改時(shí)間及文件的創(chuàng)建時(shí)間也改為相同,步驟S205中就會(huì)得到已掃描屬性信息與所述當(dāng)前屬性信息一致的結(jié)果,而很明顯文件內(nèi)容已經(jīng)發(fā)生了變化,因此本實(shí)施例監(jiān)控所述待掃描文件,當(dāng)所述待掃描文件進(jìn)行修改操作時(shí), 對(duì)所述本地緩存數(shù)據(jù)庫(kù)中待掃描文件的已掃描特征信息設(shè)置無效標(biāo)志。也就是說,一旦文件發(fā)生了修改操作,例如,寫操作、或者屬性進(jìn)行了修改,就對(duì)本地緩存數(shù)據(jù)庫(kù)中存儲(chǔ)的待掃描文件的已掃描特征信息設(shè)置一個(gè)無效標(biāo)志,代表該已掃描特征信息已經(jīng)失效,下次進(jìn)行掃描的時(shí)候,需要執(zhí)行步驟S208,通過所述當(dāng)前屬性信息重新計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。
S207,讀取所述已掃描特征信息作為所述待掃描文件的當(dāng)前特征信息。
當(dāng)所述已掃描屬性信息與所述當(dāng)前屬性信息一致,且待掃描文件的已掃描特征信息不包含無效標(biāo)志的時(shí)候,直接讀取緩存數(shù)據(jù)庫(kù)中的已掃描特征信息作為所述待掃描文件的當(dāng)前特征信息,而不需要再通過當(dāng)前屬性信息重新進(jìn)行特征值的計(jì)算,節(jié)省了獲取特征值的時(shí)間,其中文件特征值等內(nèi)容描述信息只占整個(gè)文件的很小一部分,當(dāng)用戶端掃描文件內(nèi)容描述信息部分時(shí),所耗費(fèi)時(shí)間遠(yuǎn)遠(yuǎn)小于掃描整個(gè)文件的時(shí)間,從而節(jié)省了文件掃描所需的時(shí)間,進(jìn)而加速了文件掃描的速度。
S208,通過所述當(dāng)前屬性信息計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。
當(dāng)所述已掃描屬性信息與所述當(dāng)前屬性信息不一致,或者待掃描文件的已掃描特征信息包含無效標(biāo)志的時(shí)候,說明該文件進(jìn)行了修改操作,因此不能直接讀取緩存數(shù)據(jù)庫(kù)中的已掃描特征信息作為所述待掃描文件的當(dāng)前特征信息,而需要通過所述當(dāng)前屬性信息計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。
當(dāng)然,如果步驟S203中判斷本地緩存數(shù)據(jù)庫(kù)中不存在所述待掃描文件的已掃描特征信息,也需要通過所述當(dāng)前屬性信息計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。
需要說明的是,即使步驟S205中判斷已掃描屬性信息與所述當(dāng)前屬性信息包含的文件的大小一致、文件的最后修改時(shí)間一致和文件的創(chuàng)建時(shí)間都一致,也不能確定文件沒有進(jìn)行過修改。因?yàn)槲募淖詈笮薷臅r(shí)間和文件的創(chuàng)建時(shí)間是可以修改的,如果文件內(nèi)容發(fā)生變化而文件的大小相同,且文件的最后修改時(shí)間及文件的創(chuàng)建時(shí)間也改為相同,步驟S205中就會(huì)得到已掃描屬性信息與所述當(dāng)前屬性信息一致的結(jié)果,而很明顯文件內(nèi)容已經(jīng)發(fā)生了變化。
因此在實(shí)施例一的基礎(chǔ)上,本實(shí)施例二監(jiān)控所述待掃描文件,當(dāng)所述待掃描文件進(jìn)行修改操作時(shí),對(duì)所述本地緩存數(shù)據(jù)庫(kù)中待掃描文件的已掃描特征信息設(shè)置無效標(biāo)志。 也就是說,一旦文件發(fā)生了修改操作,例如,寫操作、或者屬性進(jìn)行了修改,就對(duì)本地緩存數(shù)據(jù)庫(kù)中存儲(chǔ)的待掃描文件的已掃描特征信息設(shè)置一個(gè)無效標(biāo)志,代表該已掃描特征信息已經(jīng)失效,下次進(jìn)行掃描的時(shí)候,需要執(zhí)行步驟S208通過所述當(dāng)前屬性信息重新計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。 避免了文件內(nèi)容發(fā)生變化而文件的大小相同,且文件的最后修改時(shí)間及文件的創(chuàng)建時(shí)間也改為相同的情況下,如果只判斷已掃描屬性信息與當(dāng)前屬性信息一致,就直接讀取緩存數(shù)據(jù)庫(kù)中的已掃描特征信息作為所述待掃描文件的當(dāng)前特征信息的錯(cuò)誤操作。
需要說明的是,對(duì)于前述的方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本申請(qǐng)并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本申請(qǐng),某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉, 說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作并不一定是本申請(qǐng)所必需的。
實(shí)施例三
參照?qǐng)D3,示出了本發(fā)明實(shí)施例的一種文件掃描裝置的結(jié)構(gòu)框圖,本實(shí)施例具體可以包括以下模塊
屬性獲取模塊301,適于獲取待掃描文件的當(dāng)前屬性信息。
本實(shí)施例中上述屬性獲取模塊301包括
路徑讀取子模塊,適于讀取待掃描文件的路徑;
信息獲取子模塊,適于根據(jù)所述待掃描文件的路徑獲取待掃描文件的當(dāng)前屬性信肩、O
具體地,路徑讀取子模塊可以通過遍歷待掃描文件目錄,從所述待掃描文件目錄中提取待掃描文件的路徑,然后信息獲取子模塊可以通過待掃描文件的路徑找到待掃描文件,繼而讀取待掃描文件的當(dāng)前屬性信息。本實(shí)施例中待掃描文件的當(dāng)前屬性信息包括文件的大小、文件的最后修改時(shí)間和文件的創(chuàng)建時(shí)間。
例如,路徑讀取子模塊獲取的待掃描文件的路徑為C:\program files\msngaming zone\windows\rvsezm. exe,信息獲取子模塊依據(jù)此路徑,就可以從C盤中找到待掃描文件 rvsezm. exe,然后讀取待掃描文件的當(dāng)前屬性信息,具體包括文件的大小41. 5KB、文件的最后修改時(shí)間2009年8月10日,10:11:21和/或文件的創(chuàng)建時(shí)間2004年8月17日, 20:00:00。
判斷模塊302,適于訪問本地緩存數(shù)據(jù)庫(kù),判斷所述本地緩存數(shù)據(jù)庫(kù)中是否存在所述待掃描文件的已掃描特征信息;若存在,則解析所述已掃描特征信息得到已掃描屬性信息,并判斷所述已掃描屬性信息與所述當(dāng)前屬性信息是否一致。
本地緩存數(shù)據(jù)中保存有已掃描文件的特征信息,具體的,所述特征信息包括屬性信息和特征值,屬性信息包括上述文件的大小、文件的最后修改時(shí)間和文件的創(chuàng)建時(shí)間,特征值通過屬性信息計(jì)算得到,例如通過文件的大小、文件的最后修改時(shí)間和文件的創(chuàng)建時(shí)間計(jì)算出全文MD5,SHAl等特征值。
在本實(shí)施例中已掃描文件的含義是之前進(jìn)行過掃描,對(duì)于待掃描文件來說,其也有可能在此次掃描之前進(jìn)行過掃描,對(duì)于此次掃描而言該文件為待掃描文件,對(duì)于下次掃描而言該文件為已掃描文件。
判斷模塊302需要判斷本地緩存數(shù)據(jù)庫(kù)中是否存在該待掃描文件的已掃描特征信息,如果本地緩存數(shù)據(jù)庫(kù)中存在該待掃描文件的已掃描特征信息,說明該文件在此次掃描之前進(jìn)行過掃描,因此解析所述已掃描特征信息得到已掃描屬性信息,并判斷所述已掃描屬性信息與所述當(dāng)前屬性信息是否一致;若一致,則進(jìn)入讀取模塊303,若不一致,則進(jìn)入計(jì)算模塊304。
本實(shí)施例中待掃描文件的已掃描特征信息包括屬性信息和特征值,所述特征值通過所述屬性信息計(jì)算得到。判斷模塊302解析已掃描特征信息就可以得到已掃描屬性信息,也就是可以得到文件的大小、文件的最后修改時(shí)間和文件的創(chuàng)建時(shí)間,這些已掃描屬性信息是存儲(chǔ)在緩存數(shù)據(jù)庫(kù)中的。
判斷模塊302將屬性獲取模塊301獲取的待掃描文件的當(dāng)前屬性信息和訪問本地緩存數(shù)據(jù)庫(kù)得到的已掃描屬性信息進(jìn)行比對(duì),判斷上述當(dāng)前屬性信息和已掃描屬性信息是否一致,具體地,判斷上述當(dāng)前屬性信息和已掃描屬性信息包含的文件的大小是否一致、文件的最后修改時(shí)間是否一致、文件的創(chuàng)建時(shí)間是否一致。只有上述文件的大小、文件的最后修改時(shí)間和文件的創(chuàng)建時(shí)間三者都一致,才判定已掃描屬性信息與當(dāng)前屬性信息一致,只要上述三者有一者不一致,都判定已掃描屬性信息與當(dāng)前屬性信息不一致。
讀取模塊303,適于當(dāng)所述已掃描屬性信息與所述當(dāng)前屬性信息一致時(shí),讀取所述已掃描特征信息作為所述待掃描文件的當(dāng)前特征信息。
讀取模塊303當(dāng)所述已掃描屬性信息與所述當(dāng)前屬性信息一致的時(shí)候,直接讀取緩存數(shù)據(jù)庫(kù)中的已掃描特征信息作為所述待掃描文件的當(dāng)前特征信息,而不需要再通過當(dāng)前屬性信息重新進(jìn)行特征值的計(jì)算,節(jié)省了獲取特征值的時(shí)間,從而節(jié)省了文件掃描所需的時(shí)間,進(jìn)而加速了文件掃描的速度。
計(jì)算模塊304,適于當(dāng)所述已掃描屬性信息與所述當(dāng)前屬性信息不一致時(shí),通過所述當(dāng)前屬性信息計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。
當(dāng)所述已掃描屬性信息與所述當(dāng)前屬性信息不一致的時(shí)候,說明該文件很有可能進(jìn)行了修改,因此不能直接讀取緩存數(shù)據(jù)庫(kù)中的已掃描特征信息作為所述待掃描文件的當(dāng)前特征信息,而需要通過計(jì)算模塊304計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。這樣第一次掃描的文件計(jì)算得到的特征信息就作為已掃描特征信息存儲(chǔ)到緩存數(shù)據(jù)庫(kù)中了,該文件進(jìn)行之后再進(jìn)行掃描的時(shí)候, 就可以從緩存數(shù)據(jù)庫(kù)中找到該文件的已掃描特征信息了。
在本實(shí)施例的一個(gè)優(yōu)選實(shí)施例中,上述計(jì)算模塊304還適于當(dāng)所述本地緩存數(shù)據(jù)庫(kù)中不存在所述待掃描文件的已掃描特征信息時(shí),通過所述當(dāng)前屬性信息計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。
當(dāng)然,如果判斷模塊302判斷本地緩存數(shù)據(jù)庫(kù)中不存在所述待掃描文件的已掃描特征信息,也需要通過計(jì)算模塊304計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。
對(duì)于裝置實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見圖I方法實(shí)施例的部分說明即可。
實(shí)施例四
參照?qǐng)D4,示出了本發(fā)明實(shí)施例的另一種文件掃描裝置的結(jié)構(gòu)框圖,本實(shí)施例具體可以包括以下模塊
屬性獲取模塊401,適于獲取待掃描文件的當(dāng)前屬性信息。
本實(shí)施例中上述屬性獲取模塊401包括
路徑讀取子模塊,適于讀取待掃描文件的路徑;
信息獲取子模塊,適于根據(jù)所述待掃描文件的路徑獲取待掃描文件的當(dāng)前屬性信肩、O
具體地,路徑讀取子模塊可以通過遍歷待掃描文件目錄,從所述待掃描文件目錄中提取待掃描文件的路徑,然后信息獲取子模塊可以通過待掃描文件的路徑找到待掃描文件,繼而讀取待掃描文件的當(dāng)前屬性信息。本實(shí)施例中待掃描文件的當(dāng)前屬性信息包括文件的大小、文件的最后修改時(shí)間和文件的創(chuàng)建時(shí)間。
例如,路徑讀取子模塊獲取的待掃描文件的路徑為C:\program files\msngaming zone\windows\rvsezm. exe,信息獲取子模塊依據(jù)此路徑,就可以從C盤中找到待掃描文件 rvsezm. exe,然后讀取待掃描文件的當(dāng)前屬性信息,具體包括文件的大小41. 5KB、文件的最后修改時(shí)間2009年8月10日,10:11:21和/或文件的創(chuàng)建時(shí)間2004年8月17日, 20:00:00。
判斷模塊402,適于訪問本地緩存數(shù)據(jù)庫(kù),判斷所述本地緩存數(shù)據(jù)庫(kù)中是否存在所述待掃描文件的已掃描特征信息;若存在,則解析所述已掃描特征信息得到已掃描屬性信息,并判斷所述已掃描屬性信息與所述當(dāng)前屬性信息是否一致。
本地緩存數(shù)據(jù)中保存有已掃描文件的特征信息,具體的,所述特征信息包括屬性信息和特征值,屬性信息包括上述文件的大小、文件的最后修改時(shí)間和文件的創(chuàng)建時(shí)間,特征值通過屬性信息計(jì)算得到,例如通過文件的大小、文件的最后修改時(shí)間和文件的創(chuàng)建時(shí)間計(jì)算出全文MD5,SHAl等特征值。
上述判斷模塊402通過以下子模塊訪問本地緩存數(shù)據(jù)庫(kù)鍵值生成子模塊,適于根據(jù)所述待掃描文件的路徑生成鍵值;
鍵值訪問子模塊,適于依據(jù)所述鍵值訪問本地緩存數(shù)據(jù)庫(kù);
其中,所述本地緩存數(shù)據(jù)庫(kù)以鍵值為訪問索引。
在本實(shí)施例中已掃描文件的含義是之前進(jìn)行過掃描,對(duì)于待掃描文件來說,其也有可能在此次掃描之前進(jìn)行過掃描,對(duì)于此次掃描而言該文件為待掃描文件,對(duì)于下次掃描而言該文件為已掃描文件。
判斷模塊402需要判斷本地緩存數(shù)據(jù)庫(kù)中是否存在該待掃描文件的已掃描特征信息,如果本地緩存數(shù)據(jù)庫(kù)中存在該待掃描文件的已掃描特征信息,說明該文件在此次掃描之前進(jìn)行過掃描,因此解析所述已掃描特征信息得到已掃描屬性信息,并判斷所述已掃描屬性信息與所述當(dāng)前屬性信息是否一致;若一致,則進(jìn)入讀取模塊403,若不一致,則進(jìn)入計(jì)算模塊404。當(dāng)然如果本地緩存數(shù)據(jù)庫(kù)中不存在該待掃描文件的已掃描特征信息,說明該待掃描文件在此次掃描之前沒有進(jìn)行過掃描,也進(jìn)入計(jì)算模塊404通過所述當(dāng)前屬性信息計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。這樣第一次掃描的文件計(jì)算得到的特征信息就作為已掃描特征信息存儲(chǔ)到緩存數(shù)據(jù)庫(kù)中了,該文件進(jìn)行再次掃描的時(shí)候,就可以從緩存數(shù)據(jù)庫(kù)中找到該文件的已掃描特征信息了。
本實(shí)施例中待掃描文件的已掃描特征信息包括屬性信息和特征值,所述特征值通過所述屬性信息計(jì)算得到。判斷模塊402解析已掃描特征信息就可以得到已掃描屬性信息,也就是文件的大小、文件的最后修改時(shí)間和文件的創(chuàng)建時(shí)間,這些已掃描屬性信息是存儲(chǔ)在緩存數(shù)據(jù)庫(kù)中的。
判斷模塊402將屬性獲取模塊401獲取的待掃描文件的當(dāng)前屬性信息和訪問本地緩存數(shù)據(jù)庫(kù)得到的已掃描屬性信息進(jìn)行比對(duì),判斷上述當(dāng)前屬性信息和已掃描屬性信息是否一致,具體地,判斷上述當(dāng)前屬性信息和已掃描屬性信息包含的文件的大小是否一致、文件的最后修改時(shí)間是否一致、文件的創(chuàng)建時(shí)間是否一致。只有上述文件的大小、文件的最后修改時(shí)間和文件的創(chuàng)建時(shí)間三者都一致,才判定已掃描屬性信息與當(dāng)前屬性信息一致,只要上述三者有一者不一致,都判定已掃描屬性信息與當(dāng)前屬性信息不一致。
需要說明的是,即使判斷模塊402判斷已掃描屬性信息與所述當(dāng)前屬性信息包含的文件的大小一致、文件的最后修改時(shí)間一致和文件的創(chuàng)建時(shí)間都一致,也不能確定文件沒有進(jìn)行過修改。因?yàn)槲募淖詈笮薷臅r(shí)間和文件的創(chuàng)建時(shí)間是可以修改的,如果文件內(nèi)容發(fā)生變化而文件的大小相同,且文件的最后修改時(shí)間及文件的創(chuàng)建時(shí)間也改為相同,判斷模塊402中就會(huì)得到已掃描屬性信息與所述當(dāng)前屬性信息一致的結(jié)果,而很明顯文件內(nèi)容已經(jīng)發(fā)生了變化。
因此本實(shí)施例所述裝置還包括
監(jiān)控模塊405,適于監(jiān)控所述待掃描文件,當(dāng)所述待掃描文件進(jìn)行修改操作時(shí),對(duì)所述本地緩存數(shù)據(jù)庫(kù)中待掃描文件的已掃描特征信息設(shè)置無效標(biāo)志。
監(jiān)控模塊監(jiān)控所述待掃描文件,當(dāng)所述待掃描文件進(jìn)行修改操作時(shí),對(duì)所述本地緩存數(shù)據(jù)庫(kù)中待掃描文件的已掃描特征信息設(shè)置無效標(biāo)志。也就是說,一旦文件發(fā)生了修改操作,例如,寫操作、或者屬性進(jìn)行了修改,就對(duì)本地緩存數(shù)據(jù)庫(kù)中存儲(chǔ)的待掃描文件的已掃描特征信息設(shè)置一個(gè)無效標(biāo)志,代表該已掃描特征信息已經(jīng)失效,下次進(jìn)行掃描的時(shí)候,需要進(jìn)入計(jì)算模塊404,通過所述當(dāng)前屬性信息重新計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。
相應(yīng)的,所述判斷模塊402,還適于讀取已掃描特征信息作為所述待掃描文件的當(dāng)前特征信息之前,判斷所述待掃描文件的已掃描特征信息是否包含無效標(biāo)志。
讀取模塊403,還適于所述待掃描文件的已掃描特征信息不包含無效標(biāo)志時(shí),讀取所述已掃描特征信息作為所述待掃描文件的當(dāng)前特征信息。
當(dāng)所述判斷模塊402判斷已掃描屬性信息與所述當(dāng)前屬性信息一致,且待掃描文件的已掃描特征信息不包含無效標(biāo)志的時(shí)候,直接讀取緩存數(shù)據(jù)庫(kù)中的已掃描特征信息作為所述待掃描文件的當(dāng)前特征信息,而不需要再通過當(dāng)前屬性信息重新進(jìn)行特征值的計(jì)算,節(jié)省了獲取特征值的時(shí)間,從而節(jié)省了文件掃描所需的時(shí)間,進(jìn)而加速了文件掃描的速度。
計(jì)算模塊404,還適于所述待掃描文件的已掃描特征信息包含無效標(biāo)志時(shí),通過所述當(dāng)前屬性信息計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。
當(dāng)所述已掃描屬性信息與所述當(dāng)前屬性信息不一致,或者待掃描文件的已掃描特征信息包含無效標(biāo)志的時(shí)候,說明該文件進(jìn)行了修改操作,因此不能直接讀取緩存數(shù)據(jù)庫(kù)中的已掃描特征信息作為所述待掃描文件的當(dāng)前特征信息,而需要通過所述當(dāng)前屬性信息計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。這樣第一次掃描的文件計(jì)算得到的特征信息就作為已掃描特征信息存儲(chǔ)到緩存數(shù)據(jù)庫(kù)中了,該文件進(jìn)行之后再進(jìn)行掃描的時(shí)候,就可以從緩存數(shù)據(jù)庫(kù)中找到該文件的已掃描特征信息了。
當(dāng)然,如果判斷模塊402判斷本地緩存數(shù)據(jù)庫(kù)中不存在所述待掃描文件的已掃描特征信息,也需要通過計(jì)算模塊404計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。
對(duì)于裝置實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見圖2方法實(shí)施例的部分說明即可。
實(shí)施例五
參照?qǐng)D5,示出了本發(fā)明實(shí)施例的一種文件檢測(cè)系統(tǒng)的結(jié)構(gòu)框圖,本實(shí)施例具體可以包括以下模塊
主界面模塊501,適于對(duì)封裝模塊發(fā)起文件掃描操作,并指定待掃描文件;
在本實(shí)施例中主界面模塊501指定的待掃描文件可以是一個(gè)文件,也可以是多個(gè)文件。
封裝模塊502,適于調(diào)用掃描模塊;
掃描模塊503,適于掃描待掃描文件并調(diào)用數(shù)據(jù)庫(kù)操作模塊獲取所述待掃描文件的特征信息;
在本實(shí)施例中掃描模塊503可以調(diào)用數(shù)據(jù)庫(kù)操作模塊504,數(shù)據(jù)庫(kù)操作模塊504獲取所述待掃描文件的特征信息。
數(shù)據(jù)庫(kù)操作模塊504,適于讀取所述待掃描文件的特征信息。
在本實(shí)施例的一個(gè)優(yōu)選實(shí)施例中,所述文件檢測(cè)系統(tǒng)還包括
驅(qū)動(dòng)模塊505,適于監(jiān)控所述待掃描文件,當(dāng)所述待掃描文件進(jìn)行修改操作時(shí),將包含所述待掃描文件進(jìn)行的修改操作的文件修改消息發(fā)送至所述消息服務(wù)模塊;
消息服務(wù)模塊506,適于接收所述驅(qū)動(dòng)模塊發(fā)送的文件修改消息,并將所述文件修改消息發(fā)送至所述數(shù)據(jù)庫(kù)操作模塊;
具體實(shí)現(xiàn)時(shí),消息服務(wù)模塊506可以調(diào)用驅(qū)動(dòng)調(diào)用模塊(圖5未示出)來調(diào)用驅(qū)動(dòng)模塊505得到文件修改消息。
所述數(shù)據(jù)庫(kù)操作模塊504,還適于接收所述消息服務(wù)模塊發(fā)送的文件修改消息,并依據(jù)所述文件修改消息對(duì)該文件對(duì)應(yīng)的數(shù)據(jù)庫(kù)文件設(shè)置無效標(biāo)志。
當(dāng)所述數(shù)據(jù)庫(kù)操作模塊504依據(jù)所述文件修改消息對(duì)該文件對(duì)應(yīng)的數(shù)據(jù)庫(kù)文件設(shè)置無效標(biāo)志后,掃描模塊503將無法成功獲取所述待掃描文件的特征信息,因?yàn)榇藭r(shí)待掃描文件的特征信息已經(jīng)失效,需要重新計(jì)算特征信息,可以參見圖4所示的裝置實(shí)施例的相關(guān)描述。
對(duì)于系統(tǒng)實(shí)施例而言,由于其與裝置實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見圖4裝置實(shí)施例的部分說明即可。
本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。
本領(lǐng)域技術(shù)人員易于想到的是上述各個(gè)實(shí)施例的任意組合應(yīng)用都是可行的,故上述各個(gè)實(shí)施例之間的任意組合都是本申請(qǐng)的實(shí)施方案,但是由于篇幅限制,本說明書在此就不一一詳述了。
在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。 各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對(duì)任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。
在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說明書的理解。
類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此, 遵循具體實(shí)施方式
的權(quán)利要求書由此明確地并入該具體實(shí)施方式
,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的文件掃描裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。
應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中, 不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過同一個(gè)硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序 ??蓪⑦@些單詞解釋為名稱。
權(quán)利要求
1.一種文件掃描方法,包括 獲取待掃描文件的當(dāng)前屬性信息; 訪問本地緩存數(shù)據(jù)庫(kù),判斷所述本地緩存數(shù)據(jù)庫(kù)中是否存在所述待掃描文件的已掃描特征信息; 若存在,則解析所述已掃描特征信息得到已掃描屬性信息,并判斷所述已掃描屬性信息與所述當(dāng)前屬性信息是否一致; 若一致,則讀取所述已掃描特征信息作為所述待掃描文件的當(dāng)前特征信息;若不一致,則通過所述當(dāng)前屬性信息計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。
2.根據(jù)權(quán)利要求I所述的方法,還包括 若所述本地緩存數(shù)據(jù)庫(kù)中不存在所述待掃描文件的已掃描特征信息,則通過所述當(dāng)前屬性信息計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。
3.根據(jù)權(quán)利要求I所述的方法,還包括 監(jiān)控所述待掃描文件,當(dāng)所述待掃描文件進(jìn)行修改操作時(shí),對(duì)所述本地緩存數(shù)據(jù)庫(kù)中待掃描文件的已掃描特征信息設(shè)置無效標(biāo)志。
4.根據(jù)權(quán)利要求3所述的方法,所述讀取已掃描特征信息作為所述待掃描文件的當(dāng)前特征信息之前,還包括 判斷所述待掃描文件的已掃描特征信息是否包含無效標(biāo)志,若不包含無效標(biāo)志,則讀取所述已掃描特征信息作為所述待掃描文件的當(dāng)前特征信息;若包含無效標(biāo)志,則通過所述當(dāng)前屬性信息計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。
5.根據(jù)權(quán)利要求I所述的方法,所述獲取待掃描文件的當(dāng)前屬性信息包括讀取待掃描文件的路徑; 根據(jù)所述待掃描文件的路徑獲取待掃描文件的當(dāng)前屬性信息。
6.根據(jù)權(quán)利要求5所述的方法,所述訪問本地緩存數(shù)據(jù)庫(kù)包括 根據(jù)所述待掃描文件的路徑生成鍵值,并依據(jù)所述鍵值訪問本地緩存數(shù)據(jù)庫(kù);其中,所述本地緩存數(shù)據(jù)庫(kù)以鍵值為訪問索引。
7.根據(jù)權(quán)利要求I所述的方法, 所述待掃描文件的當(dāng)前屬性信息包括文件的大小、文件的最后修改時(shí)間和文件的創(chuàng)建時(shí)間; 所述待掃描文件的已掃描特征信息包括屬性信息和特征值,所述特征值通過所述屬性信息計(jì)算得到。
8.一種文件掃描裝置,包括 屬性獲取模塊,適于獲取待掃描文件的當(dāng)前屬性信息; 判斷模塊,適于訪問本地緩存數(shù)據(jù)庫(kù),判斷所述本地緩存數(shù)據(jù)庫(kù)中是否存在所述待掃描文件的已掃描特征信息;若存在,則解析所述已掃描特征信息得到已掃描屬性信息,并判斷所述已掃描屬性信息與所述當(dāng)前屬性信息是否一致; 讀取模塊,適于當(dāng)所述已掃描屬性信息與所述當(dāng)前屬性信息一致時(shí),讀取所述已掃描特征信息作為所述待掃描文件的當(dāng)前特征信息; 計(jì)算模塊,適于當(dāng)所述已掃描屬性信息與所述當(dāng)前屬性信息不一致時(shí),通過所述當(dāng)前屬性信息計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。
9.根據(jù)權(quán)利要求8所述的裝置,所述計(jì)算模塊還適于當(dāng)所述本地緩存數(shù)據(jù)庫(kù)中不存在所述待掃描文件的已掃描特征信息時(shí),通過所述當(dāng)前屬性信息計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。
10.根據(jù)權(quán)利要求8所述的裝置,還包括 監(jiān)控模塊,適于監(jiān)控所述待掃描文件,當(dāng)所述待掃描文件進(jìn)行修改操作時(shí),對(duì)所述本地緩存數(shù)據(jù)庫(kù)中待掃描文件的已掃描特征信息設(shè)置無效標(biāo)志。
11.根據(jù)權(quán)利要求10所述的裝置,所述判斷模塊還適于讀取已掃描特征信息作為所述待掃描文件的當(dāng)前特征信息之前,判斷所述待掃描文件的已掃描特征信息是否包含無效標(biāo)志; 所述讀取模塊還適于所述待掃描文件的已掃描特征信息不包含無效標(biāo)志時(shí),讀取所述已掃描特征信息作為所述待掃描文件的當(dāng)前特征信息; 所述計(jì)算模塊還適于所述待掃描文件的已掃描特征信息包含無效標(biāo)志時(shí),通過所述當(dāng)前屬性信息計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。
12.根據(jù)權(quán)利要求8所述的裝置,所述屬性獲取模塊包括 路徑讀取子模塊,適于讀取待掃描文件的路徑; 信息獲取子模塊,適于根據(jù)所述待掃描文件的路徑獲取待掃描文件的當(dāng)前屬性信息。
13.根據(jù)權(quán)利要求8所述的裝置, 所述待掃描文件的當(dāng)前屬性信息包括文件的大小、文件的最后修改時(shí)間和文件的創(chuàng)建時(shí)間; 所述待掃描文件的已掃描特征信息包括屬性信息和特征值,所述特征值通過所述屬性信息計(jì)算得到。
14.一種文件檢測(cè)系統(tǒng),包括 主界面模塊,適于對(duì)封裝模塊發(fā)起文件掃描操作,并指定待掃描文件; 封裝模塊,適于調(diào)用掃描模塊; 掃描模塊,適于掃描待掃描文件并調(diào)用數(shù)據(jù)庫(kù)操作模塊獲取所述待掃描文件的特征信息; 數(shù)據(jù)庫(kù)操作模塊,適于讀取所述待掃描文件的特征信息。
15.根據(jù)權(quán)利要求14所述的系統(tǒng),還包括 驅(qū)動(dòng)模塊,適于監(jiān)控所述待掃描文件,當(dāng)所述待掃描文件進(jìn)行修改操作時(shí),將包含所述待掃描文件進(jìn)行的修改操作的文件修改消息發(fā)送至所述消息服務(wù)模塊; 消息服務(wù)模塊,適于接收所述驅(qū)動(dòng)模塊發(fā)送的文件修改消息,并將所述文件修改消息發(fā)送至所述數(shù)據(jù)庫(kù)操作模塊; 所述數(shù)據(jù)庫(kù)操作模塊,還適于接收所述消息服務(wù)模塊發(fā)送的文件修改消息,并依據(jù)所述文件修改消息對(duì)該文件對(duì)應(yīng)的數(shù)據(jù)庫(kù)文件設(shè)置無效標(biāo)志。
全文摘要
本發(fā)明實(shí)施例公開了一種文件掃描方法、文件掃描裝置及文件檢測(cè)系統(tǒng),以解決再次掃描所需時(shí)間比較長(zhǎng)的問題。所述一種文件掃描方法包括獲取待掃描文件的當(dāng)前屬性信息;訪問本地緩存數(shù)據(jù)庫(kù),判斷所述本地緩存數(shù)據(jù)庫(kù)中是否存在所述待掃描文件的已掃描特征信息;若存在,則解析所述已掃描特征信息得到已掃描屬性信息,并判斷所述已掃描屬性信息與所述當(dāng)前屬性信息是否一致;若一致,則讀取所述已掃描特征信息作為所述待掃描文件的當(dāng)前特征信息;若不一致,則通過所述當(dāng)前屬性信息計(jì)算所述待掃描文件的當(dāng)前特征信息,并存入所述本地緩存數(shù)據(jù)庫(kù)作為下次掃描的已掃描特征信息。本發(fā)明可以減少再次掃描時(shí)獲取同一文件特征的時(shí)間,提高了文件掃描的速度。
文檔編號(hào)G06F17/30GK102982121SQ20121045128
公開日2013年3月20日 申請(qǐng)日期2012年11月12日 優(yōu)先權(quán)日2012年11月12日
發(fā)明者劉智鋒, 孔慶龍 申請(qǐng)人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司