计算;推算;计数设备的制造及其应用技术1.本发明涉及计算机容灾备份技术领域,特别是涉及一种基于目录监控文件增量同步的方法及装置。背景技术:2.传统的目录文件监控同步,一般是基于系统api监控目录变更事件(增,删,该, 查),然后实时同步所有监控事件,实现文件级的增量同步。然而,由于文档编辑产生的监控事件差异性会造成数据的生命周期管理错误,同时也会产生大量的网络同步请求。技术实现要素:3.为克服上述现有技术存在的不足,本发明之目的在于提供一种基于目录监控文件增量同步的方法及装置,以通过合并监控事件,降低网络传输交互并完整保留文件的生命周期。4.为达上述目的,本发明提供一种基于目录监控文件增量同步的方法,包括如下步骤:步骤s1,设置监控目录路径,监控所述监控目录路径下的变更事件操作;步骤s2,获取步骤s1产生的变更事件,解析事件信息,并根据解析信息封装事件,插入第一线程安全队列;步骤s3,循环检测所述第一线程安全队列,获取该监控目录路径的文档操作事件信息并进行合并操作,并将合并操作结果存储到第二线程安全队列;步骤s4,获取所述第二线程安全队列的存储事件,发送对应事件到灾备端。5.优选地,于步骤s1中,若所述监控目录路径下触发了增删改等文件或目录操作行为,则产生变更事件。6.优选地,于步骤s2中,利用独立线程获取步骤s1 监控得到的变更事件, 解析所述变更事件,并根据解析结果封装事件,将封装后的事件插入第一线程安全队列,所述变更事件包含新建、 删除、 修改以及重命名事件操作。7.优选地,步骤s3进一步包括:步骤s300,顺序获取该监控目录路径的文档操作事件信息,对当前获取的文档操作事件获取事件类型及对应的文档全路径;步骤s301,若当前获取的文档操作事件的事件类型为新建目录事件,则存储事件信息至所述第二线程安全队列;步骤s302,若当前获取的文档操作事件的事件类型为新建文件事件,则继续获取所述第一线程安全队列的下一条操作事件进行合并处理,存储事件合并结果至第二线程安全队列;步骤s303,若当前获取的文档操作事件的事件类型为修改目录事件, 则过滤掉该事件;步骤s304,若当前获取的文档操作事件的事件类型为修改文件事件,则继续获取所述第一线程安全队列的下一条操作事件进行合并处理,并存储事件合并结果至所述第二线程安全队列;步骤s305,若当前获取的文档操作事件的事件类型为目录删除事件,则继续获取第一线程安全队列的下一条操作事件进行合并处理,并存储事件合并结果至第二线程安全队列;步骤s306,若当前获取的文档操作事件的事件类型为删除文件操作,则直接存储该事件信息到所述第二线程安全队列;步骤s307,若当前获取的文档操作事件的事件类型为重命名目录操作,则直接存储该事件信息到所述第二线程安全队列;步骤s308,若当前获取的文档操作时间的事件类型为重命名文件操作,则根据该重命名文件操作是否改变了扩展名进行事件处理,并将处理后的事件信息存储到所述第二线程安全队列。8.优选地,于步骤s302中,若当前获取的文档操作事件的事件类型为新建文件事件则继续获取第一线程安全队列的下一条操作事件,若下一条操作事件为修改且对应文件为当前新建文件事件中的文件,则将该修改事件与新建事件合并为新建事件,并继续获取所述第一线程安全队列的下一个事件,循环往复,直至下一条事件操作对象不是该新建文件事件中的文件的修改事件为止,最后存储合并事件信息到所述第二线程安全队列。9.优选地,于步骤s304中,若当前获取的文档操作事件的事件类型为修改文件事件,则继续获取所述第一线程安全队列的下一条事件,若下一条事件为修改操作且与当前修改文件事件的修改对象为同一文件,则合并两个事件为一个修改事件,继续获取所述第一线程安全队列的下一个事件,循环往复,直至下一个事件不与当前修改文件事件的修改对象为同一文件为止,最后存储合并事件信息到第二线程安全队列。10.优选地,于步骤s305中,若当前获取的文档操作事件的事件类型为目录删除事件,继续获取所述第一线程安全队列的下一个事件,若该下一个事件是删除该目录或该目录下的文件操作,则合并两次目录删除操作事件,并存储删除事件信息到第二线程安全队列。11.优选地,于步骤s308中, 若当前重命名文件操作的文件扩展名不改变,则直接存储该重命名事件信息到所述第二线程安全队列。12.优选地,于步骤s308中,若当前重命名文件操作的文件扩展名进行了改变,则定义一个时间片,若在该时间片内将原改变的扩展名重命名回原扩展名,则合并重命名事件为后一次重命名事件的修改事件,否则将当前重命名文件事件,存储事件信息到第二线程安全队列。13.为达到上述目的,本发明还提供一种基于目录监控文件增量同步的装置,包括:监控模块,用于设置监控目录路径,监控所述监控目录路径下的变更事件操作;事件解析模块,用于获取所述监控模块产生的变更事件,解析事件信息,并根据解析信息封装事件,插入第一线程安全队列;事件合并模块,用于循环检测所述第一线程安全队列,获取该监控目录路径的文档操作事件信息并进行合并操作,并将合并操作结果存储到第二线程安全队列;事件发送模块,用于获取所述第二线程安全队列的存储事件,发送对应事件到灾备端。14.与现有技术相比,本发明一种基于目录监控文件增量同步的方法及装置通过监控变更事件,解析后插入第一线程安全队列,通过循环检测所述第一线程安全队列,获取该监控目录路径的文档操作事件信息并进行合并操作,将合并操作结果存储到第二线程安全队列,最后获取第二线程安全队列的存储事件,发送对应事件到灾备端,通过合并监控事件,达到降低网络传输交互并完整保留文件的生命周期的目的。15.附图说明16.图1为本发明一种基于目录监控文件增量同步的方法的步骤流程图;图2为本发明一种基于目录监控文件增量同步的装置的系统结构图。17.具体实施方式18.以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。19.图1为本发明一种基于目录监控文件增量同步的方法的步骤流程图。如图1所示,本发明一种基于目录监控文件增量同步的方法,应用于源端,包括如下步骤:步骤s1,设置监控目录路径,监控所述监控目录路径下的变更事件操作。20.在本发明具体实施例中,设置监控目录路径,例如设置监控目录路径d:monitor,如果该监控目录路径下触发了增删改等文件或目录操作行为,则产生变更事件。21.步骤s2,获取步骤s1产生的变更事件,解析事件信息,并根据解析信息封装事件,插入第一线程安全队列foq。22.具体地,独立线程获取步骤s1 监控得到的变更事件, 解析该变更事件(由于系统的数据结构和自定义的不一致要进行解析适配),根据解析结果封装事件,所述变更事件包含但不限于新建, 删除, 修改, 重命名操作,并将封装后的事件插入第一线程安全队列foq,继续循环处理步骤s1产生的事件。23.步骤s3,循环检测所述第一线程安全队列foq,获取该监控目录路径的文档操作事件信息并进行合并操作,并将合并操作结果存储到第二线程安全队列foq2。24.在本发明具体实施例中,独立线程循环检测所述第一线程安全队列foq, 基于队列的fifo特性, 顺序获取该监控目录路径的文档操作事件信息并进行合并操作。25.具体地,步骤s3进一步包括:步骤s300,顺序获取该监控目录路径的文档操作事件信息,对当前获取的文档操作事件获取事件类型及对应的文档全路径。26.步骤s301,若当前获取的文档操作事件的事件类型为新建目录事件,则存储事件信息至第二线程安全队列foq2。27.具体地,若当前获取的文档操作事件的事件类型为新建目录事件例如新建目录d:monitordir1,,则将该事件信息存储到第二线程安全队列foq2。28.步骤s302,若当前获取的文档操作事件的事件类型为新建文件事件,则继续获取所述第一线程安全队列的下一条操作事件,进行合并处理,并存储事件合并结果至第二线程安全队列foq2。29.具体地,若当前获取的文档操作事件的事件类型为新建文件事件例如新建文件d:monitorfile1.doc,则继续获取第一线程安全队列的下一条操作事件(ne), 如果下一条操作事件(ne)为修改且对应文件是file1.doc,则将该修改事件与新建事件合并为新建file1.doc事件(具体为放弃后面的修改事件直接存储一个新建事件),并继续获取第一线程安全队列下一个事件,循环往复,直至下一条事件操作对象不是file1.doc文件的修改事件为止,最后存储合并事件信息到第二线程安全队列foq2。30.步骤s303,若当前获取的文档操作事件的事件类型为修改目录事件, 则过滤掉该事件。31.具体地,由于目录下只要有文件变更,例如文件新建等都会收到父目录变更,实际上,目录变更事件均可以归到其他操作事件,因此,若当前获取的文档操作时间的事件类型为修改目录事件例如修改目录d:monitordir1,则直接过滤掉。32.步骤s304,若当前获取的文档操作事件的事件类型为修改文件事件,则继续获取所述第一线程安全队列foq的下一条操作事件进行合并处理,并存储事件合并结果至第二线程安全队列foq2。33.具体地,若当前获取的文档操作事件的事件类型为修改文件事件,例如修改文件d:monitorfile1.doc ,则继续获取所述第一线程安全队列的下一条事件(ne),如果下一条事件(ne)为修改操作且是file1.doc,则合并两个事件为一个修改文件事件(即连续监控两个或多个连续修改文件事件则只保留最后最新的修改),继续获取第一线程安全队列foq的下一个事件,循环往复,直至下一个事件不是file1.doc文件的修改事件为止,最后存储合并事件信息到第二线程安全队列foq2。34.步骤s305,若当前获取的文档操作事件的事件类型为目录删除事件,则继续获取第一线程安全队列foq的下一条操作事件进行合并处理,并存储事件合并结果至第二线程安全队列foq2。35.具体地,若当前获取的文档操作事件的事件类型为目录删除事件,例如目录删除d:monitordir1,继续获取第一线程安全队列foq的下一个事件(ne),如果该下一个事件(ne)是删除该目录或该目录下的文件操作,例如删除文件d:monitordir1file1.doc,则合并两次删除操作为d:monitordir1 目录删除事件,即当监控到递归删除事件,只需要合并删除顶层目录,例如当前获取的文档操作事件为删除目录d:monitordir1,下一个事件为删除该目录下的文件操作d:monitordir1file1.doc,则合并为删除顶层目录 d:monitordir1,循环往复,直至下一条事件不是删除事件为止,存储删除事件信息到第二线程安全队列foq2。36.步骤s306,若当前获取的文档操作事件的事件类型为删除文件操作,则直接存储该事件信息到第二线程安全队列foq2。37.步骤s307,若当前获取的文档操作事件的事件类型为重命名目录操作,则直接存储该事件信息到所述第二线程安全队列foq2。38.步骤s308,若当前获取的文档操作时间的事件类型为重命名文件操作,则根据该重命名文件操作是否改变了扩展名进行事件处理,并将处理后的事件信息存储到第二线程安全队列foq2。39.具体地,若当前重命名文件操作的文件扩展名不改变,例如将文件file1.doc重命名为file2.doc,则直接存储该重命名事件信息到第二线程安全队列foq2;否则若当前重命名文件操作的文件扩展名进行了改变,例如将文件file1.doc重命名为file1.tmp,存放到临时队列foq3, 则定义一个时间片(30秒),若时间片内文件file1.doc.tmp 重命名 file1.doc, 则将file1.doc 重命名file1.tmp 和 file1.tmp 重命名file1.doc 合并为file1.doc的修改事件,否则存储重命名文件事件(file1.doc 重命名为 file1.tmp)到第二线程安全队列foq2。40.步骤s4,获取所述第二线程安全队列foq2的存储事件,发送对应事件到灾备端。41.具体地,独立线程获取第二线程安全队列foq2中存储的事件,依据fifo特性发送对应事件到灾备端。42.图2为本发明一种基于目录监控文件增量同步的装置的系统结构图。如图2所示,本发明一种基于目录监控文件增量同步的装置,应用于源端,包括:监控模块201,用于设置监控目录路径,监控所述监控目录路径下的变更事件操作。43.在本发明具体实施例中,设置监控目录路径,例如设置监控目录路径d:monitor,监控模块201监控所设置的监控目录路径d:monitor,如果该监控目录路径下触发了增删改等文件或目录操作行为,则产生变更事件。44.事件解析模块202,用于获取监控模块201产生的变更事件,解析事件信息,并根据解析信息封装事件,插入第一线程安全队列foq。45.具体地,事件解析模块202通过独立线程获取监控模块201监控得到的变更事件, 解析该变更事件,根据解析结果封装事件,所述变更事件包含但不限于新建、删除、 修改、 重命名操作,并将封装后的事件插入第一线程安全队列foq,继续循环处理监控模块201产生的事件。46.事件合并模块203,用于循环检测所述第一线程安全队列foq,获取该监控目录路径的文档操作事件信息并进行合并操作,并将合并操作结果存储到第二线程安全队列foq2。47.在本发明具体实施例中,事件合并模块203循环检测所述第一线程安全队列foq, 基于队列的fifo特性, 顺序获取该监控目录路径的文档操作事件信息并进行合并操作。48.具体地,事件合并模块203具体用于:顺序获取该监控目录路径的文档操作事件信息,对当前获取的文档操作事件获取事件类型及对应的文档全路径。49.若当前获取的文档操作事件的事件类型为新建目录事件,则存储事件信息至第二线程安全队列foq2。50.具体地,若当前获取的文档操作事件的事件类型为新建目录事件例如新建目录d:monitordir1,,则将该事件信息存储到第二线程安全队列foq2。51.若当前获取的文档操作事件的事件类型为新建文件事件,则继续获取所述第一线file1.doc, 则将file1.doc 重命名file1.tmp 和 file1.tmp 重命名file1.doc 合并为file1.doc的修改事件,否则存储重命名文件事件(file1.doc 重命名为 file1.tmp)到第二线程安全队列foq2。63.事件发送模块204,用于获取所述第二线程安全队列foq2的存储事件,发送对应事件到灾备端。64.具体地,事件发送模块204获取第二线程安全队列foq2中存储的事件,依据fifo特性发送对应事件到灾备端。65.上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。
图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
一种基于目录监控文件增量同步的方法及装置与流程
作者:admin
2022-10-19 09:16:24
511
关键词:
计算;推算;计数设备的制造及其应用技术
专利技术