一种目录过滤方法及设备与流程

文档序号:11134043阅读:279来源:国知局
一种目录过滤方法及设备与制造工艺

本发明涉及计算机技术领域,特别涉及一种目录过滤方法及设备。



背景技术:

在计算机文件系统中,基于目录树结构对文件进行管理,其中,一个目录下属内容包括文件和/或该目录的子目录。在需要对目录树中的部分文件进行删除或复制时,通常采用目录过滤规则对目录树中内容进行过滤,根据过滤结果执行复制操作或删除操作。

包含/排除(INCLUDE/EXCLUDE)过滤规则是一种应用广泛的目录过滤规则。其中,INCLUDE规则项用于指定一个目录的类型为保留INCLUDE,EXCLUDE规则项用于指定一个目录的类型为排除EXCLUDE。

采用INCLUDE/EXCLUDE过滤规则进行目录过滤需要满足如下一般性约束:

(1)一个目录,不能同时被指定为包含INCLUDE和排除EXCLUDE;

(2)如果过滤规则中不存在INCLUDE规则项时,目录树的根目录就是唯一的INCLUDE目录;如果过滤规则中存在INCLUDE规则项时,目录树的根目录为EXCLUDE目录;

(3)如果一个目录没有被指定为INCLUDE或者EXCLUDE,则继承其父目录的INCLUDE或者EXCLUDE属性。

(4)INCLUDE规则项总是优先于EXCLUDE规则项。

现有技术中,在根据上述一般性约束进行目录过滤时,需要对目录树中的每个目录以及文件进行扫描,针对每个目录以及文件进行是否满足过滤条件的判定。由于目录树中通常包括大量的目录以及文件,导致现有的目录过滤方法运算量非常大。



技术实现要素:

本申请提供一种目录过滤方法及设备,用于提供一种高效地目录过滤方式。

第一方面,本申请提供一种目录过滤方法,该目录过滤方法由计算设备执行,该计算设备可以为台式机、便携式电脑、网络服务器、移动手机、平板电脑、无线终端设备、通信设备、嵌入式设备等设备。该方法包括如下步骤:获得至少一个过滤规则项,其中,每个所述过滤规则项用于指定目录树中的一个目录的类型为包含INCLUDE或排除EXCLUDE,每个被指定为INCLUDE的目录为INCLUDE目录,每个被指定为EXCLUDE的目录为EXCLUDE目录;确定所述目录树的根目录到每个所述INCLUDE目录的路径所包含的目录,以及,确定所述根目录到每个所述EXCLUDE目录的路径所包含的目录,确定出的所有目录的集合为特征目录集合;确定所述特征目录集合中未指定类型的目录的类型,其中,所述未指定类型的目录中父目录为所述INCLUDE目录的目录为第一类目录,所述未指定类型的目录中父目录为所述第一类目录的目录为所述第一类目录,所述未指定类型的目录中父目录为所述EXCLUDE目录的目录为第二类目录,所述未指定类型的目录中父目录为所述第二类目录的目录为所述第二类目录;将所述EXCLUDE目录中子孙目录包括INCLUDE目录的目录的类型转化为第三类目录;根据所述特征目录集合中每个目录的类型确定所述目录树中需保留的内容,其中,所述INCLUDE目录自身、所述第一类目录自身、所述第二类目录自身以及所述第三类目录自身为需保留的内容;所述INCLUDE目录的未包含在所述特征目录集合中的第一子目录自身、所述第一子目录下属内容以及所述INCLUDE目录包括的文件为需保留的内容;所述第一类目录的未包含在所述特征目录集合中的第二子目录自身、所述第二子目录下属内容以及所述第一类目录包括的文件为需保留的内容。该第一子目录指所述INCLUDE目录的未包含在所述特征目录集合中的任一子目录,第二子目录指所述第一类目录的未包含在所述特征目录集合中的任一子目录。

上述实现中,计算设备首先根据被目录规则项指定为INCLUDE或EXCLUDE的目录确定出特征目录集合,并确定该特征目录集合中每个目录的类型(如INCLUDE目录、EXCLUDE目录、第一类目录、第二类目录、第三类目录)。然后,根据特征目录集合中目录的类型快速确定出需保留的内容。其中,对于EXCLUDE目录及其下属所有内容均不进行扫描,对于第二类目录、第三类目录下属内容不进行扫描,对于INCLUDE目录、第一类目录只是简单判断其子目录是否属于特征目录集合,且对于不属于特征目录集合的子目录的下属内容不进行扫描。在整个目录过滤过程中,目录树中内容扫描量相对于现有技术方案大幅减小,且对目录及其下属内容是否为需保留内容而进行的判定非常简单,运算量很小。

