一种数据备份方法及装置与流程

文档序号:18939695发布日期:2019-10-23 01:03阅读:215来源:国知局
一种数据备份方法及装置与流程

本发明涉及计算机技术领域,具体涉及一种数据备份方法及装置。



背景技术:

随着信息技术的高速发展,数据和信息的呈爆炸式增长,需要的存储的数据和信息量也越来越大,为了防范数据丢失和保证数据安全,数据备份技术得到了广泛的应用。

数据备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘复制到其它的存储介质的过程。在实际应用过程中,由于需要备份的数据量巨大,使得数据在备份过程存在运行速度慢、传输效率低、资源利用率低等各种问题。



技术实现要素:

针对现有技术中的问题,本发明实施例提供一种数据备份方法及装置,能够至少部分地解决现有技术中存在的问题。

一方面,本发明提出一种数据备份方法,包括:

根据待备份数据的所有第n级子目录以及第1级子目录至第n-1级子目录中的叶子目录,建立任务队列,所述任务队列中的每个任务对应一个第n级子目录或者叶子目录;其中,所述叶子目录为空子目录或者文件;

启动所述任务队列进行数据备份。

另一方面,本发明提供一种数据备份装置,包括:

建立单元,用于根据待备份数据的所有第n级子目录以及第1级子目录至第n-1级子目录中的叶子目录,建立任务队列,所述任务队列中的每个任务对应一个第n级子目录或者叶子目录;其中,所述叶子目录为空子目录或者文件;

启动单元,用于启动所述任务队列进行数据备份。

再一方面,本发明提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一实施例所述数据备份方法的步骤。

又一方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任一实施例所述数据备份方法的步骤。

本发明实施例提供的数据备份方法及装置,根据待备份数据的所有第n级子目录以及第1级子目录至第n-1级子目录中的叶子目录,建立任务队列,然后启动所述任务队列进行数据备份,能够减少备份数据过程中比对的目录的数量,减少数据备份的时间,从而提高了数据备份的效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1是本发明一实施例提供的数据备份方法的流程示意图。

图2是本发明一实施例提供的待备份数据的目录结构示意图。

图3是本发明另一实施例提供的数据备份方法的流程示意图。

图4是本发明再一实施例提供的数据备份方法的流程示意图。

图5是本发明一实施例提供的数据备份方法的逻辑流程图。

图6是本发明一实施例提供的存量备份的逻辑流程图。

图7是本发明一实施例提供的增量备份的逻辑流程图。

图8是本发明一实施例提供的数据备份装置的结构示意图。

图9是本发明另一实施例提供的数据备份装置的结构示意图。

图10是本发明再一实施例提供的数据备份装置的结构示意图。

图11为本发明一实施例提供的电子设备的实体结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

本发明实施例提供的数据备份方法的执行主体包括但不限于服务器、台式机、笔记本电脑和平板电脑。为了便于说明本发明实施例,以服务器为执行主体对本发明实施例提供的数据备份方法进行说明。

图1是本发明一实施例提供的数据备份方法的流程示意图,如图1所示,本发明实施例提供的数据备份方法,包括:

s101、根据待备份数据的所有第n级子目录以及第1级子目录至第n-1级子目录中的叶子目录,建立任务队列,所述任务队列中的每个任务对应一个第n级子目录或者叶子目录;其中,所述叶子目录为空子目录或者文件;

具体地,在数据备份任务被触发之后,服务器会根据待备份数据的所有第n级子目录以及第1级子目录至第n-1级子目录中的叶子目标建立任务队列,即为所有第n级子目录中的每个第n级子目录建立一个对应的任务,为第1级子目录至第n-1级子目录中的每个叶子目录建立一个对应的任务,所述任务队列中的每个任务对应一个第n级子目录或者叶子目录,所述叶子目录为空子目录或者文件。其中,n为大于1的正整数。可理解的是,数据备份任务可以被定期的触发,也可以人为下发控制命令触发,根据实际需要进行设置,本发明实施例不做限定。

