專利名稱:以可重復(fù)方式遍歷數(shù)據(jù)的制作方法
以可重復(fù)方式遍歷數(shù)據(jù)背景技術(shù)
隨著存儲單元容量指數(shù)式增長的趨勢,文件系統(tǒng)的大小也以指數(shù)式增長變大。由于文件系統(tǒng)備份工具必需遍歷整個文件系統(tǒng),以便定位并且備份所有需要的文件和目錄, 大文件系統(tǒng)的備份可能花費相當(dāng)長的時間。較長的備份時間還可能意味著在備份處理過程中被中斷的較大風(fēng)險。例如,網(wǎng)絡(luò)備份系統(tǒng)中短暫的網(wǎng)絡(luò)故障或者客戶機或服務(wù)器中任何其它的故障可能造成備份過程中斷。在備份失敗的情況下,典型的備份系統(tǒng)從備份操作中待備份的數(shù)據(jù)集合(例如待備份的一組文件和/或目錄)的起點重新開始備份過程,有時在這里將這樣的集合稱為“保存集合(saveset)”。假定長的備份持續(xù)時間和進(jìn)一步中斷的可能性,在每次中斷之后再開始備份過程可能顯著影響備份系統(tǒng)的性能。
在典型的備份系統(tǒng)或過程中,甚至在包含保存集合的數(shù)據(jù)自中斷以來沒有被修改過的情況下備份操作也無法獲得其停止的位置,這是因為在至少某些情況下無法保證對文件系統(tǒng)的遍歷每次都以相同的順序進(jìn)行。例如,對于相同命令的單獨場合,從給定目錄讀取項目的“readdir”(讀目錄)命令可能以不同的順序返回結(jié)果。因此存在一種需求,保證以可重復(fù)的方式執(zhí)行數(shù)據(jù)遍歷。
在下面的詳細(xì)描述和附圖中公開了本發(fā)明的多個實施例。
圖I說明了備份系統(tǒng)環(huán)境的一個實施例。
圖2說明了文件系統(tǒng)樹形結(jié)構(gòu)的一個實施例。
圖3A說明了備份保存集合的過程的一個實施例。
圖3B說明了以可重復(fù)方式遍歷和備份數(shù)據(jù)的過程的一個實施例。
圖3C說明了建立遍歷列表的過程的一個實施例。
圖3D說明了恢復(fù)中斷的備份操作的過程的一個實施例。
圖3E說明了確定成功寫入備份介質(zhì)的最后文件系統(tǒng)項的過程的一個實施例。
圖3F說明了建立過程前后關(guān)系的過程的一個實施例。
具體實施方式
本發(fā)明可以以多種方式實現(xiàn),包括作為過程、裝置、系統(tǒng)、實體的組合、計算機可讀介質(zhì),例如計算機可讀存儲介質(zhì)或者在光或電通信連接上傳送程序指令的計算機網(wǎng)絡(luò)。在本說明書中,可能將這些實現(xiàn)方式或者本發(fā)明可以采用的任何其它形式稱為技術(shù)。所描述的配置用于執(zhí)行任務(wù)的組件,例如處理器或存儲器,既包括在特定的時間臨時配置用于執(zhí)行任務(wù)的通用組件、也包括制造用于執(zhí)行該任務(wù)的定制組件。一般而言,在本發(fā)明的范圍內(nèi)可以改變所公開過程的步驟順序。
下面給出了本發(fā)明一個或多個實施例的詳細(xì)描述,并且伴隨的
了本發(fā)明的原理。結(jié)合這些實施例對本發(fā)明進(jìn)行描述,但本發(fā)明不局限于任何一個實施例。本發(fā)明的范圍僅由權(quán)利要求限定,并且本發(fā)明包括許多替代、修改和等效形式。在后面的說明中所述的許多特定細(xì)節(jié)是為 了提供對本發(fā)明的徹底理解。提供這些細(xì)節(jié)是為了作為例子,可以根據(jù)權(quán)利要求書實施本發(fā)明而不需要這些特定細(xì)節(jié)中的某些或全部。為了清楚的目的,對本技術(shù)領(lǐng)域中和本發(fā)明相關(guān)的公知的技術(shù)材料沒有詳細(xì)描述,從而不會產(chǎn)生不必要的影響使本發(fā)明晦澀難懂。
公開了以可重復(fù)的方式對層級式數(shù)據(jù)進(jìn)行遍歷。在一個實施例中,在層級式數(shù)據(jù)的第一等級讀取包含至少一部分?jǐn)?shù)據(jù)的項目的列表并且排序為指定的順序用于遍歷的可重復(fù)性。例如,當(dāng)以可重復(fù)方式遍歷文件系統(tǒng)以便執(zhí)行關(guān)于該文件系統(tǒng)或其一部分的備份操作,將每個目錄中的內(nèi)容讀入列表并且排序(例如成為文件名的字母順序)。以所排序列表的順序備份文件系統(tǒng)項(或者其它經(jīng)過處理的數(shù)據(jù))。如果遇到數(shù)據(jù)的第二等級,讀取第二等級中的數(shù)據(jù)并且排序為指定的順序,然后以所排序的順序處理數(shù)據(jù)。如果數(shù)據(jù)的遍歷被中斷,在恢復(fù)操作中以與在中斷的操作中相同的指定順序進(jìn)行讀取、排序和處理,保證如果在中斷操作被中斷的點恢復(fù)處理則不會遺漏數(shù)據(jù)單元,甚至在每個等級的單元是以不同的順序讀取或接收的情況下也是如此。
在一個實施例中,作為備份操作的一部分,當(dāng)文件系統(tǒng)項成功保存到備份介質(zhì)時, 產(chǎn)生備份過程的記錄。這個記錄在此以后可以用于在備份過程中出現(xiàn)故障時可以從最后成功記錄的備份點恢復(fù)備份。在一個實施例中,在備份恢復(fù)操作中一旦找到最后備份點,備份系統(tǒng)或過程重新建立備份操作前后關(guān)系而無需徹底地遍歷文件系統(tǒng)。通過重新建立前后關(guān)系并且從在中斷之前成功并且完全備份的最后文件之后的數(shù)據(jù)單元開始恢復(fù)處理,恢復(fù)被中斷的備份操作。以相同的、可重復(fù)的順序遍歷文件系統(tǒng),保證了在備份介質(zhì)上將不會有文件被遺漏或者重復(fù)存儲。
圖I說明了備份系統(tǒng)環(huán)境的一個實施例。在所示的例子中,客戶機102通過網(wǎng)絡(luò) 106連接到服務(wù)器108。可以存在連接到網(wǎng)絡(luò)的任意數(shù)量的客戶機和服務(wù)器。該網(wǎng)絡(luò)可以是任意的公用或者私有網(wǎng)絡(luò)和/或其組合,包括而不是限制于內(nèi)部互聯(lián)網(wǎng)、局域網(wǎng)、廣域網(wǎng)、 以及連接多個系統(tǒng)和/或在一起的系統(tǒng)組的其它形式??蛻魴C102連接到備份介質(zhì)104。 在某些實施例中,備份介質(zhì)可以是以下存儲介質(zhì)中的一種或多種硬盤、磁帶驅(qū)動器、光學(xué)存儲單元、以及任何非易失性存儲器件??梢源嬖诙嘤谝粋€的備份介質(zhì)。在一個實施例中, 備份介質(zhì)104直接連接到網(wǎng)絡(luò)。在另一個實施例中,備份介質(zhì)104連接到服務(wù)器108。在另一個實施例中,備份介質(zhì)104通過SAN(存儲區(qū)域網(wǎng)絡(luò))連接到客戶機102。備份數(shù)據(jù)庫 110連接到服務(wù)器108。在一個實施例中,備份數(shù)據(jù)庫110包含與一個或多個客戶機和/或服務(wù)器上的數(shù)據(jù)相關(guān)聯(lián)的數(shù)據(jù)。在另一個實施例中,備份數(shù)據(jù)庫110包含與寫入一個或多個備份介質(zhì)的數(shù)據(jù)相關(guān)聯(lián)的數(shù)據(jù)。在另一個實施例中,備份數(shù)據(jù)庫110直接連接到網(wǎng)絡(luò)。在另一個實施例中,備份數(shù)據(jù)庫Iio連接到客戶機102。在另一個實施例中,備份數(shù)據(jù)庫110 是服務(wù)器108和/或客戶機102的一部分。在一個實施例中,客戶機102的備份由服務(wù)器 108配合。服務(wù)器108指令客戶機將數(shù)據(jù)備份到備份介質(zhì)104。當(dāng)數(shù)據(jù)成功寫入備份數(shù)據(jù)時,在備份數(shù)據(jù)庫110上作出記錄。在另一個實施例中,服務(wù)器108與客戶機102上運行的備份代理協(xié)作以調(diào)整備份操作。該備份代理可以由服務(wù)器108進(jìn)行配置。
圖2說明了文件系統(tǒng)樹形結(jié)構(gòu)的一個實施例。在一個實施例中,系統(tǒng)中待備份的一部分?jǐn)?shù)據(jù)(保存集合)可以是整個文件系統(tǒng)或者是文件系統(tǒng)的一部分。在一個實施例中, 對文件系統(tǒng)以可重復(fù)方式進(jìn)行遍歷,以保證任意隨后發(fā)生的在文件系統(tǒng)中任意相同點開始的遍歷以相同的順序執(zhí)行。在所示的例子中,以首先是文件名然后是目錄名的字母順序進(jìn)行遍歷。在其它實施例中,可以使用任何規(guī)范的文件系統(tǒng)項的排序。遍歷從根目錄開始。讀取并排序根目錄的項目。排序后的順序列表包括文件F、目錄I、目錄2、目錄4。以列表中的順序備份與列表中的項目對應(yīng)的數(shù)據(jù)。當(dāng)遇到備份目錄I時,備份過程下降到目錄1,產(chǎn)生的列表包括文件A,并且備份文件A。在已經(jīng)遍歷目錄I之后,遍歷恢復(fù)到根目錄列表的項目上。當(dāng)遇到目錄2時,產(chǎn)生其內(nèi)容的順序列表,按順序包括文件B、文件C、文件D、目錄3。以列表的順序備份與列表的項目對應(yīng)的數(shù)據(jù)。當(dāng)遇到目錄3時,產(chǎn)生對應(yīng)于文件E的列表和備份。由于目錄4為空,備份對應(yīng)于目錄4的項目而沒有任何相關(guān)的文件。
圖3A說明了對保存集合進(jìn)行備份的過程的一個實施例。在所示的例子中,在302 設(shè)定當(dāng)前備份目錄為保存集合的第一級目錄。在一個實施例中,在302設(shè)定當(dāng)前目錄為與文件系統(tǒng)的根目錄相關(guān)聯(lián)。該保存集合可以是預(yù)先配置的、動態(tài)配置的、通過用戶界面指定的、設(shè)定為任意的第一級數(shù)據(jù)的、和/或以某些其它方式確定的。該保存集合可以是任意的層級式數(shù)據(jù)結(jié)構(gòu),例如組織為樹形、目錄、陣列、和/或鏈接表的數(shù)據(jù)。當(dāng)前備份目錄是與該過程當(dāng)前正進(jìn)行備份的數(shù)據(jù)相關(guān)的目錄。當(dāng)前備份目錄可以是預(yù)先配置的、動態(tài)配置的、和 /或通過用戶界面指定的處理數(shù)據(jù)中的任意數(shù)據(jù)點。在一個實施例中,第一級目錄是數(shù)據(jù)的任意分類等級,提到最普通的例如是首先遇到數(shù)據(jù)級。在304,以可重復(fù)方式對保存集合進(jìn)行遍歷和備份。在其它實施例中,使用與304相關(guān)的過程可以以可重復(fù)方式遍歷任意的層級式數(shù)據(jù)。在一個實施例中,與304相關(guān)的過程可能被中止,例如由于中斷。如果在306 確定對保存集合的遍歷和備份由于過程的中止而沒有完成,則過程繼續(xù)到308,在此確定是否可能恢復(fù)被中斷的備份操作。如果備份過程能夠從如在308確定的最后成功備份點恢復(fù)備份,則在310恢復(fù)備份過程。在一個實施例中,如果自最后備份點時刻和/或備份起始時刻以來沒有經(jīng)過規(guī)定的一段時間,備份過程可以從最后成功備份點恢復(fù)。在一個實施例中, 這段時間可以預(yù)先配置和/或動態(tài)配置。在一個實施例中,如果自中止以來保存集合的整體或者部分沒有被修改,備份過程可以從最后成功備份點恢復(fù)。如果在312確定在恢復(fù)的備份過程中恢復(fù)的備份過程是無效的,或者在308確定備份過程無法恢復(fù),則重新開始備份操作(302)。在一個實施例中,如果在中斷之前已經(jīng)被成功保存到備份介質(zhì)的那個最后文件從保存集合中被移除或者自中斷以來已經(jīng)被修改,在312確定所恢復(fù)的備份過程為無效。如果在312確定恢復(fù)的備份過程有效,所恢復(fù)的備份過程繼續(xù),直到在306確定備份操作已經(jīng)完成,在此情況下圖3A的過程結(jié)束,或者在306確定所恢復(fù)的備份過程被中斷,在此情況下重復(fù)308-312。在一個實施例中,如果所恢復(fù)的備份過程在312進(jìn)行有效確定操作之前被中止,備份操作從起點(302)重新開始。
圖3B說明了以可重復(fù)方式遍歷和備份數(shù)據(jù)的過程的一個實施例。圖3B的過程在一個實施例中用于實現(xiàn)圖3A中的304。在所示的例子中,在316建立當(dāng)前備份目錄的遍歷列表。該遍歷列表包括以可重復(fù)順序排序的當(dāng)前目錄中的項目列表。在一個實施例中,該遍歷列表是存儲的。在一個實施例中,該遍歷列表是隨著遍歷和備份過程的繼續(xù)同步建立的。在318,從遍歷列表獲得下一個項目。在一個實施例中,以列表的順序從遍歷列表獲得項目。在另一個實施例中,以可重復(fù)順序從遍歷列表獲得項目,而不是以列表的順序。如果在320確定成功獲得了一個項目(存在于遍歷列表中待處理的項目),并且在322確定這個所獲得的項目不對應(yīng)于目錄,則在324將與這個所獲得項目相關(guān)聯(lián)的文件系統(tǒng)項目備份并作記錄,并且在318從遍歷列表獲得下一個項目。在一個實施例中,文件系統(tǒng)項目在324 保存到備份介質(zhì)。在一個實施例中對備份進(jìn)行記錄,以便于在例如備份操作被中斷的情況下能夠識別保存集合中成功保存到備份介質(zhì)的最后文件。在一個實施例中,備份的日志保存到備份數(shù)據(jù)庫。在一個實施例中,文件名、文件大小、以及從保存集合的起點的偏移量,該偏移量識別文件在保存集合中的位置,如這里所描述的進(jìn)行遍歷。如果在322確定所獲得的項目對應(yīng)于目錄,當(dāng)前備份目錄設(shè)定為與所獲得項目對應(yīng)的目錄,并且在316為這個新的當(dāng)前目錄建立遍歷列表。如果在320確定在遍歷列表已經(jīng)不存在待處理的項目,則在328 確定當(dāng)前備份目錄的備份完成。在一個實施例中,當(dāng)與當(dāng)前目錄相關(guān)的所有要素都已經(jīng)備份時,與當(dāng)前目錄相關(guān)聯(lián)的數(shù)據(jù)被備份和/或記錄。如果在330確定當(dāng)前目錄不是第一級目錄,則在322設(shè)定當(dāng)前目錄為當(dāng)前所完成目錄的父目錄,并且在318從新設(shè)定當(dāng)前目錄的遍歷列表獲得下一個項目。在一個實施例中,第一級目錄是保存集合的根目錄。在一個實施例中,父目錄是與由剛剛完成處理的目錄替代的前一個當(dāng)前備份目錄相對應(yīng)的目錄。在一個實施例中,當(dāng)前備份目錄放置在堆棧數(shù)據(jù)結(jié)構(gòu)中,即隨著當(dāng)前備份目錄變化而向堆棧增加目錄或者從堆棧拿掉目錄。在另一個實施例中,對應(yīng)于當(dāng)前備份目錄的遍歷表也放置在堆棧中。如果在330確定當(dāng)前目錄是第一級目錄,在334指示備份完成。在一個實施例中,334對應(yīng)于圖3A中在306的“完成”判定。在一個實施例中,如果圖3A的過程在過程達(dá)到334之前中止,則遍歷和備份過程沒有完成。在一個實施例中,如果在備份過程中出現(xiàn)錯誤,則遍歷和備份過程沒有完成。在一個實施例中,錯誤包括以下的一個或多個無效的遍歷列表項目、無效的當(dāng)前目錄、無效的數(shù)據(jù)結(jié)構(gòu)、存儲器錯誤、處理錯誤、和/或任何其它與過程相關(guān)的錯誤。在一個實施例中,如果遍歷和備份過程在334作出“完成”判定之前被中止或中斷,則在圖3A的306作出“未完成”的判定。
圖3C說明了建立遍歷列表的過程的一個實施例。圖3C的過程在一個實施例中用于實現(xiàn)圖3B中的316。在所示的例子中,在336獲得當(dāng)前目錄中的所有文件系統(tǒng)項。在一個實施例中,獲得操作包括處理一個或多個“readdir”或者類似的命令。在另一個實施例中,可以使用獲得文件系統(tǒng)項的任何步驟。在一個實施例中,文件系統(tǒng)項存儲在存儲器中。 在338以規(guī)范的順序排序項目。規(guī)范的順序可以基于文件名、修改時間、節(jié)點數(shù)量、建立時間、文件大小、和/或任何其它能夠?qū)ξ募到y(tǒng)項目進(jìn)行排序的文件屬性。在一個實施例中,可以使用任何可重復(fù)的順序來排序列表。在另一個實施例中,以可重復(fù)順序獲得文件系統(tǒng)項,因而不需要排序。在另一個實施例中,不對項目進(jìn)行排序。在一個實施例中,項目放置在列表中。在另一個實施例中,項目列表被保存。
圖3D說明了恢復(fù)被中斷的備份操作的過程的一個實施例。圖3D的過程在一個實施例中用于實現(xiàn)圖3D中的310。在所示的例子中,在340確定成功寫入備份介質(zhì)的最后文件。在342,通過遞歸函數(shù)調(diào)用僅下降到導(dǎo)向最后備份目錄項目的子目錄,借此建立遞歸堆棧(由遞歸過程產(chǎn)生的堆棧項目)和其它的過程前后關(guān)系。在一個實施例中,其它的過程前后關(guān)系包括一個或多個遍歷列表。在其它實施例中,其它的過程前后關(guān)系包括包括過程變量和/或數(shù)據(jù)結(jié)構(gòu)??梢允褂梅沁f歸過程對備份數(shù)據(jù)進(jìn)行遍歷。在一個實施例中,不建立遞歸堆棧。備份數(shù)據(jù)可以不包括子目錄。如果在過程前后關(guān)系建立的過程中,在344確定重新開始點、即與最后備份項目相關(guān)聯(lián)的分量部分或者最后備份項目是無效的,則在350 斷定所恢復(fù)的備份操作是無效的。在一個實施例中,350的結(jié)論與圖3A中312的無效判定相關(guān)聯(lián)。在一個實施例中,由于文件系統(tǒng)的修改,可能無法找到最后備份項目的分量部分或者最后備份項目。如果在344確定最后備份點項目和所有其分量部分都存在,則在346在要備份的下一個文件系統(tǒng)項目處恢復(fù)備份并且在348斷定所恢復(fù)的備份操作是有效的。在一個實施例中,348的結(jié)論與圖3A中312的有效判定相關(guān)聯(lián)。在另一個實施例中,如果在恢復(fù)步驟的過程中出現(xiàn)錯誤,則獲得恢復(fù)操作無效的結(jié)論。
圖3E說明了確定成功寫入備份介質(zhì)的最后文件系統(tǒng)項目的過程的一個實施例。 圖3C的過程在一個實施例中用于實現(xiàn)圖3D中的340。這個例子僅是示例性的??梢允褂萌魏未_定成功寫入備份介質(zhì)的最后文件系統(tǒng)項目的過程。在所示的例子中,在352查詢備份數(shù)據(jù)庫以確定在備份操作被中斷之前成功保存在備份介質(zhì)中的最后“保存集合塊”的最后(即結(jié)尾)偏移量。在一個實施例中,該偏移量與指示偏離于保存集合起點的位置相關(guān)聯(lián),即保存集合的起點的偏移量為零。在一個實施例中,“保存集合塊”是寫入備份介質(zhì)的任何數(shù)據(jù)分組。在一個實施例中,可以通過任何獲得數(shù)據(jù)的過程獲得最后偏移量。在354,查詢文件索引以定位保存在備份介質(zhì)中的內(nèi)容全部位于偏移范圍內(nèi)的最后文件系統(tǒng)項目。在一個實施例中,通過比較文件系統(tǒng)項結(jié)尾相對于參考點的偏移和最后偏移,確定內(nèi)容完全位于最后偏移內(nèi)的最后文件系統(tǒng)項目。在一個實施例中,文件索引包括保存集合中每個項目相對于參考點的偏移信息。在另一個實施例中,根據(jù)在文件備份開始時為文件記錄的起點偏移和文件大小來計算文件的最后偏移信息。在一個實施例中,文件索引是文件系統(tǒng)的一部分。在另一個實施例中,文件索引與備份數(shù)據(jù)庫相關(guān)聯(lián)。
圖3F說明了建立過程前后關(guān)系的過程的一個實施例。圖3F的過程在一個實施例中用于實現(xiàn)圖3D中的342。在所示的例子中,在340接收重新開始點。重新開始點可以是與最后處理的文件系統(tǒng)項目相關(guān)聯(lián)的任意數(shù)據(jù),即對應(yīng)于在相關(guān)的備份操作中斷之前完成保存在備份介質(zhì)中的最后文件的文件系統(tǒng)路徑。在一個實施例中,重新開始點是與如圖3D 中340確定的成功寫入備份介質(zhì)的最后文件系統(tǒng)項目相關(guān)聯(lián)的數(shù)據(jù)。在358,從第一級目錄開始對保存集合進(jìn)行遍歷。在360,獲得被遍歷的當(dāng)前目錄中下一個文件系統(tǒng)項目。如果在362確定所獲得的項目是無效的,則在364作出重新開始點無效的結(jié)論。在一個實施例中,所獲得的項目可能是無效的,因為在當(dāng)前遍歷的目錄中不存在更多的文件系統(tǒng)項目,與重新開始點相關(guān)或?qū)ζ溆绊懙捻椖?、?或重新開始路徑已經(jīng)被改變、移動、或刪除,或者由于文件系統(tǒng)的錯誤。在一個實施例中,在364的結(jié)論與圖3D中344的無效判定相關(guān)聯(lián)。 如果所獲得的項目在362確定是有效的并且在366確定對應(yīng)于重新開始點,則在368作出重新開始點有效的結(jié)論。在一個實施例中,368的結(jié)論與圖3D中344的有效判定相關(guān)聯(lián)。 如果在366確定所獲得的項目不是重新開始點,并且在370確定所獲得的項目是目錄項,則在372確定所獲得的目錄項是否導(dǎo)向重新開始點。在一個實施例中,如果目錄是導(dǎo)向重新開始點的文件系統(tǒng)路徑的一部分,則該目錄導(dǎo)向重新開始點。如果在372確定所獲得的目錄項導(dǎo)向重新開始點,則在374下降到該所獲得的目錄項。下降到該目錄的過程可能不是遞歸過程。在一個實施例中,下降到目錄的過程包括建立遞歸堆棧。在一個實施例中,下降到目錄的過程包括以下的一個或多個建立遍歷列表、備份數(shù)據(jù)、讀取文件系統(tǒng)項目、讀取目錄內(nèi)容、遍歷目錄、以及初始化一個或多個變量和數(shù)據(jù)結(jié)構(gòu)。在360獲得下降目錄中的下一個文件系統(tǒng)項目。如果所獲得的項目在370確定不是目錄或者在372確定不導(dǎo)向重新開始點,則在360獲得當(dāng)前被遍歷的目錄中的下一個文件系統(tǒng)項目。在一個實施例中,以可重復(fù)順序遍歷文件系統(tǒng),即以為每個目錄建立的遍歷列表的順序遍歷文件系統(tǒng)項目。
雖然以上面討論的特定實施例描述了文件系統(tǒng)的遍歷和備份,但這里描述的方法可以應(yīng)用于以可重復(fù)的方式遍歷任何的數(shù)據(jù)結(jié)構(gòu)。
圖3A、3B、3C、3D、3E和3F中所示以及上面描述的過程可以用任何恰當(dāng)?shù)姆绞綄崿F(xiàn),例如一個和多個集成電路和/或其它器件,或者固件、軟件、或其它的。
雖然為了理解清楚的目的描述了前面幾個實施例的一些細(xì)節(jié),但本發(fā)明不局限于所提供的細(xì)節(jié)。存在許多實現(xiàn)本發(fā)明的替代方式。所公開的實施例是示例的而非限制。
權(quán)利要求
1.一種處理數(shù)據(jù)的方法,包括在處理器接收文件系統(tǒng)或其一部分的某個等級中一個或多個文件系統(tǒng)元素的列表;使用所述處理器排序所述列表以獲得排序的列表,其中排序至少部分地基于文件系統(tǒng)元素是文件還是目錄,使得在所述排序的列表中,所有文件被一起編組并且所有目錄被一起編組,并且其中排序包括排序所述等級中的文件系統(tǒng)元素,使得所有文件在所述排序的列表中的所有目錄之前被列出;以及 根據(jù)所述排序的列表的順序備份所述等級中的文件系統(tǒng)元素。
2.如權(quán)利要求I所述的方法,其中獲得包括執(zhí)行讀目錄命令。
3.如權(quán)利要求I所述的方法,其中排序還包括至少部分地基于文件名或目錄名進(jìn)行排序。
4.如權(quán)利要求I所述的方法,其中處理在根目錄開始。
5.如權(quán)利要求I所述的方法,其中 所述列表是第一列表,所述等級是第一等級,并且所述排序的列表是第一排序的列表;以及 如果在根據(jù)所述第一排序的列表的順序備份所述第一等級中的文件系統(tǒng)元素時在所述第一排序的列表中遇到與所述文件系統(tǒng)或其一部分的第二等級對應(yīng)的目錄,則所述方法還包括 暫時停止根據(jù)所述第一排序的列表的順序?qū)λ龅谝坏燃壷械奈募到y(tǒng)元素的備份; 接收所述文件系統(tǒng)或其一部分的第二等級中的一個或多個文件系統(tǒng)元素的第二列表; 至少部分地基于文件系統(tǒng)元素是文件還是目錄來排序所述第二列表,以獲得第二排序的列表;以及 根據(jù)所述第二排序的列表的順序來備份所述第二等級中的文件系統(tǒng)元素。
6.如權(quán)利要求5所述的方法,其中根據(jù)所述第一排序的列表的順序?qū)λ龅谝坏燃壷械奈募到y(tǒng)元素的備份在根據(jù)所述第二排序的列表的順序?qū)λ龅诙燃壷械奈募到y(tǒng)元素的所有元素的備份已經(jīng)完成之后恢復(fù)。
7.如權(quán)利要求I所述的方法,還包括在已經(jīng)備份所述第一排序的列表中的每個文件后保存所述文件的名字、所述文件的大小和自開始處的偏移,所述偏移標(biāo)識要備份的目錄和/或文件的編組內(nèi)所述文件的位置。
8.一種用于處理數(shù)據(jù)的系統(tǒng),包括處理器,配置成 接收文件系統(tǒng)或其一部分的某個等級中一個或多個文件系統(tǒng)元素的列表; 排序所述列表以獲得排序的列表,其中排序至少部分地基于文件系統(tǒng)元素是文件還是目錄,使得在所述排序的列表中,所有文件被一起編組并且所有目錄被一起編組,并且其中排序包括排序所述等級中的文件系統(tǒng)元素,使得所有文件在所述排序的列表中的所有目錄之前被列出;以及 根據(jù)所述排序的列表的順序備份所述等級中的文件系統(tǒng)元素;以及 存儲器,耦合到所述處理器并且配置成向所述處理器提供指令。
9.如權(quán)利要求8所述的系統(tǒng),其中所述處理器還配置成通過至少部分地基于文件名或目錄名進(jìn)行排序而排序。
10.如權(quán)利要求8所述的系統(tǒng),其中 所述列表是第一列表,所述等級是第一等級,并且所述排序的列表是第一排序的列表;以及 如果在根據(jù)所述第一排序的列表的順序備份所述第一等級中的文件系統(tǒng)元素時在所述第一排序的列表中遇到與所述文件系統(tǒng)或其一部分的第二等級對應(yīng)的目錄,則所述處理器還配置成 暫時停止根據(jù)所述第一排序的列表的順序?qū)λ龅谝坏燃壷械奈募到y(tǒng)元素的備份; 接收所述文件系統(tǒng)或其一部分的第二等級中的一個或多個文件系統(tǒng)元素的第二列表; 至少部分地基于文件系統(tǒng)元素是文件還是目錄來排序所述第二列表,以獲得第二排序的列表;以及 根據(jù)所述第二排序的列表的順序來備份所述第二等級中的文件系統(tǒng)元素。
11.如權(quán)利要求10所述的系統(tǒng),其中在根據(jù)所述第二排序的列表的順序?qū)λ龅诙燃壷械奈募到y(tǒng)元素的所有元素的備份已經(jīng)完成之后恢復(fù)根據(jù)所述第一排序的列表的順序?qū)λ龅谝坏燃壷械奈募到y(tǒng)元素的備份。
12.如權(quán)利要求8所述的系統(tǒng),其中所述處理器還配置成在已經(jīng)備份所述第一排序的列表中的每個文件后保存所述文件的名字、所述文件的大小和自開始處的偏移,所述偏移標(biāo)識要備份的目錄和/或文件的編組內(nèi)所述文件的位置。
13.一種用于處理數(shù)據(jù)的計算機程序產(chǎn)品,所述計算機程序產(chǎn)品在計算機可讀存儲介質(zhì)中實施并且包括計算機指令,所述計算機指令用于在處理器接收文件系統(tǒng)或其一部分的某個等級中一個或多個文件系統(tǒng)元素的列表;使用所述處理器排序所述列表以獲得排序的列表,其中排序至少部分地基于文件系統(tǒng)元素是文件還是目錄,使得在所述排序的列表中,所有文件被一起編組并且所有目錄被一起編組,并且其中排序包括排序所述等級中的文件系統(tǒng)元素,使得所有文件在所述排序的列表中的所有目錄之前被列出;以及 根據(jù)所述排序的列表的順序備份所述等級中的文件系統(tǒng)元素。
14.如權(quán)利要求13所述的計算機程序產(chǎn)品,其中用于排序的計算機指令還包括用于至少部分地基于文件名或目錄名進(jìn)行排序的計算機指令。
15.如權(quán)利要求13所述的計算機程序產(chǎn)品,其中 所述列表是第一列表,所述等級是第一等級,并且所述排序的列表是第一排序的列表;以及 如果在根據(jù)所述第一排序的列表的順序備份所述第一等級中的文件系統(tǒng)元素時在所述第一排序的列表中遇到與所述文件系統(tǒng)或其一部分的第二等級對應(yīng)的目錄,則所述計算機程序產(chǎn)品還包括用于以下操作的計算機指令 暫時停止根據(jù)所述第一排序的列表的順序?qū)λ龅谝坏燃壷械奈募到y(tǒng)元素的備份;接收所述文件系統(tǒng)或其一部分的第二等級中的一個或多個文件系統(tǒng)元素的第二列表; 至少部分地基于文件系統(tǒng)元素是文件還是目錄來排序所述第二列表,以獲得第二排序的列表;以及 根據(jù)所述第二排序的列表的順序來備份所述第二等級中的文件系統(tǒng)元素。
16.如權(quán)利要求15所述的計算機程序產(chǎn)品,其中根據(jù)所述第一排序的列表的順序?qū)λ龅谝坏燃壷械奈募到y(tǒng)元素的備份在根據(jù)所述第二排序的列表的順序?qū)λ龅诙燃壷械奈募到y(tǒng)元素的所有元素的備份已經(jīng)完成之后恢復(fù)。
17.如權(quán)利要求13所述的計算機程序產(chǎn)品,還包括用于在已經(jīng)備份所述第一排序的列表中的每個文件后保存所述文件的名字、所述文件的大小和自開始處的偏移的計算機指令,所述偏移標(biāo)識要備份的目錄和/或文件的編組內(nèi)所述文件的位置。
全文摘要
公開了對層級式數(shù)據(jù)的遍歷。接收數(shù)據(jù)的第一等級中項目的第一列表并且以一定順序排序。以排序的第一列表的順序處理第一等級的數(shù)據(jù)。如果在處理過程中遇到數(shù)據(jù)的任何其它等級,接收所遇到等級中項目的另一個列表并且以一定順序排序。以列表的順序處理數(shù)據(jù)。
文檔編號G06F17/30GK102982067SQ20121040338
公開日2013年3月20日 申請日期2006年4月12日 優(yōu)先權(quán)日2005年4月14日
發(fā)明者K.法利, R.賴特邁爾, W.馬魯亞馬 申請人:Emc 公司