CN103258018B - 一种精确监控目录文件夹中文件变化的文件同步方法 - Google Patents
一种精确监控目录文件夹中文件变化的文件同步方法 Download PDFInfo
- Publication number
- CN103258018B CN103258018B CN201310153209.7A CN201310153209A CN103258018B CN 103258018 B CN103258018 B CN 103258018B CN 201310153209 A CN201310153209 A CN 201310153209A CN 103258018 B CN103258018 B CN 103258018B
- Authority
- CN
- China
- Prior art keywords
- file
- change
- thread
- information
- synchronization
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种精确监控目录文件夹中文件变化的文件同步方法,用于将第一终端中的目录文件夹中的文件变化同步到第二终端上,包括:步骤一、在第一终端上启动监控线程,监控线程将发现并获取的发生变化的文件的变化信息依次存储在链表中,且通过变化队列记录各变化信息在链表中的位置指针;步骤二、定时开启通知线程,通知线程根据位置指针撷取并解析位于链表首位的队头变化信息,将不属于过滤文件的该队头变化信息存入同步字典中;步骤三、启动工作线程,将同步字典中变化信息逐一同步到第二终端上,清除变化队列、链表和同步字典之间相应信息;重复步骤二和步骤三,直到链表中变化信息为空。本发明提高了文件监控的效率,文件同步准确度高。
Description
技术领域
本发明涉及数据同步领域中的文件变化监控技术领域,特别涉及一种精确监控目录文件夹中文件变化的文件同步方法,主要应用于互联网中多终端间的文件同步。
背景技术
随着互联网技术的发展,用户拥有的个人电子设备越来越多,如台式电脑、笔记本电脑、手机等电子设备,这些电子设备各有各的功能和不同的应用场所,但是各电子设备间又有一部分文件是用户希望可以进行同步使用的,当其中一个电子设备上同步使用的文件发生变化时,用户也希望与其同步的电子设备上的数据也得到更新,所以越来越多的用户喜欢使用文件同步技术来管理各电子设备终端上的文件,这可以使得用户在不同地方和不同终端上及时将文件的更新同步到服务端,同时方便用户从服务端获得最新的文件信息。
当前互联网中已存在很多文件同步产品,主要应用于客户端与服务端的文件同步,这些产品对文件的监控主要采用文件检索比对的方式,即客户端终端对本地同步目录进行一次全扫描,将扫描到的每次文件变化信息发送到服务端验证,以确定该文件的更新信息,比如上传或删除等,如果该文件是更新的,则将文件同步到服务端,这种方法效率低,且缺乏准确度。而且现有常用的同步方法的缺陷在于不能实现终端和服务端的双向同步。
发明内容
本发明的目的是克服现有技术缺陷,提供一种精确监控目录文件夹中文件变化的文件同步方法,实现多终端间的文件同步,并且减少监控过程中记录丢失的概率,提高监控效率和监控的准确度。
本发明主要解决的技术问题是现有文件同步产品对文件的监控效率低,且缺乏准确度。
为解决上述问题,本发明公开了一种精确监控目录文件夹中文件变化的文件同步方法,用于将第一终端中的目录文件夹中的文件变化同步到第二终端上,其特征在于,包括以下步骤:
步骤一:在第一终端上启动监控线程,监控线程循环遍历指定目录文件夹中的所有文件,当监控到指定目录文件夹中的文件发生变化后,监控线程获取发生变化的文件的变化信息,并将变化信息依次存储在链表中,且通过变化队列记录各变化信息在链表中的位置指针;
步骤二:当变化队列中记录有位置指针时,开启通知线程,通知线程根据位置指针撷取位于链表首位的队头变化信息,并解析该队头变化信息,检验该队头变化信息是否属于过滤文件,若不属于过滤文件,则将该队头变化信息存入同步字典中;
步骤三:启动工作线程,在同步字典中取出一项信息,根据该项信息中的类型信息,对该信息对应的变化文件进行同步到第二终端上的处理,同步处理成功后,清除变化队列、链表和同步字典中的相应信息;
重复步骤二和步骤三,直到链表中的变化信息为空。
优选的是,监控线程实时在线不间断地循环遍历指定目录文件;而通知线程根据预设的时间启动,启动之前先检查变化队列中是否记录有位置指针,若有则启动通知线程,若无仍不启动通知线程;而工作线程也根据预设的时间启动,启动之前先检查同步字典中是否有信息,若有则启动工作线程,若无仍不启动工作线程。
优选的是,所述变化信息中包括类型信息、指针位置信息、名称信息和/或文件大小信息。
优选的是,所述类型信息包括新建、删除、修改和重命名。
优选的是,通知线程和工作线程每天预定时间开启一次或两次。
优选的是,在通知线程的开启到下一个开启的一个时间周期内,指定文件夹中同一文件的多次修改依次排列在链表中。
优选的是,在通知线程的开启到下一个开启的一个时间周期内,指定文件夹中同一文件的多次修改根据在链表中合并,而将最后一次变化信息作为最终变化信息。
本发明的有益效果是通过多线程和事件通知技术,提高文件同步过程中对文件监控的执行效率,并可以通过链表和同步字典得到详细的文件变化信息,避免文件监控记录的丢失,提高了文件同步的准确度。此外,本发明还以插件的形式提供了文件过滤功能,可以过滤掉一些无需处理的临时文件或系统文件,提高了文件同步过程的工作效率,便于管理维护和功能扩展。
附图说明
图1为本发明所述的一种精确监控目录文件夹中文件变化的文件同步方法的流程示意图。
具体实施方式
下面结合附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。
如图1所示,在第一终端上启动监控线程,监控线程循环遍历指定目录文件夹中的所有文件,当监控到指定目录文件夹中的文件发生变化后,监控线程获取发生变化的文件的变化信息,并将变化信息依次存储在链表中,且通过变化队列记录各变化信息在链表中的位置指针;比如,第一终端可以为台式电脑、笔记本电脑、手机等任何可以上网的电子设备,当用户将本发明设置在一台台式电脑上,并设置好需要监控的目录文件夹为D盘中的所有20个文件,当用户在D盘中新建的第21个命名为“我的图片”的文件被监控线程监测到后,监控线程就将“我的图片”的文件的名称“我的图片”、“新建”执行类型、“我的图片”这个新建文件的大小以及“我的图片”这个新建文件在内存中的存储位置存入链表中,并把这个新建文件的信息在链表中存在的位置指针存入变化队列,也就说,如果这个新建的文件的变化信息现在排在链表的第1位,那么指针指向链表的1这个位置;同样的,当用户在此台式电脑上的D盘中进行其他文件执行类型比如对D盘中的文件进行删除、修改和重命名时,监控线程进行同样的操作过程,并且按照时间顺序,将变化的文件信息逐一排列入链表。
步骤二:当变化队列中记录有位置指针时,开启通知线程,通知线程根据位置指针撷取位于链表首位的队头变化信息,并解析该队头变化信息,检验该队头变化信息是否属于过滤文件,若不属于过滤文件,则将该队头变化信息存入同步字典中;比如,通知线程根据位置指针中的1指向链表第1位的新建的“我的图片”的文件,并获取有关这个文件的所有信息,通过分析此文件类型,判断出此文件不是临时文件,也不是系统文件类型,则将有关此文件的相关信息全部存入同步字典,之后通知线程再从变化队列中获取第二个指针,指针对应指向链表获得文件变化信息可以为新建“我的图片”时产生的临时文件,则经过通知线程分析后这个临时文件就会被过滤掉,而不再存入同步字典中。
步骤三:启动工作线程,在同步字典中取出一项信息,根据该项信息中的类型信息,比如新建、删除,对该信息对应的变化文件进行同步到第二终端上的处理,同步处理成功后,清除变化队列、链表和同步字典中的相应信息;比如在同步字典中的一项信息为“我的图片”这个文件的相关信息,那么根据它是新建文件类型,即把它同步给第二终端,使第二终端上也新建一个这样的文件,其大小、名称和文件类型与第一终端上是一样的,之后将变化队列、链表和同步字典中与此次操作相关的信息删除掉,并在第一终端上记录同步日志,这样就完成了一次同步操作。
重复步骤二和步骤三,直到链表中的变化信息为空。
优选的是,监控线程实时在线不间断地循环遍历指定目录文件;而通知线程根据预设的时间启动,启动之前通知线程会先检查变化队列中是否记录有位置指针,若有则启动通知线程,若无仍不启动通知线程;而工作线程也根据预设的时间启动,启动之前先检查同步字典中是否有信息,若有则启动工作线程,若无仍不启动工作线程。
优选的是,所述变化信息中包括类型信息、指针位置信息、名称信息和/或文件大小信息。
优选的是,所述类型信息包括新建、删除、修改和重命名。
优选的是,通知线程和工作线程每天预定时间开启一次或两次,如果需要处理的同步文件比较多,用户可以进行自由设置通知线程在一天内多启动几次。
优选的是,在通知线程的开启到下一个开启的一个时间周期内,指定文件夹中同一文件的多次修改依次排列在链表中。
优选的是,在通知线程的开启到下一个开启的一个时间周期内,指定文件夹中同一文件的多次修改根据在链表中合并,而将最后一次变化信息作为最终变化信息。
换言之,本发明应用领域为数据同步中的文件变化监控技术,主要应用于互联网中多终端间的文件同步。
本发明的目的是提供一种精确监控目录中文件变化的方法,减少监控记录丢失的概率,并提高监控效率。
为了达到上述所述的目的,本发明解决其技术问题所采用的技术方案的步骤是:
a)启动监控线程WatchThread、通知线程NotifyThread和工作线程WorkThread。监控线程监控用户指定的文件夹,通知线程和工作线程挂起,并等待ResetEvent事件通知。
b)在内存中创建文件变化队列list<char*>和文件变化字典map<string,NFileInfo>。其中,NFileInfo的数据结构如下:
c)当文件发生变化时,监控线程捕获变化信息,并将信息所在内存的char*指针存入list<char*>,并发出ResetEvent事件通知,激活通知线程。
d)通知线程从list<char*>中取出队头信息,并解析为
NFileInfo,并插入map<string,NFileInfo>,其中key为文件名,value为文件变化信息。发出ResetEvent事件通知,激活工作线程。
D删除list<char*>队头信息,并重复步骤d。
g)工作线程遍历map<string,NFileInfo>字典,并取出第一项。
h)判断该文件是否属于不需处理的类型,如果是,删除第一项,重复步骤g。否则,执行步骤i。
i)根据文件变化类型执行相应的操作,如文件上传或文件删除其中,文件操作类型枚举定义如下:
FILE_CREATE//新建
FILE_REMOVE//删除
FILE_MODIFY//修改
FILE_RENAME。//重命名
j)删除map<string,NFileInfo>字典第一项,并重复步骤g。
本发明的最大优点是,利用多线程和事件通知技术,提高文件监控的执行效率,避免文件监控记录的丢失,并可以得到详细的文件变化信息。
此外,还以插件的形式提供了文件过滤功能,可以过滤掉一些无需处理的临时文件或系统文件,便于维护和扩展。
尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。
Claims (7)
1.一种精确监控目录文件夹中文件变化的文件同步方法,用于将第一终端中的目录文件夹中的文件变化同步到第二终端上,其特征在于,包括以下步骤:
步骤一:在第一终端上启动监控线程,监控线程循环遍历指定目录文件夹中的所有文件,当监控到指定目录文件夹中的文件发生变化后,监控线程获取发生变化的文件的变化信息,并将变化信息依次存储在链表中,且通过变化队列记录各变化信息在链表中的位置指针;
步骤二:当变化队列中记录有位置指针时,开启通知线程,通知线程根据位置指针撷取位于链表首位的队头变化信息,并解析该队头变化信息,检验该队头变化信息是否属于过滤文件,若不属于过滤文件,则将该队头变化信息存入同步字典中;
步骤三:启动工作线程,在同步字典中取出一项信息,根据该项信息中的类型信息,对该信息对应的变化文件进行同步到第二终端上的处理,同步处理成功后,清除变化队列、链表和同步字典中的相应信息;
重复步骤二和步骤三,直到链表中的变化信息为空。
2.如权利要求1所述的精确监控目录文件夹中文件变化的文件同步方法,其特征在于:监控线程实时在线不间断地循环遍历指定目录文件;而通知线程根据预设的时间启动,启动之前先检查变化队列中是否记录有位置指针,若有则启动通知线程,若无仍不启动通知线程;而工作线程也根据预设的时间启动,启动之前先检查同步字典中是否有信息,若有则启动工作线程,若无仍不启动工作线程。
3.如权利要求1或2所述的精确监控目录文件夹中文件变化的文件同步方法,其特征在于:所述变化信息中包括类型信息、指针位置信息、名称信息和/或文件大小信息。
4.如权利要求1或2所述的精确监控目录文件夹中文件变化的文件同步方法,其特征在于:所述类型信息包括新建、删除、修改和重命名。
5.如权利要求1或2所述的精确监控目录文件夹中文件变化的文件同步方法,其特征在于:通知线程和工作线程每天预定时间开启一次或两次。
6.如权利要求1或2所述的精确监控目录文件夹中文件变化的文件同步方法,其特征在于:在通知线程的开启到下一个开启的一个时间周期内,指定文件夹中同一文件的多次修改依次排列在链表中。
7.如权利要求1或2所述的精确监控目录文件夹中文件变化的文件同步方法,其特征在于:在通知线程的开启到下一个开启的一个时间周期内,指定文件夹中同一文件的多次修改根据在链表中合并,而将最后一次变化信息作为最终变化信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310153209.7A CN103258018B (zh) | 2013-04-27 | 2013-04-27 | 一种精确监控目录文件夹中文件变化的文件同步方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310153209.7A CN103258018B (zh) | 2013-04-27 | 2013-04-27 | 一种精确监控目录文件夹中文件变化的文件同步方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103258018A CN103258018A (zh) | 2013-08-21 |
CN103258018B true CN103258018B (zh) | 2016-08-10 |
Family
ID=48961935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310153209.7A Active CN103258018B (zh) | 2013-04-27 | 2013-04-27 | 一种精确监控目录文件夹中文件变化的文件同步方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103258018B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103561102B (zh) * | 2013-11-08 | 2017-03-22 | 北京奇虎科技有限公司 | 数据实时同步方法及系统 |
CN103634324B (zh) * | 2013-12-09 | 2017-10-31 | 飞天诚信科技股份有限公司 | 一种实时监控证书的方法 |
US9489394B2 (en) * | 2014-04-24 | 2016-11-08 | Google Inc. | Systems and methods for prioritizing file uploads |
CN105630818A (zh) * | 2014-10-31 | 2016-06-01 | 东莞宇龙通信科技有限公司 | 一种批量文件重命名的方法及装置 |
JP6719890B2 (ja) * | 2015-11-20 | 2020-07-08 | キヤノン株式会社 | 情報処理装置、ファイル監視システム、情報処理装置の制御方法及びプログラム |
CN106372526B (zh) * | 2016-08-19 | 2019-08-02 | 上海爱数信息技术股份有限公司 | 一种监控文件变化和同步的方法及系统 |
CN106372179B (zh) * | 2016-08-31 | 2020-04-03 | 上海爱数信息技术股份有限公司 | 一种探测文档变化和同步的方法及系统 |
CN106452717A (zh) * | 2016-09-14 | 2017-02-22 | 上海斐讯数据通信技术有限公司 | 一种多路由器单向同步方法及系统 |
CN106649625B (zh) * | 2016-12-06 | 2020-12-22 | 曙光信息产业(北京)有限公司 | 文件同步的方法和系统 |
CN109802992B (zh) * | 2018-12-10 | 2021-05-28 | 视联动力信息技术股份有限公司 | 一种资源变化日志读写的方法和装置 |
CN109783463A (zh) * | 2018-12-13 | 2019-05-21 | 杭州数梦工场科技有限公司 | 文件同步方法、装置及计算机可读存储介质 |
CN110162509A (zh) * | 2019-04-26 | 2019-08-23 | 平安普惠企业管理有限公司 | 文件比对方法、装置、计算机设备及存储介质 |
CN110704389B (zh) * | 2019-09-24 | 2022-02-01 | 武汉意畅智云科技有限公司 | 一种基于驱动和状态的双向文件同步方法 |
CN110825700A (zh) * | 2019-11-07 | 2020-02-21 | 成都品果科技有限公司 | 一种高效扫描磁盘中文件的方法 |
CN111262883A (zh) * | 2020-02-28 | 2020-06-09 | 浪潮软件股份有限公司 | 一种基于cmsp的文件同步系统、同步方法及文件系统 |
CN112261594B (zh) * | 2020-10-23 | 2022-02-11 | 北京金和网络股份有限公司 | 不定时消息推送方法及装置 |
CN114185749A (zh) * | 2021-12-15 | 2022-03-15 | 南京欧珀软件科技有限公司 | 监控方法与装置、电子设备 |
CN117009309B (zh) * | 2023-05-31 | 2024-05-07 | 合芯科技(苏州)有限公司 | 一种基于rsync的文件实时同步方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6000000A (en) * | 1995-10-13 | 1999-12-07 | 3Com Corporation | Extendible method and apparatus for synchronizing multiple files on two different computer systems |
CN101281543A (zh) * | 2008-05-13 | 2008-10-08 | 华为技术有限公司 | 文件同步方法及装置 |
CN101650678A (zh) * | 2009-07-27 | 2010-02-17 | 浪潮电子信息产业股份有限公司 | 一种基于文件操作语义异步复制的方法 |
CN102404338A (zh) * | 2011-12-13 | 2012-04-04 | 华为技术有限公司 | 一种文件同步方法和装置 |
CN102567341A (zh) * | 2010-12-09 | 2012-07-11 | 腾讯科技(深圳)有限公司 | 一种实现软件内外目录同步的方法和系统 |
-
2013
- 2013-04-27 CN CN201310153209.7A patent/CN103258018B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6000000A (en) * | 1995-10-13 | 1999-12-07 | 3Com Corporation | Extendible method and apparatus for synchronizing multiple files on two different computer systems |
CN101281543A (zh) * | 2008-05-13 | 2008-10-08 | 华为技术有限公司 | 文件同步方法及装置 |
CN101650678A (zh) * | 2009-07-27 | 2010-02-17 | 浪潮电子信息产业股份有限公司 | 一种基于文件操作语义异步复制的方法 |
CN102567341A (zh) * | 2010-12-09 | 2012-07-11 | 腾讯科技(深圳)有限公司 | 一种实现软件内外目录同步的方法和系统 |
CN102404338A (zh) * | 2011-12-13 | 2012-04-04 | 华为技术有限公司 | 一种文件同步方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103258018A (zh) | 2013-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103258018B (zh) | 一种精确监控目录文件夹中文件变化的文件同步方法 | |
CN103699580B (zh) | 数据库同步方法及装置 | |
CN110347746B (zh) | 一种异构数据库同步数据一致性校验方法及装置 | |
CN106534344B (zh) | 一种云平台视频处理系统及其应用方法 | |
CN105376277B (zh) | 一种数据同步方法及装置 | |
van Baar et al. | Digital forensics as a service: A game changer | |
CN107832196B (zh) | 一种用于实时日志异常内容的监测装置及监测方法 | |
CN107885804A (zh) | 数据库同步方法、应用服务器及计算机可读存储介质 | |
CN110569214B (zh) | 用于日志文件的索引构建方法、装置及电子设备 | |
CN104348859B (zh) | 文件同步方法、装置、服务器、终端及系统 | |
CN103678718A (zh) | 数据库同步方法及系统 | |
CN105183400B (zh) | 一种基于内容寻址的对象存储方法和系统 | |
CN106326292B (zh) | 数据结构和文件聚合、读取方法及装置 | |
WO2013143393A1 (zh) | 一种利用云计算来扫描设备的文件的方法和系统 | |
CN109522160B (zh) | 通过保存文件信息摘要进行文件目录比较备份方法和系统 | |
CN109460343A (zh) | 基于日志的系统异常监控方法、装置、设备及存储介质 | |
CN103353860B (zh) | 内存管理方法及装置 | |
CN105740103B (zh) | 一种基于日志的ntfs删除文件恢复方法和装置 | |
Lohiya et al. | Survey on mobile forensics | |
CN106372179B (zh) | 一种探测文档变化和同步的方法及系统 | |
CN109344034A (zh) | 一种用于管理日志的方法和装置 | |
CN106528688A (zh) | 一种针对Twitter的分析取证方法 | |
CN103179216A (zh) | 一种基于Twain协议的文件扫描及自动上传的方法 | |
CN108446076A (zh) | 基于网络摘要数据的索引创建方法和系统 | |
TWI400623B (zh) | 遠端電腦同步傳輸檔案技術 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |