本發(fā)明涉及一種計(jì)算機(jī)應(yīng)用領(lǐng)域中的災(zāi)備技術(shù),尤其涉及對容災(zāi)數(shù)據(jù)文件的訪問控制列表進(jìn)行備份的方法及裝置。
背景技術(shù):我國信息化建設(shè)日見成效,數(shù)字化數(shù)據(jù)已成為大多數(shù)企事業(yè)單位的寶貴財(cái)富。然而,由于存儲(chǔ)介質(zhì)故障、自然災(zāi)害等原因,常常會(huì)導(dǎo)致數(shù)據(jù)丟失,若不對數(shù)據(jù)進(jìn)行容災(zāi)備份,將給各單位造成不可挽回的嚴(yán)重?fù)p失。因此,數(shù)據(jù)容災(zāi)已成為信息化建設(shè)中非常重要的技術(shù)。數(shù)據(jù)容災(zāi)即通過數(shù)據(jù)備份的方式,將當(dāng)前存儲(chǔ)的內(nèi)容復(fù)制到其它存儲(chǔ)介質(zhì),以保證當(dāng)前存儲(chǔ)介質(zhì)被損壞時(shí),可以從其它存儲(chǔ)介質(zhì)獲取這些數(shù)據(jù),以保證數(shù)據(jù)不被丟失。數(shù)據(jù)容災(zāi)的備份方式主要有文件備份、數(shù)據(jù)庫備份以及其它應(yīng)用備份等。對于文件備份,除備份文件內(nèi)容外,還需要備份文件的訪問控制列表(ACL,AccessControlList)備份。目前主流版本的Windows和Linux操作系統(tǒng)都支持文件ACL。ACL中包含有那些被授權(quán)訪問該文件或者文件夾的所有用戶賬號(hào)、組和計(jì)算機(jī),還包含他們被授予的訪問類型。為了讓一個(gè)用戶訪問某個(gè)文件或文件夾,針對相應(yīng)的用戶賬號(hào)、組,或者該用戶所屬的計(jì)算機(jī),ACL中必須包含一個(gè)對應(yīng)的入口,這樣的入口叫作訪問控制入口(ACE,Accesscontrolentries)。為了讓用戶能夠訪問文件或者文件夾,訪問控制入口必須具有用戶所請求的訪問類型。如果ACL沒有相應(yīng)的ACE存在,操作系統(tǒng)就拒絕該用戶訪問相應(yīng)資源。之前的備份技術(shù)大多只支持文件內(nèi)容備份。然而,隨著個(gè)人與單位對數(shù)據(jù)安全性的要求越來越高,備份ACL也成為數(shù)據(jù)所有者的重要需求。每個(gè)文件都有ACL,如果在備份中為每個(gè)文件都保留一份ACL副本,將 會(huì)在空間上造成很大的開銷。ACL具有繼承的特性,目錄中的文件常常繼承目錄的ACL,子目錄的ACL也會(huì)繼承父目錄的ACL。由此會(huì)在局部產(chǎn)生大量重復(fù)的ACL記錄。如果將這些重復(fù)的ACL僅保存一份副本,可以節(jié)省大量的存儲(chǔ)空間,并且能夠提高備份與恢復(fù)時(shí)的讀寫效率。然而,將重復(fù)的ACL僅保存一份副本,由于涉及到如何建立備份文件與ACL的對應(yīng)關(guān)系,故存在采用何種格式存儲(chǔ),如何設(shè)計(jì)壓縮算法,以及如何解壓還原等一系列問題,其中任何一個(gè)環(huán)節(jié)出現(xiàn)問題都會(huì)引起備份失敗或者備份出的ACL數(shù)據(jù)不可用而無法還原,最終導(dǎo)致無法正確完成ACL的備份與還原功能。因此,現(xiàn)有的災(zāi)備數(shù)據(jù)需要提供一種容災(zāi)數(shù)據(jù)備份的方法及裝置,能夠克服上述難點(diǎn)而將上述重復(fù)的ACL僅保存一份副本,從而節(jié)省大量的存儲(chǔ)空間,并有效地提高備份與恢復(fù)時(shí)的讀寫效率。
技術(shù)實(shí)現(xiàn)要素:本發(fā)明所要解決的技術(shù)問題是提供一種容災(zāi)數(shù)據(jù)文件訪問控制列表備份的方法及裝置,能夠?qū)⑸鲜鲋貜?fù)的ACL僅保存一份副本,以節(jié)省大量的存儲(chǔ)空間。為了解決上述技術(shù)問題,本發(fā)明提供了一種容災(zāi)數(shù)據(jù)文件訪問控制列表備份的方法,包括:在進(jìn)行訪問控制列表備份時(shí),獲取待備份的目錄中的每一文件路徑下的訪問控制列表內(nèi)容,根據(jù)訪問控制列表內(nèi)容生成訪問控制列表特征碼,對連續(xù)具有相同訪問控制列表特征碼只在第一次出現(xiàn)該特征碼時(shí),將相應(yīng)的訪問控制列表內(nèi)容寫入備份文件,同時(shí)生成一個(gè)文件列表,記錄文件路徑及相應(yīng)的訪問控制列表特征碼。進(jìn)一步地,該方法還包括:在進(jìn)行訪問控制列表恢復(fù)時(shí),對文件列表中連續(xù)具有相同的訪問控制列表特征碼只在第一次出現(xiàn)該特征碼時(shí),從備份文件讀取相應(yīng)的訪問控制列表內(nèi)容存入內(nèi)存緩存,然后將該訪問控制列表內(nèi)容分別恢復(fù)至文件列表中相應(yīng) 的文件路徑下所有連續(xù)具有相同特征碼的目標(biāo)文件。進(jìn)一步地,訪問控制列表備份在初始化內(nèi)存緩存后具體包括:遍歷待備份的目錄,得到一個(gè)文件路徑;根據(jù)該文件路徑讀取待備份的所述訪問控制列表內(nèi)容,根據(jù)讀取的訪問控制列表內(nèi)容生成訪問控制列表特征碼;然后將文件路徑和相應(yīng)的訪問控制列表特征碼寫入文件列表;若比較生成的該訪問控制列表特征碼與內(nèi)存緩存中的訪問控制列表特征碼不同,則將包括訪問控制列表特征碼、訪問控制列表長度以及訪問控制列表內(nèi)容的訪問控制列表記錄寫入備份文件,并將控制列表特征碼和訪問控制列表內(nèi)容更新到內(nèi)存緩存;返回遍歷待備份的目錄的步驟,直至到達(dá)文件列表的結(jié)尾為止。進(jìn)一步地,訪問控制列表恢復(fù)在初始化內(nèi)存緩存后具體包括:從文件列表讀取一個(gè)文件路徑及其相應(yīng)的訪問控制列表特征碼;若比較讀取的該訪問控制列表特征碼與內(nèi)存緩存中的訪問控制列表特征碼不同,則先根據(jù)讀取的訪問控制列表特征碼從備份文件中讀取訪問控制列表記錄,并更新到內(nèi)存緩存;然后將內(nèi)存緩存中訪問控制列表特征碼相應(yīng)的訪問控制列表內(nèi)容恢復(fù)至文件路徑所指示的目標(biāo)文件;否則,直接將內(nèi)存緩存中所述訪問控制列表特征碼相應(yīng)的訪問控制列表內(nèi)容恢復(fù)至文件路徑所指示的目標(biāo)文件。進(jìn)一步地,訪問控制列表特征碼的生成,是以一份文件的訪問控制列表內(nèi)容為基礎(chǔ),通過MD5、SHA1的算法,生成一串唯一的編碼,作為文件的訪問控制列表內(nèi)容的識(shí)別標(biāo)識(shí)。為了解決上述技術(shù)問題,本發(fā)明提供了一種容災(zāi)數(shù)據(jù)文件訪問控制列表備份的裝置,包括依次連接的文件列表管理模塊、ACL備份模塊、ACL特征碼生成模塊,還包括內(nèi)存緩存,其中:文件列表管理模塊,用于遍歷待備份的目錄,將該目錄下所有文件路徑的信息傳遞給ACL備份模塊;針對文件路徑上的每個(gè)文件在文件列表中生成 一條文件記錄,以存儲(chǔ)文件路徑和內(nèi)存緩存中的訪問控制列表特征碼;ACL備份模塊,用于根據(jù)文件路徑信息讀取文件的訪問控制列表內(nèi)容,并傳遞給ACL特征碼生成模塊;若判斷ACL特征碼生成模塊生成的訪問控制列表特征碼與內(nèi)存緩存中的訪問控制列表特征碼不同,則更新內(nèi)存緩存中的訪問控制列表特征碼和訪問控制列表內(nèi)容,然后將更新的內(nèi)容連同相應(yīng)的訪問控制列表長度一起作為訪問控制列表記錄寫入備份文件;ACL特征碼生成模塊,用于根據(jù)訪問控制列表內(nèi)容生成訪問控制列表特征碼,并返回給ACL備份模塊;內(nèi)存緩存,用于保存訪問控制列表特征碼和訪問控制列表內(nèi)容。進(jìn)一步地,該裝置還包括與文件列表管理模塊連接的ACL恢復(fù)模塊,其中:內(nèi)存緩存通過ACL特征碼緩存保存訪問控制列表特征碼,通過ACL內(nèi)容緩存保存訪問控制列表內(nèi)容;ACL恢復(fù)模塊,用于從文件列表中逐條讀取文件路徑和訪問控制列表特征碼,并比對內(nèi)存緩存中的訪問控制列表特征碼,若相同,則將ACL內(nèi)容緩存保存的訪問控制列表內(nèi)容恢復(fù)至所述文件路徑所指定的目標(biāo)文件;若不同,則從備份文件中讀取下一條訪問控制列表記錄,將其中訪問控制列表特征碼保存至ACL特征碼緩存,將作為訪問控制列表內(nèi)容保存至ACL內(nèi)容緩存,然后將ACL內(nèi)容緩存保存的訪問控制列表內(nèi)容恢復(fù)至文件路徑所指定的目標(biāo)文件;直至到達(dá)文件列表的結(jié)尾為止。進(jìn)一步地,ACL特征碼生成模塊生成訪問控制列表特征碼,是以一份文件的訪問控制列表內(nèi)容為基礎(chǔ),通過MD5、SHA1的算法,生成一串唯一的編碼,作為文件的訪問控制列表內(nèi)容的識(shí)別標(biāo)識(shí)。本發(fā)明利用ACL具有繼承的特性,備份時(shí)通過ACL的備份文件對連續(xù)重復(fù)的ACL內(nèi)容進(jìn)行壓縮存儲(chǔ);恢復(fù)時(shí)通過文件列表對連續(xù)重復(fù)的ACL內(nèi)容進(jìn)行解壓縮。由此,將這些重復(fù)的ACL僅保存一份副本,從而節(jié)省大量的存儲(chǔ)空間,并有效地提高備份與恢復(fù)時(shí)的讀寫效率。附圖說明圖1為本發(fā)明的容災(zāi)數(shù)據(jù)文件訪問控制列表備份的方法實(shí)施例中文件列表的結(jié)構(gòu);圖2為本發(fā)明的容災(zāi)數(shù)據(jù)文件訪問控制列表備份的方法實(shí)施例中備份文件的結(jié)構(gòu);圖3為圖1所示的文件列表與圖2所示的備份文件中ACL記錄對應(yīng)示意圖;圖4為本發(fā)明的容災(zāi)數(shù)據(jù)文件訪問控制列表備份的裝置實(shí)施例的結(jié)構(gòu)示意圖;圖5為本發(fā)明的容災(zāi)數(shù)據(jù)文件訪問控制列表備份的方法實(shí)施例中備份流程示意圖;圖6為本發(fā)明的容災(zāi)數(shù)據(jù)文件訪問控制列表備份的方法實(shí)施例中恢復(fù)流程示意圖。具體實(shí)施方式以下結(jié)合附圖和優(yōu)選實(shí)施例對本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)地闡述。應(yīng)該理解,以下列舉的實(shí)施例僅用于說明和解釋本發(fā)明,而不構(gòu)成對本發(fā)明技術(shù)方案的限制。為了滿足備份ACL的需要,并且減少備份文件所占空間,提高備份與恢復(fù)效率,本發(fā)明設(shè)計(jì)了一種容災(zāi)數(shù)據(jù)備份的方法及裝置。在進(jìn)行ACL備份時(shí),獲取待備份的目錄中的每一文件路徑下的ACL內(nèi)容,根據(jù)ACL內(nèi)容生成ACL特征碼,對連續(xù)具有相同ACL特征碼只在該特征碼第一次出現(xiàn)時(shí)將相應(yīng)的ACL內(nèi)容寫入備份文件;同時(shí)生成一個(gè)文件列表,記錄文件路徑及相應(yīng)的ACL特征碼。在進(jìn)行ACL恢復(fù)時(shí),對文件列表中連續(xù)具有相同的ACL特征碼,則只在該ACL特征碼第一次出現(xiàn)時(shí)從備份文件讀取相應(yīng)的ACL內(nèi)容存入內(nèi)存緩存,然后將該ACL內(nèi)容分別恢復(fù)至文件列表中相應(yīng)的文件路徑下所有連續(xù)具 有相同特征碼的目標(biāo)文件。其中,文件列表由文件記錄組成,如圖1所示,每條文件記錄包含文件路徑和ACL特征碼。ACL特征碼依據(jù)ACL內(nèi)容生成。以一份文件的ACL內(nèi)容為基礎(chǔ),通過MD5、SHA1或者其它類似算法,生成一串唯一的編碼,作為這份ACL內(nèi)容的識(shí)別標(biāo)識(shí)。如果兩個(gè)文件的ACL內(nèi)容相同,那么它們的ACL特征碼也會(huì)相同;相反,只有兩個(gè)文件的ACL內(nèi)容不同,則它們的ACL特征碼才不同。備份文件由ACL記錄組成,如圖2所示,每項(xiàng)ACL記錄包含ACL特征碼、ACL長度以及ACL內(nèi)容。備份時(shí)通過ACL的備份文件對連續(xù)重復(fù)的ACL內(nèi)容進(jìn)行壓縮存儲(chǔ),即連續(xù)具有相同特征碼的ACL記錄,只在其第一次出現(xiàn)時(shí)寫入備份文件,后續(xù)具有相同特征碼的ACL記錄不寫入備份文件。文件列表中連續(xù)具有相同ACL特征碼的文件記錄,只與備份文件中的一條ACL記錄相對應(yīng),如圖3所示?;謴?fù)時(shí)通過ACL的備份文件對連續(xù)重復(fù)的ACL內(nèi)容進(jìn)行解壓縮恢復(fù),即文件列表中連續(xù)具有相同的特征碼,則只在其第一次出現(xiàn)時(shí)從備份文件讀入內(nèi)存緩存,然后將該ACL內(nèi)容分別恢復(fù)至文件列表中相應(yīng)的文件路徑下所有連續(xù)具有相同特征碼的目標(biāo)文件。本發(fā)明的容災(zāi)數(shù)據(jù)備份的方法實(shí)施例,其備份流程如圖5所示,在初始化ACL特征碼緩存、ACL內(nèi)容緩存后,包括如下步驟:110:遍歷待備份的目錄,得到下一個(gè)文件路徑;按照先文件后目錄的方式遞歸遍歷待備份的目錄。120:根據(jù)文件路徑讀取待備份的ACL內(nèi)容;130:根據(jù)讀取的ACL內(nèi)容生成ACL特征碼;140:比較生成的該ACL特征碼是否與內(nèi)存緩存中的ACL特征碼相同,是則執(zhí)行步驟150,否則執(zhí)行步驟170;150:將文件路徑、ACL特征碼寫入文件列表;160:判斷是否完成目錄的遍歷,是則結(jié)束流程,否則返回步驟110執(zhí)行;170:將ACL記錄寫入備份文件;ACL記錄如圖2所示,包括ACL特征碼、ACL長度以及ACL內(nèi)容。180:將ACL記錄更新到內(nèi)存緩存;轉(zhuǎn)步驟150執(zhí)行。本發(fā)明的容災(zāi)數(shù)據(jù)備份的方法實(shí)施例,其恢復(fù)流程如圖6所示,在初始化ACL特征碼緩存、ACL內(nèi)容緩存后,包括如下步驟:210:從文件列表讀取下一個(gè)文件路徑及其相應(yīng)的ACL特征碼;220:比較該ACL特征碼是否與內(nèi)存緩存中的ACL特征碼相同,是則執(zhí)行步驟230,否則執(zhí)行步驟250;230:將內(nèi)存緩存中該ACL特征碼相應(yīng)的ACL內(nèi)容恢復(fù)至文件路徑所指示的目標(biāo)文件;240:判斷是否到達(dá)文件列表的末尾,是則結(jié)束流程,否則轉(zhuǎn)步驟210執(zhí)行;250:根據(jù)ACL特征碼從備份文件中讀取ACL記錄,并更新到內(nèi)存緩存;返回步驟230執(zhí)行。本發(fā)明針對上述方法實(shí)施例,相應(yīng)地提供了容災(zāi)數(shù)據(jù)備份的裝置實(shí)施例,其結(jié)構(gòu)如圖4所示,包括依次連接的文件列表管理模塊、ACL備份模塊、ACL特征碼生成模塊,還包括內(nèi)存緩存,其中:文件列表管理模塊,用于遍歷待備份的目錄,將該目錄下所有文件路徑信息傳遞給ACL備份模塊;針對文件路徑上的每個(gè)文件在文件列表中生成一條文件記錄,以存儲(chǔ)文件路徑和內(nèi)存緩存中的ACL特征碼;ACL備份模塊,用于根據(jù)文件路徑信息讀取文件的ACL內(nèi)容,并傳遞給ACL特征碼生成模塊;若判斷ACL特征碼生成模塊生成的ACL特征碼與內(nèi)存緩存中的ACL特征碼不同,則更新內(nèi)存緩存中的ACL特征碼和ACL內(nèi)容,然后將ACL記錄寫入備份文件;ACL特征碼生成模塊,用于根據(jù)ACL內(nèi)容生成ACL特征碼,返回給ACL 備份模塊;內(nèi)存緩存,用于通過ACL特征碼緩存保存ACL特征碼,通過ACL內(nèi)容緩存保存ACL內(nèi)容。上述裝置實(shí)施例還包括與文件列表管理模塊連接的ACL恢復(fù)模塊,用于從文件列表中逐條讀取文件路徑和ACL特征碼,并比對內(nèi)存緩存中的ACL特征碼,若相同,則將內(nèi)存緩存中的ACL內(nèi)容恢復(fù)至文件路徑所指定的目標(biāo)文件;若不同,則從備份文件中讀取下一條ACL記錄,將其中的ACL特征碼保存至ACL特征碼的內(nèi)存緩存,將ACL內(nèi)容保存至ACL內(nèi)容的內(nèi)存緩存,然后將內(nèi)存緩存中保存的ACL內(nèi)容恢復(fù)至文件路徑所指定的目標(biāo)文件;直至到達(dá)文件列表結(jié)尾為止。本發(fā)明利用ACL具有繼承的特性,備份ACL時(shí)通過ACL的備份文件對連續(xù)重復(fù)的ACL內(nèi)容進(jìn)行壓縮存儲(chǔ);恢復(fù)ACL時(shí)通過文件列表對連續(xù)重復(fù)的ACL內(nèi)容進(jìn)行解壓縮。由此,將這些重復(fù)的ACL僅保存一份副本,從而節(jié)省大量的存儲(chǔ)空間,并有效地提高備份與恢復(fù)時(shí)的讀寫效率。