減少冗余數據的方法及裝置的制造方法
【技術領域】
[0001]本發明涉及計算機技術領域,具體涉及一種減少冗余數據的方法及裝置。
【背景技術】
[0002]通常情況下,大多數用戶僅了解如何在硬盤等存儲裝置中繼續保留文件,卻不知如何更好地對存儲裝置進行維護,以有效地監控其硬盤的容量。某些情況下,具有存儲裝置的系統會借助一些軟件應用程序執行文件的查找、獲取及其編輯或者文件刪除等維護管理操作,傳統的硬盤文件保存是根據目錄逐個保存文件,這種方式存在一些弊端:首先,若某個硬盤有大量重復文件時,這種保存方式往往占用較大的存儲空間;其次,當備份硬盤中的文件時,若硬盤中保存有大量重復文件,系統將花費較多的時間備份這些重復文件,導致備份時間增加;最后,當硬盤中的文件容量較大時,如果用戶希望從硬盤中清除這些重復的文件,則不得不逐個檢查文件,非常繁瑣。
【發明內容】
[0003]鑒于上述問題,提出了本發明以便提供一種克服上述問題或者至少部分地解決上述問題的減少冗余數據的方法,從而提高硬盤運行效率。
[0004]依據本發明的一個方面,提供一種減少冗余數據的方法,包括:對硬盤中各個分區的所有文件進行遍歷;判斷所述硬盤中是否包含兩個及以上相同的文件:在確定兩個及以上文件大小相同、文件標識不同的前提下,根據兩個及以上文件的校驗值確定兩個及以上文件是否相同;通過創建硬鏈接,將兩個及以上相同的文件合并為一個文件。
[0005]優選的,在所述判斷所述硬盤中是否包括兩個及以上相同的文件之前,還包括:從遍歷的文件中排除用戶級文件;所述判斷所述硬盤中是否包括兩個及以上相同的文件,包括:從非用戶級文件中進行判斷是否包括兩個及以上相同的文件。
[0006]優選的,所述從遍歷的文件中排除用戶級文件,判斷所述硬盤中是否包括兩個及以上相同的文件,包括:預先選定特定類型的文件,僅針對所述特定類型的文件進行判斷是否包括兩個及以上相同的文件;和/或,根據文件的修改和/或創建日期排除預置時間段內最新產生的文件,在排除最新產生的文件之外進行判斷是否包括兩個及以上相同的文件。
[0007]優選的,所述特定類型的文件包括exe文件和/或dll文件。
[0008]優選的,所述兩個及以上文件的校驗值是指兩個及以上文件的哈西值,在根據兩個及以上文件哈西值確定兩個及以上文件是否相同之后,還包括:對于哈西值相同的兩個及以上文件,進一步將兩個及以上文件的完整數據進行二進制比較;根據完整數據比較結果,最終確定兩個及以上文件是否相同。
[0009]優選的,所述通過創建硬鏈接,將兩個及以上相同的文件合并為一個文件,包括:在NTFS文件系統中,通過CreateHardLink指令,將兩個及以上相同文件以硬鏈接方式合并為一個文件。
[0010]—種減少冗余數據的裝置,包括:遍歷單元,用于對硬盤中各個分區的所有文件進行遍歷;判斷單元,用于判斷所述硬盤中是否包含兩個及以上相同的文件:在確定兩個及以上文件大小相同、文件標識不同的前提下,根據兩個及以上文件的校驗值確定兩個及以上文件是否相同;硬鏈接合并單元,用于通過創建硬鏈接,將兩個及以上相同的文件合并為一個文件。
[0011]優選的,所述裝置還包括:用戶級文件排除單元,用于從遍歷的文件中排除用戶級文件;所述判斷單元具體用于,從非用戶級文件中進行判斷是否包括兩個及以上相同的文件。
[0012]優選的,所述用戶級文件排除單元具體用于,預先選定特定類型的文件,排除非特定類型的文件,和/或,根據文件的修改和/或創建日期排除預置時間段內最新產生的文件。
[0013]優選的,所述特定類型的文件包括exe文件和/或dll文件。
[0014]優選的,所述判斷單元具體用于,根據兩個及以上文件的哈西值確定兩個及以上文件是否相同;所述判斷單元還用于,對于哈西值相同的兩個及以上文件,進一步將兩個及以上文件的完整數據進行二進制比較;根據完整數據比較結果,最終確定兩個及以上文件是否相同。
[0015]優選的,所述硬鏈接合并單元具體用于,在NTFS文件系統中,通過CreateHardLink指令,將兩個及以上相同文件以硬鏈接方式合并為一個文件。
[0016]—種基于減少冗余數據的文件管理方法,包括:對硬盤中各個分區的所有文件進行遍歷;判斷所述硬盤中是否包含兩個及以上相同的文件:在確定兩個及以上文件大小相同、文件標識不同的前提下,根據兩個及以上文件的校驗值確定兩個及以上文件是否相同;通過創建硬鏈接,將兩個及以上相同的文件合并為一個文件;維護所述硬鏈接文件與一個或多個文件名的硬鏈接對應關系,在針對所述一個或多個文件名對所述硬鏈接文件進行更新、刪除和/或修改時,通過維護所述硬鏈接對應關系,統一對所述硬鏈接文件進行所述更新、刪除和/或修改的操作。
[0017]優選的,所述硬鏈接對應關系中包括文件鏈接數,所述文件鏈接數對應于所述一個或多個文件名的數量;在針對一個或多個文件名之一進行刪除時,將所述文件鏈接數減一,直到所述文件鏈接數為零時,才對所述硬鏈接文件進行刪除。
[0018]優選的,在對硬鏈接文件進行更新時,將待更新文件的硬鏈接關系修改為更新后文件的硬鏈接關系。
[0019]優選的在針對一個或多個文件名之一進行文件修改時,統一對所述硬鏈接文件進行修改。
[0020]可見,上述方案通過硬鏈接將重復的文件合并為一個文件,可減少硬盤中的冗余數據,節省硬盤空間并提高硬盤運行效率。在本發明的一個優選實施例中,通過排除用戶級文件,可提高文件判斷的速度,并且跳過這些用戶級的特定文件,可以避免產生兼容性問題。在本發明的另一個優選實施例中,通過完整數據比較確定文件是否相同,更為準確,降低誤判的幾率。
[0021]另外,本發明可至少帶來以下幾個方面的優點:(1)節省硬盤空間。同樣的文件,只需要維護硬鏈接關系,不需要進行多重的拷貝,這樣可以節省硬盤空間。(2)重命名文件。重命名文件并不需要打開該文件,只需改動某個目錄項的內容即可。(3)刪除文件。刪除文件只需將相應的目錄項刪除,該文件的鏈接數減1,如果刪除目錄項后該文件的鏈接數為零,這時系統才把真正的文件從磁盤上刪除。(4)文件更新。如果涉及文件更新,例如在Windows系統下,只需要先在WinSxS目錄里面下載好一個新版本,然后修改Windows\System32下面同名文件的硬鏈接關系,從舊版本的硬鏈接指向新版本的硬鏈接,這樣就能夠快速的完成文件的更新工作,而不需要進行文件的復制,速度會明顯提高。(5)卸載補丁。遇到需要補丁卸載的情況,只需要把硬鏈接指向改為舊版本即可,沒有文件替換的問題。而且建立了硬鏈接關系的文件之間的修改是同步的,因此只要有一方被修改了,另一方也會得到修改。
[0022]上述說明僅是本發明技術方案的概述,為了能夠更清楚了解本發明的技術手段,而可依照說明書的內容予以實施,并且為了讓本發明的上述和其它目的、特征和優點能夠更明顯易懂,以下特舉本發明的【具體實施方式】。
【附圖說明】
[0023]通過閱讀下文優選實施方式的詳細描述,各種其他的優點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優選實施方式的目的,而并不認為是對本發明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0024]圖1示出了根據本發明一個實施例的減少冗余數據的方法流程圖;
[0025]圖2示出了根據本發明另一個實施例的減少冗余數據的方法流程圖;
[0026]圖3a_3b示出了根據本發明一個實施例的減少冗余數據的方法中文件硬鏈接示意圖;
[0027]圖4示出了根據本發明一個實施例的減少冗余數據的裝置結構示意圖。
【具體實施方式】
[0028]下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。
[0029]硬盤中往往存在這這樣的情況,二個文件內容完全一致,但是卻分散在不同的位置。比如360網盤跟360衛士其實很多文件都是共同的,這就導致硬盤存放了大量重復文件,降低了硬盤的可用率,造成了極大的浪費。
[°03°] 本領域技術人員了解,NTFS(New Technology File System,新技術文件系統),是WindowsNT環境的文件系統。新技術文件系統是Windows NT家族(如,Windows 2000、Windows XP、Windows Vista、Windows 7和windows 8.1)等的限制級專用的文件系統(操作系統所在的盤符的文件系統必須格式化為NTFS的文件系統,4096簇環境下KNTFS取代了老式的FAT文件系統。NTFS對FAT和HPFS作了若干改進,例如,支持元數據,并且使用了高級數據結構,以便于改善性能、可靠性和磁盤空間利用率,并提供了若干附加擴展功