例如,图2是本发明一实施例提供的待备份数据的目录结构示意图,如图2所示,目录a为所述待备份数据的根目录,第1级子目录包括b1、b2、b3和b4四个子目录,其中子目录b1和子目录b2为叶子目录;第2级子目录只列出子目录b3包括的四个子目录c1、c2、c3和c4,其中子目录c1为叶子目录;第3级子目录只列出子目录c2包括的四个子目录d1、d2、d3和d4,其中子目录d1和子目录d2为叶子目录;第4级子目录只列出子目录d3包括的四个子目录e1、e2、e3和e4,其中子目录e1和子目录e2为叶子目录;第5级子目录只列出子目录e3包括的四个子目录f1、f2、f3和f4,其中子目录f1和子目录f2为叶子目录;第6级子目录只列出子目录f3包括的两个子目录g1和g2,其中第6级子目录没有叶子目录。设置n=4,那么所述服务器在对所述待备份数据进行备份时,会根据所有的第4级子目录、第1级子目录的叶子目录、第2级子目录的叶子目录和第3级子目录的叶子目录建立任务队列。假设子目录b3和子目录b4具有相同的目录结构,子目录c2、c3和c4具有相同的目录结构,子目录d3和d4具有相同的目录结构,那么所述任务队列中子目录d3的四个子目录e1、e2、e3和e4分别对应一个任务,d4的四个子目录分别对应一个任务,子目录b1、子目录b2、子目录c1、子目录d1和子目录d2分别对应一个任务,所述任务队列中共有13个任务。

s102、启动所述任务队列进行数据备份。

具体地,在建立所述任务队列之后,所述服务器会启动所述任务队列中的每个任务并执行,可以将每个任务对应的子目录或叶子目录的数据复制到备份终端,所述服务器可以利用数据备份工具进行数据的复制。所述备份终端可以是另外一台服务器或者所述服务器的另一块硬盘,根据实际需要进行选择,本发明实施例不做限定。所述任务队列中的任务可以逐一地执行,也可以并发执行,根据实际需要进行设置,本发明实施例不做限定。

例如,所述数据备份工具采用rsync数据镜像备份工具,rsync是linux系统自带的备份工具,具有安全性高、备份迅速、支持增量和压缩传输等特点。

本发明实施例提供的数据备份方法,根据待备份数据的所有第n级子目录以及第1级子目录至第n-1级子目录中的叶子目录,建立任务队列,然后启动所述任务队列进行数据备份,能够减少备份数据过程中比对的目录的数量,减少数据备份的时间,从而提高了数据备份的效率。

在上述各实施例的基础上,进一步地,所述启动所述任务队列进行数据备份包括:

为所述任务队列中的每个所述任务开启一个进程并加进程锁。

具体地,所述服务器在启动所述任务队列中的每个所述任务时,会为每个所述任务开启一个进程,为了避免相邻任务之间的资源读取冲突,在为所述任务开启进程的同时,会为所述任务的进程加进程锁。

在上述各实施例的基础上,进一步地,本发明实施例提供的数据备份方法还包括:

若判断获知所述任务的进程异常和/或所述任务的进程对应的进程锁异常,则终止所述任务。

具体地,所述服务器在数据备份的过程中,会判断每个所述任务的进程和进程锁是否异常,如果所述任务的进程异常和/或进程锁异常,说明所述任务的进程僵死,所述服务器会终止所述任务,即杀死该任务的进程。在本次数据备份的过程中被杀死的任务,可以在下次进行数据备份的时候添加到建立的任务队列中。

在上述各实施例的基础上,进一步地,所述启动所述任务队列进行数据备份包括:

并发执行所述任务队列中的多个所述任务,并为多个所述任务中的每个所述任务开启一个进程并加进程锁。