在一种可选的实现中,所述确定所述特征目录集合中未指定类型的目录的类型,包括:在所述特征目录集合中存在被所述过滤规则项指定为INCLUDE的目录时,确定所述根目录为所述EXCLUDE目录;以及,在所述特征目录集合中不存在被所述过滤规则项指定为INCLUDE的目录时,确定所述根目录为所述INCLUDE目录。

在一种可选的实现中,计算设备将确定出的所述需保留的内容发送至目标端,以实现所述目标端对所述需保留的内容的复制。在本实现中,计算设备在向目标端复制目标树时,首先根据被目录规则项指定为INCLUDE或EXCLUDE的目录确定出特征目录集合,并确定该特征目录集合中每个目录的类型,并根据特征目录集合中目录的类型快速确定出需保留的内容以减少远程复制中的带宽占用以及复制耗时。

第二方面,本申请提供一种目录过滤方法,该方法由计算设备执行,包括如下步骤:获得至少一个过滤规则项,其中,每个所述过滤规则项用于指定目录树中的一个目录的类型为INCLUDE或EXCLUDE,每个被指定为INCLUDE的目录为INCLUDE目录,每个被指定为EXCLUDE的目录为EXCLUDE目录;确定所述目录树的根目录到每个所述INCLUDE目录的路径所包含的目录,以及,确定所述根目录到每个所述EXCLUDE目录的路径所包含的目录,确定出的所有目录的集合为特征目录集合;确定所述特征目录集合的未指定类型的目录中父目录为所述EXCLUDE目录的目录为第二类目录,以及,确定所述未指定类型的目录中父目录为所述第二类目录的目录为所述第二类目录;将所述EXCLUDE目录中子孙目录包括INCLUDE目录的目录的类型转化为第三类目录;根据所述特征目录集合中每个目录的类型确定所述目录树中需删除的内容,其中,所述EXCLUDE目录自身及其下属内容为需删除内容;所述INCLUDE目录的父目录的未包含在所述特征目录集合中的第三子目录自身、所述第三子目录下属内容以及所述INCLUDE目录的父目录包括的文件为需删除的内容;所述第二类目录的父目录的未包含在所述特征目录集合中的第四子目录自身、所述第四子目录下属内容以及所述第二类目录的父目录包括的文件为需删除的内容。

上述实现中,计算设备首先根据被目录规则项指定为INCLUDE或EXCLUDE的目录确定出特征目录集合,并确定该特征目录集合中目录的类型(如INCLUDE目录、EXCLUDE目录、第二类目录、第三类目录)。然后,根据特征目录集合中目录的类型快速确定出需删除的内容。其中,对于ENCLUDE目录下属所有内容均不进行扫描,对于INCLUDE目录、第二类目录目录只是简单判断其父目录的子目录是否属于特征目录集合,且对于不属于特征目录集合的子目录的下属内容不进行扫描。在整个目录过滤过程中,目录树中内容扫描量相对于现有技术方案大幅减小,且对目录及其下属内容是否删除的判定非常简单,运算量很小。

在一种可选的实现中,在所述确定所述特征目录集合的未指定类型的目录中父目录为所述EXCLUDE目录的目录为第二类目录之前,还包括:在所述特征目录集合中存在被所述过滤规则项指定为INCLUDE的目录时,确定所述根目录为所述EXCLUDE目录;以及,在所述特征目录集合中不存在被所述过滤规则项指定为INCLUDE的目录时,确定所述根目录为所述INCLUDE目录。

在一种可选的实现中,所述根据所述特征目录集合中每个目录的类型确定所述目录树中需删除的内容,包括:根据所述特征目录集合中目录间的父子关系形成模板树;在所述模板树中为每个所述INCLUDE目录以及每个所述第二类目录增加一兄弟节点,所述兄弟节点被标记为通配目录;对所述通配目录的父目录在所述目录树中的子目录进行扫描,确定所述通配目录的父目录的未包含在所述特征目录集合中的子目录自身及下属内容、所述通配目录的父目录包括的文件为需删除的内容。上述实现中,根据INCLUDE目录以及第二类目录抽象出通配目录作为其兄弟目录,用于表征INCLUDE目录以及第二类目录可能存在需删除的兄弟目录这一特性,简化了目录过滤方法的算法,提高目录过滤的效率。

第三方面,本申请提供一种目录过滤设备,该设备用于执行上述第一方面或第一方面的任意可能的实现中的方法。具体的,该设备包括用于执行上述第一方面或第一方面的任意可能的实现中的方法的模块。

第四方面,本申请提供一种目录过滤设备,该设备用于执行上述第二方面或第二方面的任意可能的实现中的方法。具体的,该设备包括用于执行上述第二方面或第二方面的任意可能的实现中的方法的模块。

