文件扫描方法、装置、电子设备、程序产品及存储介质与流程

文档序号:27613753发布日期:2021-11-29 12:37阅读:85来源:国知局
文件扫描方法、装置、电子设备、程序产品及存储介质与流程

1.本发明涉及信息技术领域,更具体地说,涉及一种文件扫描方法、装置、电子设备、程序产品及存储介质。


背景技术:

2.在基于网闸平台的业务传输过程中,为了保证传输文件的准确性,需要实时监控文件目录或文件的创建新增、删除或修改等属性,并根据属性的变化做出读取、写入、删除、重命名等操作。
3.现有技术中,通过定时轮询的方式扫描监控文件目录和文件自身的变化。通常是将文件目录和文件信息记录到列表中,每次轮询扫描后都会对比上一次扫描的结果和列表信息,一一对比筛选出目录或文件的属性变化,做出对应的处理,这种处理方式会占用大量的内存和时间,导致检测效率低下。


技术实现要素:

4.本发明提供一种文件扫描方法、装置、电子设备、程序产品及存储介质,用以解决现有技术中采用定时轮询扫描且将扫描结果与列表信息一一对比的方式导致检测效率低下的技术问题,以实现保证传输文件准确性的同时提高检测效率的目的。
5.第一方面,本发明提供一种文件扫描方法,包括:
6.在接收到文件扫描的触发消息之后,对待扫描文件所对应的文件区块进行第一次扫描,确定存在变化的文件区块;
7.对所述存在变化的文件区块进行第二次扫描,确定存在变化的文件。
8.根据本发明提供的一种文件扫描方法,所述对待扫描文件所对应的文件区块进行第一次扫描,确定存在变化的文件区块,包括:
9.获取第一文件区块的目录信息和/或所包含的各个文件的信息;其中,所述第一文件区块为所述待扫描文件所对应的文件区块中的任意一个;
10.根据所述第一文件区块的目录信息和/或所包含的各个文件的信息,计算所述第一文件区块的第一摘要数据;
11.根据所述第一文件区块的第一摘要数据与所述第一文件区块的第二摘要数据,确定所述第一文件区块是否为存在变化的文件区块;其中,所述第一文件区块的第二摘要数据是在所述第一文件区块未发生变化的情况下扫描得到的,或预先存储的。
12.根据本发明提供的一种文件扫描方法,所述根据所述第一文件区块的目录信息和/或所包含的各个文件的信息,计算所述第一文件区块的第一摘要数据,包括:
13.根据所述第一文件区块的目录信息和/或所包含的各个文件的名称、大小与修改时间,通过模糊哈希算法或循环冗余校验,计算所述第一文件区块的第一摘要数据。
14.根据本发明提供的一种文件扫描方法,所述对所述存在变化的文件区块进行第二次扫描,确定存在变化的文件,包括:
15.接收第二文件区块的标识信息;其中,所述第二文件区块为所述第一次扫描所确定的存在变化的文件区块;
16.根据所述第二文件区块的标识信息,获取所述第二文件区块的目录信息和/或所包含的各个文件的信息;
17.根据所述第二文件区块的目录信息和/或所包含的各个文件的信息以及所述第二文件区块的第一目录信息和/或所包含的各个文件的第一信息,确定所述第二文件区块中存在变化的文件;其中,所述第二文件区块的第一目录信息和/或所包含的各个文件的第一信息是在当前次文件扫描操作之前所存储的信息。
18.根据本发明提供的一种文件扫描方法,所述对待扫描文件所对应的文件区块进行第一次扫描包括:对待扫描文件所对应的多个文件区块并行进行第一次扫描;
19.相应的,所述接收第二文件区块的标识信息,包括:
20.通过消息队列的方式,从多个并行进行的第一次扫描的结果中分别接收第二文件区块的标识信息。
21.根据本发明提供的一种文件扫描方法,所述第二文件区块的第一目录信息和/或所包含的各个文件的第一信息是以红黑树的方式存储的。
22.根据本发明提供的一种文件扫描方法,所述文件扫描的触发消息是在所述待扫描文件发生新增或修改或删除的情况下、或所述待扫描文件所对应的文件区块的目录信息发生新增或修改或删除的情况下产生的。
23.第二方面,本发明还提供一种文件扫描装置,包括:
24.第一扫描模块,用于在接收到文件扫描的触发消息之后,对待扫描文件所对应的文件区块进行第一次扫描,确定存在变化的文件区块;
25.第二扫描模块,用于对所述存在变化的文件区块进行第二次扫描,确定存在变化的文件。
26.第三方面,本发明提供一种电子设备,包括:
27.处理器、存储器和总线,其中,
28.所述处理器和所述存储器通过所述总线完成相互间的通信;
29.所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如上任一所述的方法。
30.第四方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,其特征在于,所述指令在被执行时用于实现如上任一项所述文件过滤方法的步骤。
31.第五方面,本发明还提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如上任一所述的方法。
32.本发明提供的一种文件扫描方法、装置、电子设备、程序产品及存储介质,所述方法:在接收到文件扫描的触发消息之后,对待扫描文件所对应的文件区块进行第一次扫描,确定存在变化的文件区块;对所述存在变化的文件区块进行第二次扫描,确定存在变化的文件。本发明提供的文件扫描方法通过触发消息的方式实现对文件的第一次扫描和第二次扫描,能够精准确定发生变化的目录和文件,提高文件的检测效率,提升用户体验。
附图说明
33.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
34.图1为本发明实施例中提供的一种文件扫描方法的流程示意图;
35.图2为本发明实施例中提供的一种文件目录扫描的流程示意图;
36.图3为本发明实施例中提供的一种第二次扫描的流程示意图;
37.图4为本发明实施例中提供的多目录扫描时数据通讯的流程示意图;
38.图5为本发明提供的一种应用部署架构图的示意图;
39.图6为本发明提供的一种文件扫描装置的结构示意图;
40.图7为本发明提供的电子设备的结构示意图。
具体实施方式
41.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
42.图1为本发明提供的一种文件扫描方法的流程示意图。如图1所示,本发明提供的文件过滤方法,包括以下步骤:
43.步骤101:在接收到文件扫描的触发消息之后,对待扫描文件所对应的文件区块进行第一次扫描,确定存在变化的文件区块;
44.步骤102:对所述存在变化的文件区块进行第二次扫描,确定存在变化的文件。
45.具体地,触发消息是根据发生的触发事件发出的信号消息,用于通知扫描组件实施扫描操作。
46.在本发明实施例中,通过事件触发的方式触发扫描组件,对待扫描文件中对应的文件区块进行第一次扫描,确定出发生变化的文件区块,然后通过扫描组件对确定发生变化的文件区块进行第二次扫描,精确筛选出发生变化的文件。需要说明的是,本实施例中采用事件触发的方式,当文件信息或文件区块信息发生变化时才会对待扫描文件进行扫描,若文件或文件区块没有发生变化,则不会触发扫描组件进行扫描操作。
47.在步骤101中,当接收到触发消息时对待扫描文件对应的文件区块进行第一次扫描,确定出存在变化的文件区块,其中,文件区块可以是文件夹,也可以是其它存储多个文件的方式。需要说明的是,文件区块发生的变化可以是文件区块的目录增加、目录修改或目录删除,也可以是文件区块内的文件增加、修改或删除等。
48.在步骤102中,第二次扫描只需要对在第一次扫描中已经确定发生变化的文件区块进行扫描即可,确定出发生变化的文件,需要说明的是,文件发生的变化可以是文件的新增、修改或删除等。具体可以根据用户的需要进行设定,在此不作具体限定。
49.本发明实施例中,通过事件触发的方式来触发扫描组件对待扫描文件对应的文件区块进行第一次扫描处理,确定存在变化的文件区块,然后只对存在变化的文件区块进行
第二次扫描,确定出存在变化的文件。本发明提供的方法能够减少扫描次数,更快更准地确定出发生变化的文件区块或文件,提高文件检测的效率。
50.在本发明的另一个实施例中,所述对待扫描文件所对应的文件区块进行第一次扫描,确定存在变化的文件区块,包括:
51.获取第一文件区块的目录信息和/或所包含的各个文件的信息;其中,所述第一文件区块为所述待扫描文件所对应的文件区块中的任意一个;
52.根据所述第一文件区块的目录信息和/或所包含的各个文件的信息,计算所述第一文件区块的第一摘要数据;
53.根据所述第一文件区块的第一摘要数据与所述第一文件区块的第二摘要数据,确定所述第一文件区块是否为存在变化的文件区块;其中,所述第一文件区块的第二摘要数据是在所述第一文件区块未发生变化的情况下扫描得到的,或预先存储的。
54.具体地,待扫描文件可以包含多个文件区块,而第一文件区块可以为其中的任意一个。其中,各个文件的信息包括每个文件的文件名称、大小、修改时间等信息。
55.在本发明实施例中,根据获取的第一文件区块的目录信息和/或所包含各个文件的信息,计算得到第一文件区块的第一摘要数据,将第一摘要数据与第二摘要数据进行比较,若第一摘要数据与第二摘要数据不相等,则确定第一文件区块为存在变化的文件区块。本发明实施例中,第一摘要数据和第二摘要数据可以为计算得到的哈希值数据。
56.需要说明的是,第二摘要数据是在第一文件区块未发生变化的情况下扫描得到的,例如,对于一直未发生变化的第一文件区块,第二摘要数据,也可以是在上一次对第一文件区块进行扫描时得到的数据,也可以为之前任何一次扫描得到的;而对于第一文件区块在生成后,中途发生过变化的,第二摘要数据可以在该文件区块生成后,第一次扫描时得到,第二摘要数据用于作为验证第一摘要数据的标准数据;在其他一些实施例中,第二摘要数据也可以是预先存储得到的标准数据,例如采用哈希算法预先计算得到。
57.举例说明,如图2所示,业务运行过程中,假如指定a文件夹为第一文件区块时,扫描组件xscanner启动后首轮扫描会遍历a文件夹的目录信息,存储该目录信息并计算a文件夹的哈希值,若a 文件夹下没有文件则确定哈希值为初始值;
58.创建目录:a/b、a/b/c、a/d,以文件夹的形式进行分块处理,构成文件区块,对a文件夹进行一次扫描,根据a文件夹的目录信息和目录下各个文件的信息计算a文件夹的哈希值,存储记录到列表中,作为第二摘要数据,用于后续每次扫描结果对比时的数据依据。
59.当a文件夹的目录信息或内部的文件有变化时会产生触发消息,根据触发消息对a文件夹进行第一次扫描获取a文件夹的目录信息和/或目录下的各个文件信息,重新计算a文件夹的哈希值,得到第一摘要数据,将第一摘要数据与第二摘要数据进行对比分析,当两个数据不相等时,则确定a文件夹为存在变化的文件区块,并将发生的变化生成对应的事件,通过回调函数将对应的事件推送给其他处理模块进行处理。
60.本发明实施例中,通过根据第一文件区块的目录信息和/或目录下的各个文件的信息,计算得到第一文件区块的第一摘要数据,将第一摘要数据与第二摘要数据进行比较来确定第一文件区块是否为存在变化的文件区块,能够减少内存使用的开销,提升扫描效率,压缩感知的范围。
61.在本发明的另一个实施例中,所述根据所述第一文件区块的目录信息和/或所包
含的各个文件的信息,计算所述第一文件区块的第一摘要数据,包括:
62.根据所述第一文件区块的目录信息和/或所包含的各个文件的名称、大小与修改时间,通过模糊哈希算法或循环冗余校验,计算所述第一文件区块的第一摘要数据。
63.具体地,模糊哈希算法又叫基于内容分割的分片哈希算法 (context triggered piecewise hashing,简称ctph),通过字符串相似性对比算法获取两个模糊哈希值的相似值,判断两个文件的相似程度。
64.其中,循环冗余校验(cyclic redundancy check,简称crc)是根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。
65.在本发明实施例中,根据第一文件区块的目录信息和/或所包含的各个文件的名称、大小与修改时间,基于模糊哈希算法或循环冗余校验,计算第一文件区块的第一摘要数据。需要说明的是,第一摘要数据可以是哈希值,也可以是通过循环冗余校验得到的校验码。
66.如第一文件区块为a文件夹,对a文件夹进行第一次扫描,得到a文件夹的目录信息和所包含的各个文件信息,将a文件夹中的每个文件的文件名称、大小、修改时间等信息存储到一个buffer中,并根据存储的文件信息计算a文件夹的哈希值,也就是得到a文件夹的第一摘要数据。
67.本发明实施例中,基于模糊哈希算法或循环冗余校验的方式计算第一文件区块的第一摘要数据,实现对待扫描文件的分块处理,释放了大量内存,可以更快更准的定位存在变化的文件夹,提高检测效率。
68.在本发明的另一个实施例中,所述对所述存在变化的文件区块进行第二次扫描,确定存在变化的文件,包括:
69.接收第二文件区块的标识信息;其中,所述第二文件区块为所述第一次扫描所确定的存在变化的文件区块;
70.根据所述第二文件区块的标识信息,获取所述第二文件区块的目录信息和/或所包含的各个文件的信息;
71.根据所述第二文件区块的目录信息和/或所包含的各个文件的信息以及所述第二文件区块的第一目录信息和/或所包含的各个文件的第一信息,确定所述第二文件区块中存在变化的文件;其中,所述第二文件区块的第一目录信息和/或所包含的各个文件的第一信息是在当前次文件扫描操作之前所存储的信息。
72.具体地,标识信息是指第一次扫描结束后存在变化的文件区块的名称等信息,能够根据该标识信息准确地确定出需要第二次扫描的文件区块。
73.在本发明实施例中,根据标识信息确定需要进行第二次扫描的第二文件区块,对第二文件区块进行第二次扫描处理,获取到第二文件区块的目录信息和/或所包含的各个文件信息,并与上一次扫描得到的第二文件区块的第一目录信息和/或所包含的各个文件的第一信息进行对比,筛选出发生变化的文件。需要说明的是,文件信息为该目录下的所有文件的详细信息,如文件名称、文件大小、修改时间等内容。
74.举例说明,如图3所示,在对a文件夹第一次扫描结束后,确定a文件夹为存在变化的文件区块,并将其发送到进行第二次扫描的扫描组件中。第二次扫描的扫描组件接收到
指令和对应的标识信息,对a文件夹进行第二次扫描处理,得到a文件夹的目录信息和包含的各个文件的信息,将本次扫描结果与上次对a文件夹的扫描结果进行对比,也就是根据目录信息和各个文件的详细信息进行筛选,确定出存在变化的文件,然后可以根据变化生成对应的事件提供给其他处理模块进行处理。
75.本发明实施例中,通过对第二文件区块进行扫描得到第二文件区块的目录信息和/或包含的各个文件的信息,并将本次扫描得到的结果与上次扫描存储的记录信息进行对比,筛选出发生变化的文件。本发明通过只对存在变化的文件区块进行第二次扫描处理,准确确定出发生变化的文件,提高扫描效率。
76.在本发明的另一个实施例中,所述对待扫描文件所对应的文件区块进行第一次扫描包括:对待扫描文件所对应的多个文件区块并行进行第一次扫描;
77.相应的,所述接收第二文件区块的标识信息,包括:
78.通过消息队列的方式,从多个并行进行的第一次扫描的结果中分别接收第二文件区块的标识信息。
79.具体地,消息队列是在消息的传输过程中保存消息的容器。
80.在本发明实施例中,扫描组件对待扫描文件所对应的多个文件区块进行第一次扫描,并将多个并行扫描得到的扫描结果通过消息队列的方式推送到进行第二次扫描的扫描组件中,本实施例中通过消息队列的方式实现第一次扫描和第二次扫描之间文件区块的传递,实时监控多个文件区块。需要说明的是,扫描组件采用xfpi作为文件监控的方式,能够支持文件传输协议、实现smb协议的软件、网络文件系统、vsftp服务以及本地目录,另外,采用统一资源定位系统的方式注册监控目录。下面通过下述具体的例子进行详细说明。
81.举例说明,如图4所示,当多个文件区块同时并行进行第一次扫描处理时,通过消息队列的方式,将第一次扫描确定的发生变化的文件区块的标识信息推送到进行第二次扫描的扫描组件中,主要以消息队列作为枢纽。其中,在消息队列的左边为进行第一次扫描的文件区块信息,包含多个目录信息及实时监控多个待扫描文件区块得到的目录哈希值,在消息队列的右边为通过消息队列传输过来的需要进行第二次扫描的存在变化的文件区块,先是确定发生变化的文件区块信息,然后根据第二次扫描得到的目录文件信息与上一次第二次扫描存储的文件信息进行查询比对,确定出存在变化的文件。其中,每个文件区块的监控目录都有自己的存储列表,以目录号(dirid)为标识,最大可同时监控63个目录并发扫描。
82.本实施例中通过消息队列来接收第一扫描中确定的发生变化的文件区块的标识信息,能够完全覆盖多线程、多进程的模式,传输效率更高。
83.在本发明的另一个实施例中,所述第二文件区块的第一目录信息和/或所包含的各个文件的第一信息是以红黑树的方式存储的。
84.具体地,红黑树(red black tree)是一种自平衡二叉树,是在计算机科学中用到的一种数据结构。
85.本发明实施例中,将每次扫描得到的第一目录信息和各个文件的第一信息存储于红黑树模型中,存储各个文件区块监控目录下所有文件的详细信息,如文件名称、文件大小、修改时间等内容,为下一次文件扫描时提供数据支持。
86.在本发明的另一个实施例中,所述文件扫描的触发消息是在所述待扫描文件发生
新增或修改或删除的情况下、或所述待扫描文件所对应的文件区块的目录信息发生新增或修改或删除的情况下产生的。
87.本发明实施例中,触发文件扫描操作的触发消息是在待扫描文件或待扫描文件对应的文件区块的目录信息发生变化时产生的,其中,发生的变化可以是目录信息发生新增、删除或修改等情况,也可以是文件发生新增、删除或修改等情况,如新增文件或目录后会触发扫描组件进行第一次扫描操作。需要说明的是,发生的变化不局限于新增、修改或删除,还可以是其他的变化,在此不作具体限定。
88.本发明实施例中,通过设定待扫描文件或目录信息在新增或修改或删除的情况下产生触发消息,来触发第一次扫描操作,减少扫描周期,提高工作效率。
89.在本发明的另一个实施例中,提供一种应用部署架构图,如图5 所示,包括:业务逻辑层、扫描组件层、分发组件层、传输组件层和文件服务层,其中,
90.所述业务逻辑层:用于内嵌文件传输业务、客户端文件传输业务、服务器文件传输业务等,具有对扫描组件、分发组件和传输组件进行业务配置、注册回调函数、统合处理数据等功能;将通过扫描组件获取的文件处理事件推送到分发组件中,再由分发组件负责分发到传输组件,实现文件同步逻辑。
91.分发组件层:可由消息队列组成,为多路传输提供解决方案,实现多路传输的同时充分利用网络带宽,提高文件的传输效率。
92.传输组件层:实现文件传输功能。
93.扫描组件层:可以实现对待扫描文件对应的文件区块的第一次扫描,对存在变化的文件区块的第二次扫描,用于监控捕获本地目录或远程nas服务器上的文件目录增删改等事件,将文件变更及时高效准确的提供给传输组件,进行业务处理操作。
94.文件服务层:提供一套函数接口,实现本地文件和远程nas服务文件的读写增删改等操作。
95.本发明实施例中,通过提供一种应用部署架构图,能够更好的实现文件扫描检测工作。
96.在本发明的另一个实施例中,双线程工作模式分为第一次扫描和第二次扫描,其中,
97.第一次扫描:主要用于计算待扫描文件的哈希值,即根目录和子目录的哈希值,存放在哈希表中,监控目录和子目录的变化。
98.第二次扫描:采用红黑树数据模型,存储监控目录下所有文件的详细信息,如文件名称、文件大小、修改时间等内容,用于后续扫描对比分析,精准查找发生变化的文件。
99.图6为本发明提供的一种文件扫描装置,如图6所示,本发明提供的文件过滤装置,包括:
100.第一次扫描模块601,用于在接收到文件扫描的触发消息之后,对待扫描文件所对应的文件区块进行第一次扫描,确定存在变化的文件区块;
101.第二次扫描模块602,用于对所述存在变化的文件区块进行第二次扫描,确定存在变化的文件。
102.本发明实施例中提供的文件扫描装置,其中,第一次扫描模块用于在接收到文件扫描的触发消息之后,对待扫描文件所对应的文件区块进行第一次扫描,确定存在变化的
文件区块,第二次扫描模块用于对所述存在变化的文件区块进行第二次扫描,确定存在变化的文件。本发明提供的装置能够减少扫描次数,精确确定出发生变化的文件或目录,提高文件检测的效率。
103.由于本发明实施例所述装置与上述实施例所述方法的原理相同,对于更加详细的解释内容在此不再赘述。
104.图7为本发明实施例提供的电子设备实体结构示意图,如图7所示,本发明提供一种电子设备,包括:处理器(processor)701、存储器 (memory)702和总线703;
105.其中,处理器701、存储器702通过总线703完成相互间的通信;
106.处理器701用于调用存储器702中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:在接收到文件扫描的触发消息之后,对待扫描文件所对应的文件区块进行第一次扫描,确定存在变化的文件区块;对所述存在变化的文件区块进行第二次扫描,确定存在变化的文件。
107.本实施例提供一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,其特征在于,所述指令在被执行时用于实现如上述各实施例任一项所述文件过滤方法的步骤,例如包括:在接收到文件扫描的触发消息之后,对待扫描文件所对应的文件区块进行第一次扫描,确定存在变化的文件区块;对所述存在变化的文件区块进行第二次扫描,确定存在变化的文件。
108.本实施例提供一种非暂态计算机可读存储介质,非暂态计算机可读存储介质存储计算机指令,计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:在接收到文件扫描的触发消息之后,对待扫描文件所对应的文件区块进行第一次扫描,确定存在变化的文件区块;对所述存在变化的文件区块进行第二次扫描,确定存在变化的文件。
109.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
110.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1