具体地,为了提高数据备份的效率,所述服务器在启动所述任务队列中的任务时,可以同时启动多个所述任务并发执行,在启动所述多个任务中的每个所述任务时,会为每个所述任务开启一个进程,并为所述进程加进程锁,从而避免相邻任务之间的资源读取冲突。在并发执行的多个所述任务中,如果有任务先完成,可以启动所述任务队列中未执行的任务,保持多个任务并发执行,直到所述任务队列中的所有任务执行完成。其中,并发执行所述任务的数量可以根据实际情况进行设置,本发明实施例不做限定。

在上述各实施例的基础上,进一步地,所述启动所述任务队列进行数据备份还包括:

若判断获知系统资源利用率小于阈值,则增加并发执行的所述任务的数量。

具体地,所述服务器在备份数据时,可以统计系统资源利用率,将所述系统资源利用率与阈值进行比较,如果所述系统资源利用率小于所述阈值,那么增加并发执行的所述任务的数量,即从所述任务队列中获得一个未执行的任务,为该任务开启一个新的进程并加进程锁,此时重新统计所述系统资源利用率,如果重新统计的系统资源利用率还小于所述阈值,再启动一个所述任务队列中未执行的任务,直到重新统计的系统资源利用率大于或者等于所述阈值。动态控制并发执行的任务的数量,既可以充分利用系统资源,又不影响服务器的正常运行。其中,系统资源利用率例如为cpu的利用率、硬盘的利用率、内存的利用率、网络带宽利用率或者输入输出端口利用率等,根据实际情况进行选择,本发明实施例不做限定。所述阈值根据实际经验进行设置,本发明实施例不做限定。可理解的是,如果所述系统资源利用率采用输入输出端口利用率,那么所述阈值为输入输出端口利用率对应的阈值。

图3是本发明另一实施例提供的数据备份方法的流程示意图,如图3所示,在上述各实施例的基础上,进一步地,所述根据待备份数据的所有第n级子目录以及第1级子目录至第n-1级子目录中的叶子目录,建立任务队列包括:

s1011、获取所述待备份数据从上一次备份时间到当前时间之间数据发生变化的子目录;

具体地,在本次数据备份任务被触发之后,所述服务器可以查询上一次备份时间,即数据正常完成备份的时间,每次数据备份完成之后都会有记录,所示服务器可以查找获得与当前时间最接近的数据正常完成备份时间作为上一次备份时间,然后从所述待备份数据中获得从上一次备份时间到当前时间之间数据发生变化的子目录。可理解的是,如果所述服务器在上一次数据备份任务被触发之后,正常完成了数据备份,那么上次数据备份任务被触发的时间可以作为所述上一次备份时间;如果所述服务器在上一次数据备份任务被触发之后,没有能够正常完成数据备份,那么上次数据备份任务被触发的时间不能作为所述上一次备份时间,所述服务器会继续判断再上一次数据备份任务被触发之后,数据备份是否正常完成,直到获得一次正常完成数据备份的时间。

例如,为了实现对所述服务器上的待备份数据的自动备份,可以设定数据备份的周期,到达数据备份的时间时数据备份任务就会被触发。所述服务器也可以接收到的指令启动数据备份,比如在获得了重要数据之后立即启动数据备份。其中,所述服务器可以采用监测软件监控所述服务器上数据的变化,例如采用inotify,inotify是具有强大的、细粒度的、异步的文件系统事件监控功能,可以用于监测单个文件和整个目录。inotify监控文件系统,出现增、删、读、写和卸载事件等可以立刻通知服务器,及时向应用程序发出相关事件警告,以便做出具体操作,也可用于跟踪活动和目标。

s1012、根据所述待备份数据中数据发生变化的的第n级子目录以及第1级子目录至第n-1级子目录中的叶子目录,建立所述任务队列,所述任务队列中的每个任务对应一个第n级数据发生变化的子目录或者叶子目录。