第五方面,本申请提供一种计算设备,包括至少一个处理器,总线,存储器以及至少一个通信接口。该至少一个通信接口用于与其它设备进行通信,该存储器用于存储执行上述第一方面或第一方面的任意可能的实现中的方法的应用程序代码指令,该总线用于实现处理器与该存储器、通信接口的通信。该处理器通过执行存储器中的应用程序代码指令,以执行上述第一方面或第一方面的任意可能的实现中的方法。

第六方面,本申请提供一种计算设备,包括至少一个处理器,总线,存储器以及至少一个通信接口。该至少一个通信接口用于与其它设备进行通信,该存储器用于存储执行上述第二方面或第二方面的任意可能的实现中的方法的应用程序代码指令,该总线用于实现处理器与该存储器、通信接口的通信。该处理器通过执行存储器中的应用程序代码指令,以执行上述第二方面或第二方面的任意可能的实现中的方法。

第七方面,本申请提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现中的方法的指令。

第八方面,本申请提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现中的方法的指令。

本发明在上述各方面提供的实现的基础上,还可以进行进一步组合以提供更多实现。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为现有技术中的目录过滤方法的流程示意图;

图2为本申请实施例中计算设备200的示意图;

图3为本申请实施例中目录过滤方法的流程示意图;

图4为本申请实施例中另一目录过滤方法的流程示意图;

图5为本申请实施例中目录过滤方法的另一流程示意图;

图6a至图6c为本申请实施例对目录树进行目录过滤的示意图;

图7为本申请实施例中目录过滤设备500的示意图;

图8为本申请实施例中目录过滤设备600的示意图。

具体实施方式

为了便于理解本申请实施例对现有技术作出的改进,下面先详细介绍现有技术中采用INCLUDE/EXCLUDE过滤规则进行目录过滤的方法,图1为该方法的流程示意图,包括如下步骤:

步骤101,判断对目录树进行过滤的INCLUDE/EXCLUDE规则项中是否存在INCLUDE规则项。若不存在,转至步骤102;否则,转至步骤103。

步骤102:判断目录树中每一个目录自身以及其祖先目录的集合中是否存在EXCLUDE目录,若不存在,则确定该目录满足过滤条件,否则,确定该目录不满足过滤条件;以及,判断目录树中每一个文件的祖先目录中是否存在EXCLUDE目录,若不存在,则确定该文件满足过滤条件,否则,确定该文件不满足过滤条件。

其中,祖先目录指的是根目录到一目录的路径中,比该目录更靠近根目录的目录,例如,根目录至目录e的路径为“/a/b/c/d/e”,则目录a、目录b、目录c、目录d均为目录e的祖先目录,其中目录d为目录e的父目录。对应的之,目录e为目录a、目录b、目录c、目录d的子孙目录,目录e为目录d的子目录。另外,根目录自然为其余所有目录的祖先目录,任一非根目录均为根目录的子孙目录。

需要说明的是,本申请实施例中“祖先目录”以及“子孙目录”的定义与此处一致。

步骤103:判断目录树中每一个目录自身以及其子孙目录的集合中是否存在INCLUDE目录,若存在,则确定该目录满足过滤条件,否则,转至步骤104;

步骤104:判断该目录的被规则项指定的祖先目录中距其最近的目录是否为INCLUDE目录,若是,则确定该目录满足过滤条件,否则,确定该目录不满足过滤条件;以及,判断该目录树的每一个文件的被规则项指定的祖先目录中距其最近的目录是否为INCLUDE目录,若是,则确定该文件满足过滤条件,否则,确定该文件不满足过滤条件。

可见,在现有技术中采用INCLUDE/EXCLUDE过滤规则进行目录过滤时,需要对目录树的每一个目录以及文件进行检视,扫描量很大;不仅如此,对每一个目录而言,还可能会对其进行多个步骤的判定才能确定其是否满足过滤条件,运算量很大。

为了解决现有技术中基于INCLUDE/EXCLUDE过滤规则进行目录过滤时运算量过大的问题,本申请实施例提供一种目录过滤方法。下面通过附图以及具体实施例对本申请技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。

本申请实施例提供的目录过滤方法由计算设备200执行,图2为计算设备200的示意图。计算设备200包括至少一个处理器201,总线202,存储器203以及至少一个通信接口204。

处理器201可以是通用中央处理器(CPU),微处理器,特定应用集成电路(Application-Specific Integrated Circuit,ASIC),或一个或多个用于控制本发明方案程序执行的集成电路。另外,处理器201可以是处理器元件,也可以是多个处理器元件的统称。

总线202可包括一通路,在上述组件之间传送信息。通信接口204,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(Wireless Local Area Networks,WLAN)等。

存储器203可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器203可以是独立存在,通过总线与处理器201相连接。存储器203也可以和处理器201集成在一起。另外,存储器203可以是一个存储器元件,也可以是多个存储器元件的统称。

其中,存储器203用于存储执行本发明方案的应用程序代码,并由处理器201来控制执行。

