文件處理方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,特別涉及一種文件處理方法和裝置。
【背景技術(shù)】
[0002]文件備份作為主機(jī)數(shù)據(jù)備份的重要手段之一,主要是通過執(zhí)行專門的備份作業(yè)(可以理解為程序或者任務(wù)等)實(shí)現(xiàn)的,其中,每一個(gè)備份作業(yè)所涉及的文件范圍主要是由用戶在備份策略中設(shè)置的文件備份清單確定的。然而,由于主機(jī)文件系統(tǒng)的特性,備份策略不僅支持具體的文件名,也允許在文件清單中使用多種不同級(jí)別、不同類型的通配符,用于表示在文件命名上有共性的文件集合。同時(shí),備份策略中的文件清單分為“包含”和“排除”兩部分,主機(jī)通過對(duì)這兩部分清單進(jìn)行集合計(jì)算以后,最終確定需要備份的文件范圍。
[0003]主機(jī)文件清單對(duì)多種通配符的支持簡(jiǎn)化了文件清單的表達(dá),有效減少了備份策略的條目數(shù)量,但同時(shí)也由于通配符的抽象性和復(fù)雜性,增加了文件清單的解析難度,使得對(duì)備份策略的分割、組合和變更等變得難以操作。目前,業(yè)內(nèi)對(duì)于主機(jī)含通配符的文件清單的解析尚無有效的解決方案,只能借助專業(yè)人員憑借經(jīng)驗(yàn)進(jìn)行人工分析,或者是通過讓系統(tǒng)將含通配符的文件名展開,枚舉為明細(xì)的文件清單后,再進(jìn)行進(jìn)一步的處理。然而,由于主機(jī)文件系統(tǒng)中文件數(shù)量龐大,命名錯(cuò)綜復(fù)雜,而且隨著業(yè)務(wù)處理的需要,文件清單往往會(huì)發(fā)生較為頻繁的變化。第一種方法全程需要人工參與,無法實(shí)現(xiàn)自動(dòng)化處理,缺乏可靠性,第二種方法由于操作對(duì)象為具體的文件清單,不僅需要耗費(fèi)大量的系統(tǒng)資源,而且由于輸出結(jié)果條目過多,在實(shí)際應(yīng)用中也存在諸多不便。
[0004]目前,含通配符的文件清單在主機(jī)文件管理中的運(yùn)用非常普遍,例如:批量文件的備份、恢復(fù)、刪除等主要都是基于這類文件清單的,因此,對(duì)含有通配符的文件清單的解析和處理的速度,直接關(guān)系到主機(jī)文件管理的效率,同時(shí)文件清單的解析結(jié)果的可靠性,也將直接影響主機(jī)數(shù)據(jù)的安全性和完整性。
[0005]針對(duì)如何對(duì)含通配符的文件清單進(jìn)行快速和準(zhǔn)確地解析,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實(shí)施例提供了一種文件處理方法,以達(dá)到對(duì)含通配符的文件清單進(jìn)行快速和準(zhǔn)確地解析,從而有效提高文件管理的效率和可靠性的目的,該方法包括:
[0007]獲取需要解析對(duì)比的兩組文件的文件清單;
[0008]將兩組文件的文件清單中含有通配符的文件名進(jìn)行兩兩配對(duì);
[0009]對(duì)兩兩配對(duì)后的文件名進(jìn)行基于有向拓?fù)湫蛄械慕患\(yùn)算,得到交集的候選拓?fù)湫蛄校?br>[0010]將所述候選拓?fù)湫蛄羞€原為含通配符的文件名表達(dá)式,并根據(jù)還原結(jié)果,確定生成該文件名的文件名對(duì)之間的交集關(guān)系;
[0011]對(duì)確定出的各對(duì)文件名之間的交集關(guān)系進(jìn)行匯總合并,以確定出兩組文件的文件清單之間的交集關(guān)系;
[0012]根據(jù)確定的兩組文件的文件清單之間的交集關(guān)系,響應(yīng)于用戶輸入的操作指令對(duì)兩組文件進(jìn)行處理。
[0013]在一個(gè)實(shí)施方式中,根據(jù)還原結(jié)果,確定生成該文件名的文件名對(duì)之間的交集關(guān)系,包括:
[0014]對(duì)還原出的文件名表達(dá)式進(jìn)行合法性檢查;
[0015]根據(jù)合法性檢查的結(jié)果,按照以下規(guī)則確定生成該文件名的文件名對(duì)之間的交集關(guān)系:
[0016]如果還原出的文件名表達(dá)式未能通過合法性檢查,則確定生成該文件名表達(dá)式的文件名對(duì)的交集為空;
[0017]如果還原出的文件名表達(dá)式能通過合法性檢查,且還原出的文件名表達(dá)式與生成該文件名的文件名對(duì)中的一個(gè)文件名完全相同,則確定生成該文件名表達(dá)式的文件名對(duì)之間為包含和被包含關(guān)系;
[0018]如果還原出的文件名表達(dá)式能通過合法性檢查,且與生成該文件名表達(dá)式的文件名對(duì)中的任意一個(gè)文件名都不同,則確定生成該文件名表達(dá)式的文件名對(duì)之間為相交關(guān)系O
[0019]在一個(gè)實(shí)施方式中,對(duì)還原出的文件名表達(dá)式進(jìn)行合法性檢查,包括:
[0020]將還原出的文件名表達(dá)式中的文件名段數(shù)、除去通配符部分的長(zhǎng)度、每段文件名的長(zhǎng)度與預(yù)定的限制規(guī)則進(jìn)行比較;
[0021]如果都滿足限制規(guī)則,則確定通過合法性檢查。
[0022]在一個(gè)實(shí)施方式中,對(duì)兩兩配對(duì)后的文件名進(jìn)行基于有向拓?fù)湫蛄械慕患\(yùn)算,得到交集的候選拓?fù)湫蛄?,包?
[0023]對(duì)兩兩配對(duì)后的文件名中的各對(duì)文件名執(zhí)行如下操作:
[0024]分別構(gòu)建該對(duì)中的兩個(gè)文件名的等價(jià)拓?fù)溆邢驁D;
[0025]對(duì)這兩個(gè)文件名的等價(jià)拓?fù)溆邢驁D進(jìn)行合并,得到合并后的有向圖的所有拓?fù)湫蛄?,添加?quán)值并篩選出合法的序列;
[0026]對(duì)篩選后的拓?fù)湫蛄羞M(jìn)行相鄰節(jié)點(diǎn)的合并處理,直至不能再合并為止,以得到合并后的一個(gè)或多個(gè)交集的候選拓?fù)湫蛄小?br>[0027]本發(fā)明實(shí)施例還提供了一種文件處理裝置,以達(dá)到對(duì)含通配符的文件清單進(jìn)行快速和準(zhǔn)確地解析,從而有效提高文件管理的效率和可靠性的目的,該裝置包括:
[0028]獲取模塊,用于獲取需要解析對(duì)比的兩組文件的文件清單;
[0029]配對(duì)模塊,用于將兩組文件的文件清單中含有通配符的文件名進(jìn)行兩兩配對(duì);
[0030]拓?fù)溆?jì)算模塊,用于對(duì)兩兩配對(duì)后的文件名進(jìn)行基于有向拓?fù)湫蛄械慕患\(yùn)算,得到交集的候選拓?fù)湫蛄校?br>[0031]交集關(guān)系確定模塊,用于將所述候選拓?fù)湫蛄羞€原為含通配符的文件名表達(dá)式,并根據(jù)還原結(jié)果,確定生成該文件名的文件名對(duì)之間的交集關(guān)系;
[0032]合并模塊,用于對(duì)確定出的各對(duì)文件名之間的交集關(guān)系進(jìn)行匯總合并,以確定出兩組文件的文件清單之間的交集關(guān)系;
[0033]處理模塊,用于根據(jù)確定的兩組文件的文件清單之間的交集關(guān)系,響應(yīng)于用戶輸入的操作指令對(duì)兩組文件進(jìn)行處理。
[0034]在一個(gè)實(shí)施方式中,所述交集關(guān)系確定模塊包括:
[0035]合法性檢查單元,用于對(duì)還原出的文件名表達(dá)式進(jìn)行合法性檢查;
[0036]交集判斷單元,用于根據(jù)合法性檢查的結(jié)果,按照以下規(guī)則確定生成該文件名的文件名對(duì)之間的交集關(guān)系:
[0037]如果還原出的文件名表達(dá)式未能通過合法性檢查,則確定生成該文件名表達(dá)式的文件名對(duì)的交集為空;
[0038]如果還原出的文件名表達(dá)式能通過合法性檢查,且還原出的文件名表達(dá)式與生成該文件名的文件名對(duì)中的一個(gè)文件名完全相同,則確定生成該文件名表達(dá)式的文件名對(duì)之間為包含和被包含關(guān)系;
[0039]如果還原出的文件名表達(dá)式能通過合法性檢查,且與生成該文件名表達(dá)式的文件名對(duì)中的任意一個(gè)文件名都不同,則確定生成該文件名表達(dá)式的文件名對(duì)之間為相交關(guān)系O
[0040]在一個(gè)實(shí)施方式中,所述合法性檢查單元包括:
[0041]比較子單元,用于將還原出的文件名表達(dá)式中的文件名段數(shù)、除去通配符部分的長(zhǎng)度、每段文件名的長(zhǎng)度與預(yù)定的限制規(guī)則進(jìn)行比較;
[0042]確定子單元,用于當(dāng)還原出的文件名表達(dá)式中的文件名段數(shù)、除去通配符部分的長(zhǎng)度、每段文件名的長(zhǎng)度都滿足限制規(guī)則的情況下,確定通過合法性檢查。
[0043]在一個(gè)實(shí)施方式中,所述拓?fù)溆?jì)算模塊具體用于對(duì)兩兩配對(duì)后的文件名中的各對(duì)文件名執(zhí)行如下操作:
[0044]分別構(gòu)建該對(duì)中的兩個(gè)文件名的等價(jià)拓?fù)溆邢驁D;
[0045]對(duì)這兩個(gè)文件名的等價(jià)拓?fù)溆邢驁D進(jìn)行合并,得到合并后的有向圖的所有拓?fù)湫蛄校砑訖?quán)值并篩選出合法的序列;
[0046]對(duì)篩選后的拓?fù)湫蛄羞M(jìn)行相鄰節(jié)點(diǎn)的合并處理,直至不能再合并為止,以得到