具体地,所述服务器获得所述待备份数据从上一次备份时间到当前时间之间数据发生变化的子目录之后,会根据所述待备份数据中数据发生变化的的第n级子目录以及第1级子目录至第n-1级子目录中的叶子目录,建立所述任务队列,即为所有第n级子目录中每个数据发生变化第n级子目录建立一个对应的任务,为第1级子目录至第n-1级子目录中每个数据发生变化的叶子目录建立一个对应的任务,所述任务队列中的每个任务对应一个数据发生变化的第n级子目录或者叶子目录。

图4是本发明再一实施例提供的数据备份方法的流程示意图,如图4所示,在上述各实施例的基础上,进一步地,所述启动所述任务队列进行数据备份包括:

s1021、为所述任务开启一个进程并加进程锁;

具体地,所述服务器在启动所述任务队列中的一个所述任务时,会为所述任务开启一个进程,并为所述进程加进程锁,以避免相邻任务之间的资源读取冲突。

s1022、若判断获知所述任务的进程锁异常,则终止所述任务并在下一次建立任务队列时将所述任务加入。

具体地,在所述任务开启进程并加进程锁之后,所述服务器会判断所述任务的进程是否得到进程锁以及所述进程锁的状态是否正常,如果所述任务的进程没有得到进程锁和/或所述进程的状态不正常,那么所述任务的进程锁异常,所述服务器会终止所述任务,即杀死所述任务的进程,然后记录所述任务,在下次进行数据备份时,将记录的所述任务添加到建立的任务队列中。

下面以一个具体的实施例对本发明提供的数据备份方法进行说明。

服务器a是一个新的服务器,还没有进行过数据备份,现在要将服务器a上的数据备份到备份服务器b上,在服务器a和备份服务器b上安装rsync数据镜像备份工具、inotify以及相关软件,并完成相关配置,例如开启安全外壳协议(secureshell,简称ssh)、rsync、inotify、crontab服务等,生成环境配置文件。其中,所述环境配置文件中的配置参数根据实际需要进行配置,本发明实施例不做限定。

图5是本发明一实施例提供的数据备份方法的逻辑流程图,如图5所示,服务器a进行数据备份的流程如下:

第一步:数据备份开始。服务器a接收到外界命令开始数据备份。

第二步:读取环境配置。服务器a从环境配置文件中读取到预先配置的一些配置参数,例如待备份数据的目录、服务器a的ip地址、备份服务器b的ip地址等。

第三步:检查环境状态。服务器a会对所述环境配置文件中的参数进行检查,有些配置参数是不能为空的,如果为空,那么环境状态异常。如果检测到所有不能为空的配置参数都有值,那么环境状态正常。

第四步:错误提示。服务器a在检查出环境状态异常之后,会提示配置参数出现错误,可以以弹框或者声音等方式进行错误提示,由技术人员对错误进行处理。

第五步:执行存量备份。服务器a在检查环境状态正常之后,会执行存量备份。服务器a执行存量备份的具体过程,参见下文所述,此处不进行赘述。

第六步:配置定时任务。服务器a在存量备份执行完成之后,可以通过crontab服务配置定时任务,即设置以后备份的周期,例如每24小时备份一次。在配置定时任务之后,可以利用inotify监控服务器a上待备份数据的数据发生变化的目录。

第七步:执行增量备份。服务器a在上一次备份之后,每经过一个备份周期,例如24小时,服务器a就会执行增量备份,由于已经进行过数据备份,采用增量备份的方式,可以减少备份的数据量。服务器a执行增量备份的具体过程,参见下文所述,此处不进行赘述。

其中,第五步:执行存量备份和第七步:执行增量备份都可以利用rsync数据镜像备份工具完成数据备份的。

图6是本发明一实施例提供的存量备份的逻辑流程图,如图6所示,服务器a执行存量备份的流程如下:

第一步:读取存量配置。服务器a会读取存量配置文件,获取存量备份相关的配置参数,例如n值、所述待备份数据的根目录、暂停时间t等。所述存量配置文件是预先设置的,根据实际需要进行设置,本发明实施例不做限定。

第二步:建立任务队列。服务器a根据待备份数据的所有第n级子目录以及第1级子目录至第n-1级子目录中的叶子目录,建立任务队列,所述任务队列中的每个任务对应一个第n级子目录或者叶子目录;其中,所述叶子目录为空子目录或者文件。由于是第一次进行备份,服务器a会保存所有的待备份数据。

第三步:遍历队列是否完成。在建立完任务队列之后,服务器a会对任务队列的完成情况进行监控,判断是否为任务队列中的每个任务开启过进程。如果任务队列中的所有任务都已经开启了进程,那么进入第四步;如果任务队列中存在没有开启过进程的任务,那么进入第五步;

第四步:进程是否全部结束。服务器a会判断任务队列中每个任务的进程是否结束,如果都结束了,说明完成了此次数据备份,存量备份结束。如果存在未完成的进程,那么进入第十步。

第五步:进程状态是否正常。服务器a会判断每个任务的进程及其对应的进程锁是否正常,如果全部都正常,那么进入第六步;如果存在不正常的进程和/或进程锁,那么进入第八步。

第六步:i/o利用率是否大于阈值。服务器a可以统计获得输入输出端口(i/o)利用率,并将i/o利用率与阈值进行比较,如果i/o利用率小于所述阈值,那么进入第七步;如果i/o利用率大于或者等于所述阈值,那么进入第九步。

第七步:开启新进程并加进程锁。服务器a会为所述任务开启一个进程并加进程锁。

第八步:杀死僵死进程。服务器a判断出存在不正常的进程和/或进程锁,就会杀死对应的进程,以终止任务。被终止的任务会被服务器a记录下来,在下次进行数据备份的时候加入到建立的任务队列中。

第九步:暂停t时间。服务器a判断出i/o利用率大于或者等于所述阈值,说明服务器a的输入输出资源紧张,不能再开启新的进程,服务器a会等待t时间之后,进入第六步,重新判断i/o利用率是否大于阈值。

第十步:暂停t时间。服务器a在判断出存在未完成的进程之后,会等待t时间,然后回到第四步,重新判断进程是否全部结束。其中,t根据实际经验进行设置,例如0.5s,本发明实施例不做限定。

图7是本发明一实施例提供的增量备份的逻辑流程图,如图7所示,服务器a执行增量备份的流程如下:

第一步:读取增量配置。服务器a会读取增量配置文件,获取增量备份相关的配置参数,例如n值、所述待备份数据的根目录、暂停时间t等。所述增量配置文件是预先设置的,包括的配置参数,根据实际需要进行设置,本发明实施例不做限定。

第二步:更新时间间隔。服务器a会获取上一次备份时间,即数据正常完成备份的时间,每次数据备份完成之后都会有记录,服务器a会查找与当前时间最接近的数据正常完成备份时间作为上一次备份时间,而不是简单地将上一次启动数据备份的时间作为上一次备份时间。然后,服务器a获取所述待备份数据从上一次备份时间到当前时间之间数据发生变化的子目录。

第三步:建立任务队列。服务器a根据所述待备份数据的第n级数据发生变化的子目录以及第1级子目录至第n-1级子目录中的叶子目录,建立所述任务队列,所述任务队列中的每个任务对应一个第n级数据发生变化的子目录或者叶子目录。

第四步:遍历队列是否完成。在建立完任务队列之后,服务器a会对任务队列的完成情况进行监控,判断是否为任务队列中的每个任务开启过进程。如果任务队列中的所有任务都已经开启了进程,那么进入第四步;如果任务队列中存在没有开启过进程的任务,那么进入第五步;