上述的计算设备200可以是一个通用计算机设备或者是一个专用计算机设备。在具体实现中,计算设备200可以是台式机、便携式电脑、网络服务器、掌上电脑(Personal Digital Assistant,PDA)、移动手机、平板电脑、无线终端设备、通信设备、嵌入式设备或有图2中类似结构的设备。本发明实施例不限定计算设备200的类型。

图3为本申请实施例提供的目录过滤方法的流程示意图,该方法包括如下步骤:

步骤301:计算设备200获得至少一个过滤规则项,其中,每个过滤规则项用于指定目录树中的一个目录的类型为INCLUDE或EXCLUDE,每个被指定为INCLUDE的目录为INCLUDE目录,每个被指定为EXCLUDE的目录为EXCLUDE目录。

具体的,过滤规则项包括INCLUDE规则项和/或EXCLUDE规则项,其中,INCLUDE规则项用于指定一目录的类型为INCLUDE,EXCLUDE规则项用于指定一目录的类型为EXCLUDE。该至少一个过滤规则项中的每一个规则项分别指定目录树的一个目录的类型为INCLUDE还是EXCLUDE。

本申请实施例中,计算设备200获得该至少一个过滤规则项,具有多种实现方式,包括但不限于:

其一,用户在计算设备200的存储器203中写入配置文件,该配置文件中包括该至少一个过滤规则项,计算设备200的处理器201读取该配置文件,获取该至少一个过滤规则项。

其二,用户在第二设备上创建上述配置文件,第二设备将该配置文件发送给计算设备200,计算设备200通过通信接口204接收该配置文件,处理器201读取该配置文件,获取该至少一个过滤规则项。

需要说明的是,该至少一个过滤规则项除了既包含INCLUDE规则项又包含EXCLUDE规则项之外,还可以只包含INCLUDE规则项,或者,只包含EXCLUDE规则项。

步骤302:计算设备200确定目录树的根目录到每个INCLUDE目录的路径所包含的目录,以及,确定根目录到每个EXCLUDE目录的路径所包含的目录,确定出的所有目录的集合为特征目录集合。

具体的,根目录到INCLUDE目录的路径所包含的目录包括:该INCLUDE目录以及该INCLUDE目录的所有祖先目录。

针对每个INCLUDE目录以及每个EXCLUDE目录,计算设备200在确定其至根目录的路径所包括的目录时,均能确定出至少两个目录。在针对所有INCLUDE目录以及所有EXCLUDE目录均进行上述处理后,确定出的所有目录的集合称为特征目录集合。

该特征目录集合包括INCLUDE目录、EXCLUDE目录以及未指定类型的目录,所谓为指定类型的目录指的是该目录没有被一过滤规则项指定为INCLUDE目录或EXCLUDE目录。例如,假设根目录是“/”,目录e为INCLUDE目录,根目录至目录e的路径为“/a/b/c/d/e”,且目录a、目录b、目录c、目录d均未被过滤规则项指定其类型,则目录a、目录b、目录c、目录d均为特征目录集合中未指定类型的目录。

步骤303:计算设备200确定特征目录集合中未指定类型的目录的类型,其中,未指定类型的目录中父目录为INCLUDE目录的目录为第一类目录,未指定类型的目录中父目录为第一类目录的目录为第一类目录,未指定类型的目录中父目录为EXCLUDE目录的目录为第二类目录,未指定类型的目录中父目录为第二类目录的目录为第二类目录。

以目录1为例,目录1为第一类目录指的是:目录1自身未被过滤规则项指定为INCLUDE或EXCLUDE,且该目录1的被指定为INCLUDE或EXCLUDE的祖先目录中,距离该目录1最近的目录为INCLUDE目录。其中,所谓距离最近,指的是目录间间隔的层级(或,辈分)最小,例如,沿用目录e的路径为“/a/b/c/d/e”,目录d与目录e的距离最近,目录c次之,目录b再次之,目录a与目录e的距离最远。

目录1为第二类目录指的是:目录1自身未被过滤规则项指定为INCLUDE或EXCLUDE,且该目录1的被指定为INCLUDE或EXCLUDE的祖先目录中,距离该目录1最近的目录为EXCLUDE目录。

为了便于说明,本申请实施例中将INCLUDE目录标识为I目录,将EXCLUDE目录标识为E目录,将第一类目录标识为Ix目录,将第二类目录标识为Ex目录。

步骤304:计算设备200将EXCLUDE目录中子孙目录包括INCLUDE目录的目录的类型转化为第三类目录。

具体的,如果EXCLUDE目录的子孙目录中存在INCLUDE目录,由于该INCLUDE目录需要被保留,则作为该INCLUDE目录的祖先目录的EXCLUDE目录是该INCLUDE子孙目录的路径的一部分,需要被保留。

