文件同步方法及装置的制作方法

文档序号:6462679阅读:173来源:国知局

专利名称::文件同步方法及装置的制作方法
技术领域
:本发明涉及数据同步技术,具体涉及一种文件同步方法及装置。技术背景在信息处理的多种应用环境中,数据同步都有着广泛的需求。随着企业信息化程度的提高,考虑到数据的安全,需要将一台主机上的文件同步到另外的主机上进行备份;在分布式系统中,需要将基础数据文件同步到处于分布式系统中的各个主机上。满足同步需求的关键是要解决下列问题对文件同步的实时性、可靠性、高效性,以保证数据的安全可靠。目前对文件同步通常采用定时同步,主要有以下两种方式1、定时对源机需要同步的目录进行一次全扫描,对每个扫描到的文件到目的机验证,以确定该文件是否为新增或者做过修改,如果为新增或做过修改,则将文件同步到目的机。2、定时对源机需要同步的目录进行一次全扫描,对每个扫描后的文件先进行同步操作,然后将同步后的文件转移到本机备份目录。以后每次扫描时,都是处理新增文件。上述这两种定时同步方式均不能同步删除文件;而且,不能做到实时同步,可靠性较差。
发明内容本发明实施例提供一种文件同步方法及装置,以保证文件同步的实时性和可靠性。本发明实施例提供的一种文件同步方法,包括监控文件目录,当监控到所述文件目录中的文件发生变化时,记录该变化的变化事件;根据所述变化事件确定需要同步的文件;将所述需要同步的文件同步到目的机。本发明实施例提供的一种文件同步装置,包括监控单元,用于监控文件目录;记录单元,用于当所述监控单元监控到所述文件目录中的文件发生变化时,记录该变化的变化事件;解析单元,用于根据所述记录单元记录的变化事件确定需要同步的文件;同步单元,用于将所述需要同步的文件同步到目的机。由以上本发明实施例提供的技术方案可以看出,本发明实施例通过监控方式,实时监控文件目录,当监控到有文件发生变化时,记录变化事件;根据所述变化事件确定需要同步的文件;将所述需要同步的文件同步到目的机。因此,可以将发生变化的文件能立即同步到目的机上,保证了文件同步的实时性和可靠性。图l是本发明文件同步方法的一种实施例的实现流程图;图2是本发明方法实施例中记录变化事件的实现流程图;图3是本发明方法实施例中解析变化事件的实现流程图;图4是本发明实施例中进行文件目录扫描的流程图;图5是本发明文件同步方法的另一种实施例的时序图;图6是本发明实施例文件同步装置的结构框图。具体实施方式为了使本
技术领域
的人员更好地理解本发明实施例的方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。为了保证文件同步的实时性,将发生变化的文件能立即同步到目的机上,本发明实施例采用实时监控方式,当监控到有文件发生变化时,记录变化事件,并根据所述变化事件确定需要同步的文件。如图l所示,是本发明文件同步方法的一种实施例的实现流程,主要包括以下步骤步骤IOI,监控文件目录,当监控到所述文件目录中的文件发生变化时,记录该变化的变化事件。本实施例中,可以利用操作系统的接口,采用文件变化事件通知机制,实时监控文件目录中文件的变化。比如,在Linux操作系统下,可以使用操作系统提供的INOTIFY文件变化监控机制,实时监控文件目录中的文件变化;在Windows」操作系统下,可以利用系统接口ReadDirectoryChangesW,实时监控文件目录中的文件变化。由于操作系统接口的使用,可以在目录中的文件修改后的第一时间得到文件变化通知,从而可以实现海量文件的实时同步。本发明实例中,也可以采用其他手段或自定义的手段监控文件目录中文件的变化。在本发明实施例中,为了保证文件同步的可靠性,可以将文件发生变化的变化事件写到指定的队列,比如事件队列,在变化事件太多时,而如队列满后,也可以将变化事件写入未处理事件文件,以保证所述变化事件不被丢失。当既有未处理事件文件未处理,也有搡作系统通知事件发生时,可以先处理已存在的未处理事件文件,将通知事件继续写入该未处理事件文件,从而保证文件同步操作的顺序进行。对此在后面将进行详细描述。步骤102,根据所述变化事件确定需要同步的文件。相应地,可以首先从所述事件队列中读取变化事件,对该变化事件进行解析,确定需要同步的文件。如果所述事件队列为空,则将未处理事件文件读入所述事件队列,然后,从所述事件队列中读取变化事件,对该变化事件进行解析,确定需要同步的文件。步骤103,将所述需要同步的文件同步到目的机。进行文件同步的手段可以有多种,例如FTP(FileTransferProtocol,文件传输协议)传输方式或者利用socket方式,实现同步文件的传输。可见,本发明实施例通过监控文件目录,记录所述文件目录中的文件发生变化的变化事件,比如采用操作系统文件变化通知机制,可以保证同步的实时进行,写事件文件方式,可以保证同步的可靠性。下面对本发明实施例中记录变化事件及解析变化事件的流程进行详细说明。在本发明实施例中,可以将所述变化事件记录到事件队列,如果所述事件队列已满或有未处理事件文件,则可以将所述变化事件写入所述未处理事件文件,所述未处理事件文件可以有一个或多个,以保证所有变化事件不会丢失。当有多个未处理事件文件时,可以通过文件队列对各未处理事件文件进行排队,以保证先发生变化的文件能够得到优先同步处理。如图2所示,是本发明实施例中记录变化事件的实现流程,主要包括以下步骤步骤201,利用操作系统接口获得文件变化事件。比如,在Linux操作系统下,使用操作系统提供的INOTIFY文件变化监控机制,获取文件变化事件;在Windows操作系统下,利用系统接口ReadDirectoryChangesW,获取文件变化事件。步骤202,判断是否有未处理事件文件存在;如果是,则执行步骤203;否则,执行步骤205。步骤203,判断是否有未写满的未处理事件文件;如果是,则执行步骤204;否则,执行步骤207。步骤204,将变化事件写入未处理事件文件,本流程结束。步骤205,判断事件队列是否已满;如果是,则执行步骤203;否则,执行步骤206。步骤206,将变化事件写入事件队列,本流程结束。步骤207,新建未处理事件文件,并将该未处理事件文件名放入文件队列。本流程结束。相应地,在处理变化事件时,即解析变化事件确定需要同步的文件时,可以按照以下过程来进行当事件队列为非空时,依次解析所述事件队列中的变化事件,确定所述事件队列中记录的变化事件中需要同步的文件;当事件队列为空后,将未处理事件文件中的变化事件加载到事件队列,并依次解析所述事件队列中的变化事件,确定所述未处理事件文件中记录的变化事件中需要同步的文件;在所述未处理事件文件中的变化事件加载到所述事件队列后,删除所述未处理事件文件。需要说明的是,当有多个未处理事件文件时,可以根据文件队列中的顺序,依次加载各未处理事件文件到所述事件队列,以保证先发生变化的文件能够得到优先同步处理。如图3所示,是本发明实施例中解析变化事件的实现流程,主要包括以下步骤步骤301,判断事件队列是否为空;如果是,则执行步骤302;否则,执行步骤305。步骤302,判断文件队列是否为空;如果是,则执行步骤307;否则,执行步骤303。步骤303,弹出文件队列顶部元素,作为读入事件队列的未处理事件文件。步骤304,将弹出的事件文件读入事件队列。步骤305,从事件队列的队首读:f又一个变化事件。步骤306,解析变化事件,确定需要同步的文件,本流程结束。步骤307,未读取到变化事件,等待预定时间后,重新进行读取过程,本流程结束。利用图2所示记录变化事件的方式、以及图3所示解析变化事件的方式,可以保证同步的实时性及可靠性。为了进一步提高同步的高效性,还可以在启动文件同步任务时对源机进行目录扫描(如全目录扫描),获取所述目录中文件的修改时间;如果所述文件的修改时间比记录的上次文件同步的检查时间新,则将所述文件同步到目的机;将所述文件同步到目的机后,记录本次文件同步的检查点时间。此外,还可以在第一次对文件目录扫描完,并且没有待处理的变化事件时,记录此时目录的状态信息到检查点信息文件,并设定此后隔一定时间为一个检查点,当到达检查点、并且没有待处理的未处理事件文件时,更新检查点信息文件。下次扫描时,根据检查点信息文件中记录的目录状态信息决定该目录下的各个文件的操作,从而决定该文件是否需要同步。检查点信息文件的使用可以加快后续扫描文件目录的速度,减少网络交互,从而保证文件目录扫描的高效运行。如图4所示,是本发明实施例中进行文件目录扫描的流程图,主要包括以下步骤步骤401,判断检查点信息文件是否存在;如果是,则执行步骤402;否则,执行步骤403;步骤402,读取检查点信息文件,以获取最近的检查点信息;然后执行步骤404;步骤403,新建检查点信息文件,并初始化检查点信息;步骤404,根目录进栈;步骤405,判断栈是否为空;如果是,则执行步骤406;否则,执行步骤407;步骤406,结束扫描过程,本流程结束。步骤407,弹出栈顶元素,作为当前待扫描的文件目录;步骤408,打开待扫描文件目录;步骤409,判断该文件目录下是否有文件;如果是,则执行步骤410;否则,执行步骤405;步骤410,获取该文件目录下的一个文件;步骤411,判断该文件是否为目录;如果是,则执行步骤412;否则,执行步骤413;步骤412;将该目录进栈;步骤413,将文件信息与检查点信息进行比较,决定是否需要进行文件同步;如果是,则执行步骤414;否则,执行步骤409;步骤414,进行文件同步,本流程结束。利用该扫描流程,可以进一步保证文件同步的可靠性。在使用操作系统接口监控文件目录时,如果用于执行文件同步任务的同步程序宕掉(比如程序异常发生的运行中止或程序重启动时)或是一皮人为停止掉,那么之后产生的文件变化事件就捕捉不到,造成变化事件的丟失。为解决这一问题,进一步保证同步的可靠性,可以在重新启动同步程序时,对源机进行目录扫描(如全目录扫描),以保证得到同步程序停止后的文件变化。也就是说,本发明实施例中,可以在启动文件同步任务时,同时启动目录扫描线程和目录监控线程,目录扫描线程保证目录监控线程宕掉或停止后的变化信息得到同步,目录监控线程保证实时的文件变化信息得到同步。这样设计可以更好地保证文件同步的实时性和可靠性。如图5所示,是另一种本发明实施例文件同步方法的时序图,包括以下步骤步骤501,在启动文件同步任务时启动扫描线程;步骤502,启动监控线程;步骤503,扫描文件目录,以检查是否有文件发生变化;步骤504,如果有文件发生变化,则同步变化文件;步骤505,实时监控文件目录;步骤506,监控到变化事件后,将所述变化事件记录到事件队列;步骤507,如果事件队列已满或有未处理事件文件,则将变化事件写入所述未处理事件文件;步骤508,读取事件队列中的变化事件,确定需要同步的文件;步骤509,如果事件队列空,则读取未处理事件文件中的变化事件,需要同步的文件;当然,如前面所述,在读耳又未处理事件文件时,如果有多个未处理事件文件,可以依照文件队列中的顺序依次读取,而且将未处理事件文件中的变化事件加载到事件队列,然后依次解析所述事件队列中的变化事件,确定所述未处理事件文件中记录的变化事件中需要同步的文件。另外,在所述未处理事件文件中的变化事件加载到所述事件队列后,还需要删除该未处理事件文件。步骤510,将发生变化的文件同步到目的机。需要说明的是,在本发明实施例中,所述未处理事件文件在同步进程中的事件队列满时产生,新产生的变化事件在已有未处理事件文件没有处理完时,继续写入该未处理事件文件。在该未处理事件文件加载到事件队列后,删除该未处理事件文件。同步进程刚启动时,需要删除已有的未处理事件文件,同步进程正常退出时删除未处理事件文件,该未处理事件文件中的变化事件可以由下一次同步程序启动后的扫描进程来完成。同步进程可以有多个未处理事件文件,为了方便处理,可以-没定每个未处理事件文件中记录的变化事件条数相同,且等于同步进程中事件队列的大小。事件队列的大小可以在同步程序启动时指定。所述事件文件中可以包含以下信息文件名、文件的操作方式、文件类型等,具体格式可以如下表l所示<table>tableseeoriginaldocumentpage11</column></row><table>表1在上面已经提到,可以在第一次对文件目录扫描完,并且没有待处理的变化事件时,记录此时目录的状态信息到检查点信息文件。下次扫描时,根据检查点信息文件中记录的目录状态信息决定该目录下的各个文件的操作,从而决定该文件是否需要同步。需要说明的是,单个同步进程只有一个检查点信息文件,该检查点信息文件在同步进程启动时,在默认路径中不能找到时建立。所述检查点信息文件中包含的信息及格式可以如下表2所示:检查点信息文件标识需保留的检查点信息个数最新的检查点信息在文件中的位置(表示第几个检查点信息)检查点信息(可以只i己录时间)检查点信息检查点信息表2检查点信息可以定时进行更新,在定时时间到达后,如果目录扫描已经结束,并且没有待处理的事件时,更新所述^r查点信息。检查点信息文件中,可以根据用户在启动同步进程时的指定,保留相应数目的历史检查点信息。用户在启动同步进程时,可以指定使用哪个检查点信息。设需保留的检查点信息个数为N,最新的检查点信息在文件中的位置为P(P从0开始计数),检查点信息所占空间为M字节,假设检查点信息文件标识占LA字节,需保留检查点信息个数占LB字节,最新检查点信息在文件中的位置占LC字节。在同步进程启动时,若没有指定使用哪个检查点信息,则所要读取的检查点信息的位置LOCI为L0C1=LA+LB+LC+P*M(公式1)记录下一个^r查点信息的位置LOC2为LOC2=LA+LB+LC+((P+1)%N)*M(公式2)根据LOCl获取老的检查点信息,进行文件扫描。根据LOC2设置新的检查点信息,如果LOC2已经有检查点信息,旧的信息将一皮覆盖。设置新的检查点信息的同时,需要修改最新检查点信息的位置为P=(P+1)%N。若指定使用第i个检查点,则检查点信息的位置为LOC3=LA+LB+LC+(P+i)%N。利用本发明实施例的文件同步方法,可以保证文件同步的实时、可靠和高效。需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁碟、光盘等。本发明实施例还提供了一种文件同步装置,如图6所示,是该文件同步装置的结构框图,主要包括监控单元61、记录单元62、解析单元63和同步单元64,为了进一步文件同步的可靠性,还可以包括扫描单元65、比4交单元66和检查点时间更新单元67。其中监控单元61用于监控文件目录;记录单元62用于当监控单元61监控到有文件发生变化时,记录该变化的变化事件;解析单元63用于4艮据记录单元62记录的变化事件确定需要同步的文件;同步单元64用于将所述需要同步的文件同步到目的机。扫描单元65用于在启动文件同步任务时对源机进行目录扫描,获取所述目录中文件的修改时间;比较单元65用于比较所述文件的修改时间与记录的上次文件同步的才企查点时间,如果所述文件的^f奮改时间比记录的上次文件同步的^r查点时间新,则通知同步单元64将所述文件同步到目的机;检查点时间更新单元66用于在比较单元65将所述文件同步到目的机后,记录本次文件同步的^r查点时间。其中,记录单元62可以包括以下子单元(图中未示)写队列子单元,用于将所述变化事件记录到事件队列;写文件子单元,用于在所述事件队列已满或有未处理事件文件时,将所述变化事件写入所述未处理事件文件。相应地,解析单元63可以包括以下子单元(图中未示)队列解析子单元,用于当所述事件队列为非空时,依次解析所述事件队列中的变化事件,确定所述事件队列中记录的变化事件中需要同步的文件;文件解析子单元,用于当所述事件队列为空后,将所述未处理事件文件中的变化事件加载到所述事件队列,并依次解析所述事件队列中的变化事件,确定所述未处理事件文件中记录的变化事件中需要同步的文件;文件删除子单元,用于在所述未处理事件文件中的变化事件加载到所述事件队列后,删除所述未处理事件文件。利用本发明实施例的装置实现文件同步的具体过程与前面对本发明方法中的描述类似,在此不再赘述。以上对本发明实施例进行了详细介绍,本文中应用了具体实施方式对本发明进行了阐述,以上实施例的说明只是用于帮助理解本发明的装置及方法;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。权利要求1.一种文件同步方法,其特征在于,包括监控文件目录,当监控到所述文件目录中的文件发生变化时,记录该变化的变化事件;根据所述变化事件确定需要同步的文件;将所述需要同步的文件同步到目的机。2、根据权利要求1所述的方法,其特征在于,所述方法还包括在启动文件同步任务时对源机进行目录扫描,获取所述目录中文件的修改时间;如果所述文件的修改时间比记录的上次文件同步的检查时间新,则将所述文件同步到目的才几;将所述文件同步到目的才几后,记录本次文件同步的才企查点时间。3、根据权利要求1或2所述的方法,其特征在于,所述记录变化事件包括将所述变化事件记录到事件队列;如果所述事件队列已满或有未处理事件文件则将所述变化事件写入所述未处理事件文件。4、根据权利要求3所述的方法,其特征在于,所述根据所述变化事件确定需要同步的文件包括当所述事件队列为非空时,依次解析所述事件队列中的变化事件,确定所述事件队列中记录的变化事件中需要同步的文件;当所述事件队列为空后,将所述未处理事件文件中的变化事件加载到所述事件队列,并依次解析所述事件队列中的变化事件,确定所述未处理事件文件中记录的变化事件中需要同步的文件;在所述未处理事件文件中的变化事件加载到所述事件队列后,删除所述未处理事件文件。5、根据权利要求1所述的方法,其特征在于,所述将需要同步的文件同步到目的机包括利用文件传输协议或者socket方式将需要同步的文件同步到目的机。6、根据权利要求1所述的方法,其特征在于,利用操作系统的文件变化事件通知机制实时监控所述文件目录。7、一种文件同步装置,其特征在于,包括监控单元,用于监控文件目录;记录单元,用于当所述监控单元监控到所述文件目录中的文件发生变化时,记录该变化的变化事件;解析单元,用于根据所述记录单元记录的变化事件确定需要同步的文件;同步单元,用于将所述需要同步的文件同步到目的机。8、根据权利要求7所述的装置,其特征在于,还包括扫描单元,用于在启动文件同步任务时对源机进行目录扫描,获取所述目录中文件的修改时间;比较单元,用于比较所述文件的修改时间与记录的上次文件同步的检查点时间,如果所述文件的^"改时间比记录的上次文件同步的冲全查点时间新,则通知所述同步单元将所述文件同步到目的机;检查点时间更新单元,用于在所述比较单元将所述文件同步到目的机后,记录本次文件同步的^r查点时间。9、根据权利要求1或2所述的装置,其特征在于,所述记录单元包括写队列子单元,用于将所述变化事件记录到事件队列;写文件子单元,用于在所述事件队列已满或有未处理事件文件时,将所述变化事件写入所述未处理事件文件。10、根据权利要求9所述的装置,其特征在于,所述解析单元包括队列解析子单元,用于当所述事件队列为非空时,依次解析所述事件队列中的变化事件,确定所述事件队列中记录的变化事件中需要同步的文件;文件解析子单元,用于当所述事件队列为空后,将所述未处理事件文件中的变化事件加载到所述事件队列,并依次解析所述事件队列中的变化事件,确定所述未处理事件文件中记录的变化事件中需要同步的文件;文件删除子单元,用于在所述未处理事件文件中的变化事件加载到所述事件队列后,删除所述未处理事件文件。全文摘要本发明涉及数据同步技术,公开了一种文件同步方法,包括监控文件目录,当监控到所述文件目录中的文件发生变化时,记录该变化的变化事件;根据所述变化事件确定需要同步的文件;将所述需要同步的文件同步到目的机。本发明还公开了一种文件同步装置,包括监控单元,记录单元,解析单元和同步单元。利用本发明,可以保证文件同步的实时性和可靠性。文档编号G06F17/30GK101281543SQ20081009812公开日2008年10月8日申请日期2008年5月13日优先权日2008年5月13日发明者张建勋,伟郑申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1