第五步:进程是否全部结束。服务器a会判断任务队列中每个任务的进程是否结束,如果都结束了,说明完成了此次数据备份,存量备份结束。如果存在未完成的进程,那么进入第十三步。

第六步:进程状态是否正常。服务器a会判断每个任务的进程及其对应的进程锁是否正常,如果全部都正常,那么进入第七步;如果存在不正常的进程和/或进程锁,那么进入第十一步。

第七步:i/o利用率是否大于阈值。服务器a可以统计获得输入输出端口(i/o)利用率,并将i/o利用率与阈值进行比较,如果i/o利用率小于所述阈值,那么进入第八步;如果i/o利用率大于或者等于所述阈值,那么进入第十二步。

第八步:开启新进程并加进程锁。服务器a会为所述任务开启一个进程并加进程锁。

第九步:进程锁是否正常。服务器a会判断所述任务的进程是否得到进程锁以及所述进程锁的状态是否正常,如果所述任务的进程没有得到进程锁和/或所述进程的状态不正常,那么所述进程锁不正常进入第十步。如果所述任务的进程得到进程锁和所述进程的状态正常,那么服务器a会正常运行所述任务的进程。

第十步:作为下次任务。服务器甲a判断出所述任务的进程锁不正常,会终止所述任务,即杀死所述任务的进程,然后记录所述任务,在下次进行数据备份时,将记录的所述任务添加到建立的任务队列中。

第十一步:杀死僵死进程。服务器a判断出存在不正常的进程和/或进程锁,就会杀死对应的进程,以终止任务。被终止的任务会被服务器a记录下来,在下次进行数据备份的时候加入到建立的任务列表中。

第十二步:暂停t时间。服务器a判断出i/o利用率大于或者等于所述阈值,说明服务器a的输入输出资源紧张,不能再开启新的进程,服务器a会等待t时间之后,进入第七步,重新判断i/o利用率是否大于阈值。

第十三步:暂停t时间。服务器a在判断出存在未完成的进程之后,会等待t时间,然后回到第四步,重新判断进程是否全部结束。其中,t根据实际经验进行设置,例如0.5s,本发明实施例不做限定。

可理解的是,为了保证数据传输的安全性,可以采用ssh方式在服务器a和备份服务器b之间传输进行备份的数据。为了减少数据传输量和网络带宽的占用,可以在传输备份数据之前对备份数据进行压缩。为了进一步提高备份的效率,对于空子目录,可以不进行备份。

图8是本发明一实施例提供的数据备份装置的结构示意图,如图8所示,本发明实施例提供的数据备份装置包括建立单元801和启动单元802,其中:

建立单元801用于根据待备份数据的所有第n级子目录以及第1级子目录至第n-1级子目录中的叶子目录,建立任务队列,所述任务队列中的每个任务对应一个第n级子目录或者叶子目录;其中,所述叶子目录为空子目录或者文件;启动单元802用于启动所述任务队列进行数据备份。

具体地,在数据备份任务被触发之后,建立单元801会根据待备份数据的所有第n级子目录以及第1级子目录至第n-1级子目录中的叶子目标建立任务队列,即为所有第n级子目录中的每个第n级子目录建立一个对应的任务,为第1级子目录至第n-1级子目录中的每个叶子目录建立一个对应的任务,所述任务队列中的每个任务对应一个第n级子目录或者叶子目录,所述叶子目录为空子目录或者文件。其中,n为大于1的正整数。可理解的是,数据备份任务可以被定期的触发,也可以人为下发控制命令触发,根据实际需要进行设置,本发明实施例不做限定。

在建立所述任务队列之后,启动单元802会启动所述任务队列中的每个任务并执行,可以将每个任务对应的子目录或叶子目录的数据复制到备份终端,启动单元802可以利用数据备份工具进行数据的复制。所述备份终端可以是另外一台服务器或者所述服务器的另一块硬盘,根据实际需要进行选择,本发明实施例不做限定。所述任务队列中的任务可以逐一地执行,也可以并发执行,根据实际需要进行设置,本发明实施例不做限定。

本发明实施例提供的数据备份装置,根据待备份数据的所有第n级子目录以及第1级子目录至第n-1级子目录中的叶子目录,建立任务队列,然后启动所述任务队列进行数据备份,能够减少备份数据过程中比对的目录的数量,减少数据备份的时间,从而提高了数据备份的效率。

在上述各实施例的基础上,进一步地,启动单元802具体用于:

为所述任务队列中的每个所述任务开启一个进程并加进程锁。

具体地,启动单元802在启动所述任务队列中的每个所述任务时,会为每个所述任务开启一个进程,为了避免相邻任务之间的资源读取冲突,在为所述任务开启进程的同时,会为所述任务的进程加进程锁。

在上述各实施例的基础上,进一步地,启动单元802还用于:

若判断获知所述任务的进程异常和/或所述任务的进程对应的进程锁异常,则终止所述任务。

具体地,在数据备份的过程中,启动单元802会判断每个所述任务的进程和进程锁是否异常,如果所述任务的进程异常和/或进程锁异常,说明所述任务的进程僵死,所述服务器会终止所述任务,即杀死该任务的进程。在本次数据备份的过程中被杀死的任务,可以在下次进行数据备份的时候添加到建立的任务队列中。

在上述各实施例的基础上,进一步地,启动单元802具体用于:

并发执行所述任务队列中的多个所述任务,并为多个所述任务中的每个所述任务开启一个进程并加进程锁。

具体地,为了提高数据备份的效率,启动单元802在启动所述任务队列中的任务时,可以同时启动多个所述任务并发执行,在启动所述多个任务中的每个所述任务时,会为每个所述任务开启一个进程,并为所述进程加进程锁,从而避免相邻任务之间的资源读取冲突。在并发执行的多个所述任务中,如果有任务先完成,可以启动所述任务队列中未执行的任务,保持多个任务并发执行,直到所述任务队列中的所有任务执行完成。其中,并发执行所述任务的数量可以根据实际情况进行设置,本发明实施例不做限定。

在上述各实施例的基础上,进一步地,启动单元802还用于:

若判断获知系统资源利用率小于阈值,则增加并发执行的所述任务的数量。

具体地,在备份数据时,启动单元802可以统计系统资源利用率,将所述系统资源利用率与阈值进行比较,如果所述系统资源利用率小于所述阈值,那么增加并发执行的所述任务的数量,即从所述任务队列中获得一个未执行的任务,为该任务开启一个新的进程并加进程锁,此时重新统计所述系统资源利用率,如果重新统计的系统资源利用率还小于所述阈值,再启动一个所述任务队列中未执行的任务,直到重新统计的系统资源利用率大于或者等于所述阈值。动态控制并发执行的任务的数量,既可以充分利用系统资源,又不影响服务器的正常运行。其中,系统资源利用率例如为cpu的利用率、硬盘的利用率、内存的利用率、网络带宽利用率或者输入输出端口利用率等,根据实际情况进行选择,本发明实施例不做限定。所述阈值根据实际经验进行设置,本发明实施例不做限定。可理解的是,如果所述系统资源利用率采用输入输出端口利用率,那么所述阈值为输入输出端口利用率对应的阈值。

图9本发明另实施例提供的数据备份装置的结构示意图,如图9所示,在上述各实施例的基础上,进一步地,建立单元801包括获取子单元8011和建立子单元8012,其中:

获取子单元8011所述待备份数据从上一次备份时间到当前时间之间数据发生变化的子目录;建立子单元8012所述待备份数据的第n级数据发生变化的子目录以及第1级子目录至第n-1级子目录中的叶子目录,建立所述任务队列,所述任务队列中的每个任务对应一个第n级数据发生变化的子目录或者叶子目录。

具体地,在本次数据备份任务被触发之后,获取子单元8011可以查询上一次备份时间,即数据正常完成备份的时间,每次数据备份完成之后都会有记录,所示服务器可以查找获得与当前时间最接近的数据正常完成备份时间作为上一次备份时间,然后从所述待备份数据中获得从上一次备份时间到当前时间之间数据发生变化的子目录。可理解的是,如果获取子单元8011在上一次数据备份任务被触发之后,正常完成了数据备份,那么上次数据备份任务被触发的时间可以作为所述上一次备份时间;如果获取子单元8011在上一次数据备份任务被触发之后,没有能够正常完成数据备份,那么上次数据备份任务被触发的时间不能作为所述上一次备份时间,获取子单元8011会继续判断再上一次数据备份任务被触发之后,数据备份是否正常完成,直到获得一次正常完成数据备份的时间。

在获得所述待备份数据从上一次备份时间到当前时间之间数据发生变化的子目录之后,建立子单元8012会根据所述待备份数据中数据发生变化的的第n级子目录以及第1级子目录至第n-1级子目录中的叶子目录,建立所述任务队列,即为所有第n级子目录中每个数据发生变化第n级子目录建立一个对应的任务,为第1级子目录至第n-1级子目录中每个数据发生变化的叶子目录建立一个对应的任务,所述任务队列中的每个任务对应一个数据发生变化的第n级子目录或者叶子目录。

图10是本发明再一实施例提供的数据备份装置的结构示意图,在上述各实施例的基础上,进一步地,启动单元802包括开启子单元8021和判断子单元8022,其中:

开启子单元8021用于为所述任务开启一个进程并加进程锁;判断子单元8022用于在判断获知所述任务的进程锁异常之后,终止所述任务并在下一次建立任务队列时将所述任务加入。

具体地,开启子单元8021在启动所述任务队列中的一个所述任务时,会为所述任务开启一个进程,并为所述进程加进程锁,以避免相邻任务之间的资源读取冲突。

在所述任务开启进程并加进程锁之后,判断子单元8022会判断所述任务的进程是否得到进程锁以及所述进程锁的状态是否正常,如果所述任务的进程没有得到进程锁和/或所述进程的状态不正常,那么所述任务的进程锁异常,判断子单元8022会终止所述任务,即杀死所述任务的进程,然后记录所述任务,在下次进行数据备份时,将记录的所述任务添加到建立的任务队列中。

图11为本发明一实施例提供的电子设备的实体结构示意图,如图11所示,该电子设备可以包括:处理器(processor)1101、通信接口(communicationsinterface)1102、存储器(memory)1103和通信总线1104,其中,处理器1101,通信接口1102,存储器1103通过通信总线1104完成相互间的通信。处理器1101可以调用存储器1103中的逻辑指令,以执行如下方法:根据待备份数据的所有第n级子目录以及第1级子目录至第n-1级子目录中的叶子目录,建立任务队列,所述任务队列中的每个任务对应一个第n级子目录或者叶子目录;其中,所述叶子目录为空子目录或者文件;启动所述任务队列进行数据备份。

此外,上述的存储器1103中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:根据待备份数据的所有第n级子目录以及第1级子目录至第n-1级子目录中的叶子目录,建立任务队列,所述任务队列中的每个任务对应一个第n级子目录或者叶子目录;其中,所述叶子目录为空子目录或者文件;启动所述任务队列进行数据备份。

本实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序,所述计算机程序使所述计算机执行上述各方法实施例所提供的方法,例如包括:根据待备份数据的所有第n级子目录以及第1级子目录至第n-1级子目录中的叶子目录,建立任务队列,所述任务队列中的每个任务对应一个第n级子目录或者叶子目录;其中,所述叶子目录为空子目录或者文件;启动所述任务队列进行数据备份。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在本说明书的描述中,参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1