而如果EXCLUDE目录的子孙目录中不存在INCLUDE目录,则该EXCLUDE目录不应当保留。

因此,本申请实施例中,将子孙目录包括INCLUDE目录的EXCLUDE目录的类型转化为第三类目录,以区分上述两种情形。

为了便于说明,本申请实施例中将第三类目录标识为Ie目录。

步骤305:计算设备200根据特征目录集合中每个目录的类型确定目录树中需保留的内容。其中,INCLUDE目录自身、第一类目录自身、第二类目录自身以及第三类目录自身为需保留的内容;INCLUDE目录的未包含在特征目录集合中的第一子目录自身、第一子目录下属内容以及INCLUDE目录包括的文件为需保留的内容;第一类目录的未包含在特征目录集合中的第二子目录自身、第二子目录下属内容以及第一类目录第一类目录自身显然是需保留的内容。

关于第三类目录自身为需保留的内容,在步骤304处已有说明,不再重复。

下面对第二类目录自身为需保留的内容进行说明。

假设目录1为第二类目录,则表明目录1的被指定为INCLUDE或EXCLUDE的祖先目录中,距离目录1最近的目录为EXCLUDE目录(假设为目录2)。由于目录1属于特征目录集合,则表明目录1至少存在一子孙目录被指定为INCLUDE或EXCLUDE,假设目录1的被指定为INCLUDE或EXCLUDE的子孙目录中距离目录1最近的目录为目录3,则目录2与目录3之间的目录均未被目录规则项指定类型。由于目录2为EXCLUDE目录,目录2至目录3之间的目录均未指定类型,目录3继续被指定为EXCLUDE目录是没有意义的,在实际情况中不会存在这一情况,所以,目录3应当为一INCLUDE目录。换言之,第二类目录存在被指定为INCLUDE的子孙目录,由于该第二类目录为该被指定为INCLUDE的子孙目录的路径中的一部分,则需要保留。

对于INCLUDE目录以及第一类目录而言,由于可能包含被指定为EXCLUDE的子孙目录,因此,不能简单认为其下属的所有内容均需保留。

首先,如果INCLUDE目录或第一类目录包括文件,则该文件显然为需保留的内容。

如果INCLUDE目录的子目录不属于特征目录集合,则表明该子目录不存在被指定为EXCLUDE的子孙目录,由于该子目录的父目录被指定为保留INCLUDE,则该子目录以及其下属所有内容均为需保留的内容。与之类似,第一类目录的不属于特征目录集合的子目录及其下属内容均为需保留的内容。

如果该INCLUDE目录或第一类目录的子目录属于特征目录集合,则按照其所对应的类型(I目录、E目录、Ix目录、Ex目录、Ie目录)进行处理。

上述技术方案中,计算设备首先根据被目录规则项指定为INCLUDE或EXCLUDE的目录确定出特征目录集合,并确定该特征目录集合中每个目录的类型(I目录、E目录、Ix目录、Ex目录、Ie目录)。然后,根据特征目录集合中目录的类型快速确定出需保留的内容。其中,对于E目录及其下属所有内容均不进行扫描,对于Ex目录、Ie目录下属内容不进行扫描,对于I目录、Ix目录只是简单判断其子目录是否属于特征目录集合,且对于不属于特征目录集合的子目录的下属内容不进行扫描。在整个目录过滤过程中,目录树中内容扫描量相对于现有技术中步骤101至步骤104的方案大幅减小,且对目录及其下属内容是否保留的判断方式非常简单,运算量很小。

本申请实施例中,目录树的根目录显然是需要保留的内容,因此可以作为默认设定而不再进行判定。

在根目录的子目录未被指定为INCLUDE或EXCLUDE时,由于需要确定这些子目录为第一类目录还是第二类目录,因此,需要确定根目录为INCLUDE目录还是EXCLUDE目录。该确定方式为:在特征目录集合中存在被过滤规则项指定为INCLUDE的目录时,确定根目录为EXCLUDE目录;反之,在特征目录集合中不存在被过滤规则项指定为INCLUDE的目录时,确定根目录为INCLUDE目录。

进一步,根目录的未被指定类型的子目录的类型根据根目录为INCLUDE目录或EXCLUDE目录而确定。即,在根目录为INCLUDE目录时,根目录的未被指定类型的子目录为第一类目录;在根目录为EXCLUDE目录时,根目录的未被指定类型的子目录为第二类目录。

进一步,由于根目录存在被指定为INCLUDE目录的子孙目录,在执行步骤304时,根目录的类型被转化为Ie目录。

在一种可选的实现中,步骤301至步骤304的技术方案可以被用于目录树的远程复制,即计算设备200将目录树中满足过滤规则的内容复制到另一设备。在这种情况下,在步骤305之后,还包括步骤306:计算设备200将确定出的所有需保留的内容发送至目标端,以使目标端对所有需保留的内容进行复制。

具体的,计算设备200可以对需保留的内容根据约定协议进行打包,将打包后的数据发送给目标端,目标端接收数据后,对数据进行对应的解包,进而获得需保留的内容。

计算设备还可以对需保留的内容进行压缩,讲压缩后的内容发送至目标端,以减小带宽占用以及传输耗时。

再者,计算设备200可以在向目标端发送的数据中包含表明需保留的各目录以及文件之间的从属关系的数据,使得目标端能够将需保留的数据恢复为其在目录树的树状结构。

上述技术方案中,计算设备200在向目标端复制目标树时,可以首先通过步骤301至步骤305对目录树中的内容进行筛选,确定出需要复制至目标端的内容,再将确定的内容发送至目标端,能够减少远程复制中的带宽占用以及复制耗时。

在另一种可选的实现中,步骤301至步骤305的方案可以应用于对目录树中的内容进行删除,即,只保留步骤305中确定出的需保留的内容,而将其余内容删除,以实现对目录树中部分内容的快速删除。

本申请实施例还提供另一目录过滤方法,参照图4,该方法包括如下步骤:

步骤401:计算设备200获得至少一个过滤规则项,其中,每个过滤规则项用于指定目录树中的一个目录的类型为INCLUDE或EXCLUDE,每个被指定为INCLUDE的目录为INCLUDE目录,每个被指定为EXCLUDE的目录为EXCLUDE目录;

步骤402:计算设备200确定目录树的根目录到每个INCLUDE目录的路径所包含的目录,以及,确定根目录到每个EXCLUDE目录的路径所包含的目录,确定出的所有目录的集合为特征目录集合;

步骤403:计算设备200确定特征目录集合的未指定类型的目录中父目录为EXCLUDE目录的目录为第二类目录;确定未指定类型的目录中父目录为第二类目录的目录为第二类目录;

步骤404:计算设备200将EXCLUDE目录中子孙目录包括INCLUDE目录的目录的类型转化为第三类目录;

步骤405:计算设备200根据特征目录集合中每个目录的类型确定目录树中需删除的内容,其中,EXCLUDE目录自身及其下属内容为需删除内容;INCLUDE目录的父目录的未包含在特征目录集合中的第三子目录自身、第三子目录下属内容以及INCLUDE目录的父目录包括的文件为需删除的内容;第二类目录的父目录的未包含在特征目录集合中的第四子目录自身、第四子目录下属内容以及第二类目录的父目录包括的文件为需删除的内容。

具体的,上述步骤401至404的实施方式可以参照步骤301至步骤304。

在步骤405中,EXCLUDE目录的子孙目录中不存在INCLUDE目录,所以,EXCLUDE目录自身及其下属内容显然为需删除内容。

下面对步骤405中后两种需删除的内容进行说明。

如果在INCLUDE目录(假设为目录1)的子孙目录中存在被指定为INCLUDE的目录(假设为目录2),且在目录1至目录2的路径中没有任一目录被指定为EXCLUDE,则用于指定目录2的过滤规则项是没有意义的,因为即使不进行这样的指定,目录2均会被保留。所以实际情况中不存在假设的这种情况。即,对于INCLUDE目录而言,在其祖先目录中被确定为INCLUDE目录或EXCLUDE目录的目录中,距离其最近的目录应当是EXCLUDE目录。换言之,INCLUDE目录的父目录为Ie目录或Ex目录。

而对于Ex目录而言,其父目录显然也是Ie目录或Ex目录。

而对于Ie目录或Ex目录而言,是因为作为其被指定为INCLUDE的子孙目录的路径的组成部分得以保留的。因此,如果Ie目录或Ex目录包括文件,则这些文件是需删除内容。

如果Ie目录或Ex目录包括不属于特征目录集合的子目录,则这些不属于特征目录集合的子目录自身及其下属内容均为需删除内容。

上述技术方案中,计算设备首先根据被目录规则项指定为INCLUDE或EXCLUDE的目录确定出特征目录集合,并确定该特征目录集合中目录的类型(I目录、E目录、Ex目录、Ie目录)。然后,根据特征目录集合中目录的类型快速确定出需删除的内容。其中,对于E目录下属所有内容均不进行扫描,对于I目录、Ex目录只是简单判断其父目录的子目录是否属于特征目录集合,且对于不属于特征目录集合的子目录的下属内容不进行扫描。在整个目录过滤过程中,目录树中内容扫描量相对于现有技术中步骤101至步骤104的方案大幅减小,且对目录及其下属内容是否删除的判断方式非常简单,运算量很小。

在一种可选的实现中,计算设备确定未指定类型的目录中父目录为INCLUDE目录的目录为第一类目录,确定未指定类型的目录中父目录为第一类目录的目录为第一类目录。

在另一可选的实现中,计算设备200在确定特征目录集合的未指定类型的目录中父目录为EXCLUDE目录的目录为第二类目录之前,在特征目录集合中存在被过滤规则项指定为INCLUDE的目录时,确定根目录为EXCLUDE目录;以及,在特征目录集合中不存在被过滤规则项指定为INCLUDE的目录时,确定根目录为INCLUDE目录。

在另一可选的实现中,参照图5,步骤405实施时,包括如下步骤:

步骤4051:计算设备200根据特征目录集合中目录间的父子关系形成模板树;

步骤4052:计算设备200在模板树中为每个INCLUDE目录以及每个第二类目录增加一兄弟节点,兄弟节点被标记为通配目录;

步骤4053:计算设备200对通配目录的父目录在目录树中的子目录进行扫描,确定通配目录的父目录的未包含在特征目录集合中的子目录自身及下属内容、通配目录的父目录包括的文件为需删除的内容。

具体的,该模板树由特征目录集合中的目录形成,该模板树中目录间的父子关系与目录树之中的父子关系一致。

不同之处在于,由于I目录以及Ex目录均可能存在不属于特征目录集合且应当被删除的兄弟目录,因此,本申请实施例中根据I目录、Ex目录这一特性,为其增加一兄弟节点,该兄弟节点的类型为通配。

在根据模板树确定目录树中需删除的内容时,该通配目录表示该位置可能存在一需删除的目录,计算设备将在扫描该通配目录在目录树中的所有子目录,其中,该父目录的不属于特征目录集合(或,模板树)的子目录及该子目录所有下属内容均为需删除的内容。

另外,如果通配目录的父目录还包含文件,则该父目录包括的文件为需删除内容。

上述实现中,根据I目录以及Ex目录抽象出通配目录作为其兄弟目录,表征I目录以及Ex目录可能存在需删除的兄弟目录这一特性,简化了目录过滤方法的算法,提高目录过滤的效率。

为了便于说明,下面以具体实例对本申请实施例提供的目录过滤方法予以详细说明。

图6a为目录树的示意图,在该目录树中,A3、B3、C5三个目录被过滤规则项指定为INCLUDE目录,在图6a中标识为“IN”,B5、C3、C7三个目录被目录规则项标识为ENCLUDE目录,在图6a中标识为“EN”。另外,图中F1为B5包括的文件。

首先,根据上述5个被目录规则项标识指定类型的目录构造模板树。

具体的,根目录至C3的路径包括:根目录/、A2、B3、C3,根目录至C5的路径包括:根目录/、A3、B5、C6,根目录至C7的路径包括:根目录/、A3、B6、C7。因此,特征目录集合为:{根目录/、A3、B5、C6、A3、B5、C6、B6、C7}。

由于A3、B3、C5为INCLUDE目录,所以根目录初始被确定为ENCLUDE目录。进而,确定未被指定类型的A2为Ex目录,确定未被指定类型的B62为Ix目录。

又由于根目录/的子孙目录A3、B3、C5为INCLUDE目录,所以根目录/的类型由ENCLUDE转化为Ie。同理,B5目录的类型由ENCLUDE转化为Ie。

根据特征目录集合中目录在原目录树中的父子关系形成图6b所示的模板树。

计算设备200在将图6a所示目录树复制至另一设备时,可以快速确定出需复制的内容。具体的,根目录/、A2、A3、B3、B5、B6、C5这7个目录自身为需复制的内容。INCLUDE目录B3的未包含在特征目录集合中子目录C2自身以及C2下属的内容为需复制的内容;INCLUDE目录A3的子目录均在特征目录集合中,跳过;Ix目录B6的未包含在特征目录集合中子目录C6自身以及C2下属的内容为需复制的内容。通过上述处理,复制至另一设备的目录树如图6c所示。

计算设备200在从图6a所示目录树中删除内容时,可以快速确定出需删除的内容。具体的,ENCLUDE目录C3、C7以及二者下属的内容为需删除的内容。Ex目录A2的父目录为根目录/,根目录的子目录A1不属于特征目录集合,所以目录A1及其下属内容均为需删除内容。INCLUDE目录B3的父目录A2的子目录B2、B4不属于特征目录集合,因此B2、B4自身以及二者下属内容均为需删除内容。INCLUDE目录C5的父目录B5的子目录C4不属于特征目录集合,因此C4以及C4下属内容为需删除内容,B5包括的文件F1为需删除内容。通过上述处理,对目录树内容进行删除,删除处理后的目录树参照图6c。

通过上面的应用实例可以看出,本申请实施例提供的目录过滤方法,只需要对目录树中很少的目录进行扫描,且只需要判断目录是否属于特征目录集合,运算简单。

本申请实施例还提供一种目录过滤设备500,参照图7,目录过滤设备500包括:

