本发明涉及计算机领域,具体来说,涉及一种扫描文件的方法和系统。
背景技术:
归档系统是提供将生产系统里的数据复制到离线系统中,并对这个备份数据进行管理的系统,其中,生产系统和离线系统可以是曙光并行存储系统,也可以是第三方文件系统。在该归档系统中需要一个文件扫描模块来提供扫描文件的功能,以便归档系统确定哪些文件需要备份。但是,现有的扫描文件功能并不满足归档系统的要求,无法实现将生产系统中的文件正确高效地传输到离线系统中。
针对相关技术中的问题,目前尚未提出有效的解决方案。
技术实现要素:
针对相关技术中的问题,本发明提出一种扫描文件的方法和系统,能够将生产系统中的文件正确高效地传输到离线系统中。
本发明的技术方案是这样实现的:
根据本发明的一个方面,提供了一种扫描文件的方法。
该扫描文件的方法包括:获取预先设置的备份规则;根据备份规则,扫描出需备份的文件,并且将需备份的文件列表发送;接收文件列表,并将需备份的文件进行备份。
根据本发明的一个实施例,根据备份规则,扫描出需备份的文件包括:根据备份规则,生成扫描任务,并将扫描任务添加到工作线程中;根据扫描任务,工作线程对目录进行扫描,并处理目录对应的目录项。
根据本发明的一个实施例,文件列表包括:文件信息、目录信息。
根据本发明的一个实施例,工作线程对目录进行扫描,并处理目录对应的目录项包括:在目录项为文件的情况下,工作线程将需备份的文件对应的目录项中的文件信息发送至对应的控制模块;在目录项为目录的情况下,工作线程将扫描任务进行分配给扫描进程,并且将扫描任务添加到扫描队列的队首,以及将需备份的文件对应的目录项中的目录信息发送至对应的控制模块。
根据本发明的一个实施例,将需备份的文件列表发送包括:将需备份的文件列表分批次进行发送。
根据本发明的一个实施例,接收文件列表包括:分批次接收文件列表,并在每批次接收文件列表成功后,控制模块反馈Ack信息。
根据本发明的另一方面,提供了一种扫描文件的系统。
该扫描文件的系统包括:
获取模块,用于获取预先设置的备份规则;
扫描发送模块,用于根据备份规则,扫描出需备份的文件,并且将需备份的文件列表发送;
备份模块,用于接收文件列表,并将需备份的文件进行备份。
根据本发明的一个实施例,扫描发送模块包括:
添加模块,用于根据备份规则,生成扫描任务,并将扫描任务添加到工作线程中;
扫描模块,用于根据扫描任务,工作线程对目录进行扫描,并处理目录对应的目录项。
根据本发明的一个实施例,文件列表包括:文件信息、目录信息。
根据本发明的一个实施例,扫描模块包括:
文件扫描模块,用于在目录项为文件的情况下,工作线程将需备份的文件对应的目录项中的文件信息发送至对应的控制模块;
目录扫描模块,用于在目录项为目录的情况下,工作线程将扫描任务进行分配给扫描进程,并且将扫描任务添加到扫描队列的队首,以及将需备份的文件对应的目录项中的目录信息发送至对应的控制模块。
本发明的有益技术效果在于:
本发明通过获取预先设置的备份规则,随后根据备份规则,扫描出需备份的文件,并且将需备份的文件列表发送,最后接收文件列表,并将需备份的文件进行备份,从而能够将生产系统中的文件正确高效地传输到离线系统中。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的扫描文件的方法的流程图;
图2是根据本发明实施例的归档系统的示意图;
图3是根据本发明实施例的扫描引擎线程结构图;
图4是根据本发明实施例的控制模块和文件扫描模块的交互过程的示意图;
图5是根据本发明实施例的文件扫描模块处理控制模块的任务的流程图;
图6是根据本发明实施例的扫描文件的系统的框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
根据本发明的实施例,提供了一种扫描文件的方法。
如图所示,根据本发明实施例的扫描文件的方法包括:
步骤S101,获取预先设置的备份规则;
步骤S103,根据备份规则,扫描出需备份的文件,并且将需备份的文件列表发送;
步骤S105,接收文件列表,并将需备份的文件进行备份。
本发明通过获取预先设置的备份规则,随后根据备份规则,扫描出需备份的文件,并且将需备份的文件列表发送,最后接收文件列表,并将需备份的文件进行备份,从而能够将生产系统中的文件正确高效地传输到离线系统中。
根据本发明的一个实施例,根据备份规则,扫描出需备份的文件包括:根据备份规则,生成扫描任务,并将扫描任务添加到工作线程中;根据扫描任务,工作线程对目录进行扫描,并处理目录对应的目录项。
根据本发明的一个实施例,文件列表包括:文件信息、目录信息。
根据本发明的一个实施例,工作线程对目录进行扫描,并处理目录对应的目录项包括:在目录项为文件的情况下,工作线程将需备份的文件对应的目录项中的文件信息发送至对应的控制模块;在目录项为目录的情况下,工作线程将扫描任务进行分配给扫描进程,并且将扫描任务添加到扫描队列的队首,以及将需备份的文件对应的目录项中的目录信息发送至对应的控制模块。
根据本发明的一个实施例,将需备份的文件列表发送包括:将需备份的文件列表分批次进行发送。
根据本发明的一个实施例,接收文件列表包括:分批次接收文件列表,并在每批次接收文件列表成功后,控制模块反馈Ack信息。
下面将通过具体的实施例对本发明进行详细的描述。
如图2所示,该归档系统包括:oMgs模块、oBKe模块、oScan模块、oScan模块,上述模块的主要功能如下:
oMgs模块,用于负责备份规则的添删改查等操作,同时负责各类节点的增加删除等操作,同时,将备份规则发送给oBKe模块;
oBKe模块,该oBKe模块为控制模块,即为该归档系统的总控制中心,用于接收oMgs模块发送的备份规则,以及接收oScan模块发送的文件,同时将备份文件的操作分解为并发的任务等操作;
oScan模块,该模块为文件扫描模块,设置在索引服务器集群oPara中,用于负责根据备份规则扫描出要备份的文件,并将这些文件列表发送给oBke模块;
oBks模块,用于负责接收需要备份的文件,并将其存储到离线系统中。
此外,如图3所示,当备份策略执行时间到时,oBke模块向oScan模块发送消息,oScan模块生成一个任务,投递到本地pending队列,其中,该Pending队列用于保存所有尚未从磁盘返回处理响应的写命令。同时,控制线程负责从本地pending队列获取扫描任务,分配任务结构,投递到工作线程队列中。
工作线程负责对目录进行扫描(readdir)并处理目录(dentry)项,如果dentry项是文件则调用注册的文件处理函数将文件信息加入对应oBke的缓冲区buf(线程间不共享),然后判断该buf是否满,是则发送异步消息(控制发送中的消息总量);如果dentry项是目录,调用注册的目录处理函数分配任务,加到扫描队列队首。每个工作线程同一时刻只处理一个备份规则对应的目录下的扫描任务,同时最多有5个扫描线程同时工作,而其它的扫描任务在pending队列中等待。
整个扫描任务处理完成后,网络回调函数投递一个任务到完成队列,完成线程将结果通知oBke模块。
另外,图4示出了oBke模块和oScan模块的交互过程,具体如下:
第一阶段
步骤S11,oBke模块将所有的需要扫描的任务发送至oScan模块;
步骤S12,oScan模块接收上述扫描任务,并将所有任务加到工作线程队列中,并将上述所有任务的状态设置为“扫描中”;
第二阶段
步骤S21,oScan模块将第1批文件列表发送至oBke模块,若oScan模块未收到oBke模块反馈的ACK(Acknowledgement,即确认字符),则重新投递到发送队列;
步骤S22,oBke模块接收第1批文件列表,并将该第1批文件列表存储,后反馈ACK;
步骤S23,重复步骤上述步骤S21-S22,直至oScan模块将第n批文件列表发送至oBke模块,同时,该第n批文件列表中附带完成标识
步骤S24,oBke模块接收第n批文件列表,并将该第n批文件列表存储,并将该任务的状态设置成“已完成”,并预备同步这些文件;
第三阶段
oScan模块处理完成,将该任务从队列中删除,并清理占用的内存。
此外,图5示出了oScan模块处理oBke模块的任务的流程图,具体流程如下:
步骤51,oScan模块开始处理扫描任务;
步骤52,oScan模块查看是否有空闲的工作线程,若没有,返回步骤S51,若有,则执行步骤S51;
步骤53,oScan模块从本地pending队列中取出一个任务,选出一个空闲的工作线程,将该任务挂载到该线程中,同时,从本地pending队列中取出一个任务,选出一个空闲线程,并挂载到该空闲线程中,同时设置该线程状态为busy(忙碌的)。
根据本发明的实施例,还提供了一种扫描文件的系统。
如图6所示,根据本发明实施例的扫描文件的系统包括:
获取模块61,用于获取预先设置的备份规则;
扫描发送模块62,用于根据备份规则,扫描出需备份的文件,并且将需备份的文件列表发送;
备份模块63,用于接收文件列表,并将需备份的文件进行备份。
根据本发明的一个实施例,扫描发送模块62包括:
添加模块(未示出),用于根据备份规则,生成扫描任务,并将扫描任务添加到工作线程中;
扫描模块(未示出),用于根据扫描任务,工作线程对目录进行扫描,并处理目录对应的目录项。
根据本发明的一个实施例,文件列表包括:文件信息、目录信息。
根据本发明的一个实施例,扫描模块包括:
文件扫描模块(未示出),用于在目录项为文件的情况下,工作线程将需备份的文件对应的目录项中的文件信息发送至对应的控制模块;
目录扫描模块(未示出),用于在目录项为目录的情况下,工作线程将扫描任务进行分配给扫描进程,并且将扫描任务添加到扫描队列的队首,以及将需备份的文件对应的目录项中的目录信息发送至对应的控制模块。
综上所述,借助于本发明的上述技术方案,通过获取预先设置的备份规则,随后根据备份规则,扫描出需备份的文件,并且将需备份的文件列表发送,最后接收文件列表,并将需备份的文件进行备份,从而能够将生产系统中的文件正确高效地传输到离线系统中。同时,在每批次接收文件列表成功后,控制模块反馈Ack信息,避免了文件传输错误或传输失败等情况。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。