获得模块501,用于获得至少一个过滤规则项,其中,每个过滤规则项用于指定目录树中的一个目录的类型为包含INCLUDE或排除EXCLUDE,每个被指定为INCLUDE的目录为INCLUDE目录,每个被指定为EXCLUDE的目录为EXCLUDE目录;

第一确定模块502,用于确定目录树的根目录到每个INCLUDE目录的路径所包含的目录,以及,确定根目录到每个EXCLUDE目录的路径所包含的目录,确定出的所有目录的集合为特征目录集合;

第二确定模块503,用于确定特征目录集合中未指定类型的目录的类型,其中,未指定类型的目录中父目录为INCLUDE目录的目录为第一类目录,未指定类型的目录中父目录为第一类目录的目录为第一类目录,未指定类型的目录中父目录为EXCLUDE目录的目录为第二类目录,未指定类型的目录中父目录为第二类目录的目录为第二类目录;

类型转化模块504,用于将EXCLUDE目录中子孙目录包括INCLUDE目录的目录的类型转化为第三类目录;

第三确定模块505,用于根据特征目录集合中每个目录的类型确定目录树中需保留的内容,其中,INCLUDE目录自身、第一类目录自身、第二类目录自身以及第三类目录自身为需保留的内容;INCLUDE目录的未包含在特征目录集合中的第一子目录自身、第一子目录下属内容以及INCLUDE目录包括的文件为需保留的内容;第一类目录的未包含在特征目录集合中的第二子目录自身、第二子目录下属内容以及第一类目录包括的文件为需保留的内容。

在一种可选的实现中,第二确定模块503还用于:在特征目录集合中存在被过滤规则项指定为INCLUDE的目录时,确定根目录为EXCLUDE目录;以及,在特征目录集合中不存在被过滤规则项指定为INCLUDE的目录时,确定根目录为INCLUDE目录。

在一种可选的实现中,目录过滤设备500还包括:

发送模块506,用于将第三确定模块所确定出的需保留的内容发送至目标端,以实现目标端对需保留的内容的复制。

以上目录过滤设备包含的处理器所执行操作的具体实现方式可以参照图3的实施例的中目录过滤方法的各步骤的实现方式,本申请实施例不再赘述。

本申请实施例还提供一种目录过滤设备600,参照图8,目录过滤设备600包括:

获得模块601,用于获得至少一个过滤规则项,其中,每个过滤规则项用于指定目录树中的一个目录的类型为INCLUDE或EXCLUDE,每个被指定为INCLUDE的目录为INCLUDE目录,每个被指定为EXCLUDE的目录为EXCLUDE目录;

第一确定模块602,用于确定目录树的根目录到每个INCLUDE目录的路径所包含的目录,以及,确定根目录到每个EXCLUDE目录的路径所包含的目录,确定出的所有目录的集合为特征目录集合;

第二确定模块603,用于确定特征目录集合的未指定类型的目录中父目录为EXCLUDE目录的目录为第二类目录,以及,确定未指定类型的目录中父目录为第二类目录的目录为第二类目录;

类型转化模块604,用于将EXCLUDE目录中子孙目录包括INCLUDE目录的目录的类型转化为第三类目录;

第三确定模块605,用于根据特征目录集合中每个目录的类型确定目录树中需删除的内容,其中,EXCLUDE目录自身及其下属内容为需删除内容;INCLUDE目录的父目录的未包含在特征目录集合中的第三子目录自身、第三子目录下属内容以及INCLUDE目录的父目录包括的文件为需删除的内容;第二类目录的父目录的未包含在特征目录集合中的第四子目录自身、第四子目录下属内容以及第二类目录的父目录包括的文件为需删除的内容。

在一种可选的实现中,第二确定模块603,还用于:在确定特征目录集合的未指定类型的目录中父目录为EXCLUDE目录的目录为第二类目录之前,在特征目录集合中存在被过滤规则项指定为INCLUDE的目录时,确定根目录为EXCLUDE目录;以及,在特征目录集合中不存在被过滤规则项指定为INCLUDE的目录时,确定根目录为INCLUDE目录。

在一种可选的实现中,第三确定模块605具体用于:根据特征目录集合中目录间的父子关系形成模板树;在模板树中为每个INCLUDE目录以及每个第二类目录增加一兄弟节点,兄弟节点被标记为通配目录;对通配目录的父目录在目录树中的子目录进行扫描,确定通配目录的父目录的未包含在特征目录集合中的子目录自身及下属内容、通配目录的父目录包括的文件为需删除的内容。

以上目录过滤设备包含的处理器所执行操作的具体实现方式可以参照图4-5的实施例的中目录过滤方法的各步骤的实现方式,本申请实施例不再赘述。

本申请实施例还提供一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行步骤301至步骤306中任一步骤的指令。

本申请实施例还提供一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行步骤401至步骤405中任一步骤的指令。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1