基于公有云存储账户的数据备份的线性扩容方法及系统转让专利

申请号 : CN201610338822.X

文献号 : CN105978981B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 徐超

申请人 : 北京春鸿科技有限公司

摘要 :

本发明公开了一种基于公有云存储账户的数据备份的线性扩容方法及系统,所述方法包括:将个人私有云存储系统的账户与公有云存储账户及带有wifi功能的存储设备进行绑定;对公有云存储账户下的目录及文件名进行首次遍历并存储;个人私有云存储系统生成多个任务组并等待带有wifi功能的存储设备主动获取;存储设备联网后,获取任务,自动从公有云存储账户中开始下载任务数据并反馈剩余存储空间;若存储设备的剩余内存低于预设值,则将存储设备设置为Inactive,停止同步操作;直至所述的存储设备通过删除数据转为Active状态或增加新的存储设备。本发明实现了将云存储账号的内容智能化自动备份到本地存储设备中以及本地存储设备的线性扩容。

权利要求 :

1.一种基于公有云存储账户的数据备份的线性扩容方法,其特征在于,包括以下步骤:

S1,将个人私有云存储系统的账户与公有云存储账户及带有wifi功能的存储设备进行绑定;

S2,所述的个人私有云存储系统对公有云存储账户下的目录及文件名进行首次遍历,遍历完成后,将目录及文件名数据导出并保存至数据库中;

S3,所述的个人私有云存储系统将数据库中的目录及文件名数据生成多个任务组并等待带有wifi功能的存储设备主动获取;

S4,当所述的存储设备联网后,向个人私有云存储系统获取任务,然后根据当前任务组中的目录及文件名自动从公有云存储账户中开始下载任务数据;并且下载任务数据的过程中,所述的存储设备不定时的向个人私有云存储系统反馈剩余存储空间;

S5,若所述的存储设备的剩余存储空间低于预设值时,则个人私有云存储系统将该存储设备的状态设置为Inactive,该存储设备停止同步操作;通过对所述的存储设备删除数据使之恢复为Active状态或者通过关联新的存储设备到该个人私有云存储系统,恢复数据同步工作。

2.根据权利要求1所述的基于公有云存储账户的数据备份的线性扩容方法,其特征在于,步骤S1具体包括:S11,访问带有wifi功能的存储设备的Web管理界面,并利用个人私有云存储系统的账号和密码进行登陆;登陆成功后,所述的存储设备即与个人私有云存储系统的账户建立了绑定关系;

S12,在所述的存储设备的Web管理界面上发起对公有云存储账户的绑定请求;通过公有云存储系统的API获取访问授权,得到一个授权key;

S13,将公有云存储系统的名称、授权key和所述存储设备的设备编号上传至个人私有云存储系统并存储;个人私有云存储系统创建一个绑定关系记录,存储公有云存储账户与存储设备之间的关系。

3.根据权利要求2所述的基于公有云存储账户的数据备份的线性扩容方法,其特征在于,步骤S12具体包括:在所述的存储设备的Web管理界面上发起对多个公有云存储账户的绑定请求;通过公有云存储系统的开放编程接口获取访问授权,获得相应的授权key;步骤S13具体包括:将所述的公有云存储系统的名称、授权key和所述存储设备的设备编号上传至个人私有云存储系统并存储;个人私有云存储系统创建多个不同的虚拟容器,使得各个虚拟容器与多个公有云存储账户一一对应关联,并且各个虚拟容器与带有wifi功能的存储设备进行一对多、一对一或多对一关联;其中,当每个虚拟容器关联多个存储设备时,在进行数据同步时,只有一个存储设备的状态为Active,其他均为Inactive。

4.根据权利要求3所述的基于公有云存储账户的数据备份的线性扩容方法,其特征在于,步骤S5还包括:若所述的存储设备的剩余存储空间低于预设值时,则个人私有云存储系统将该存储设备的状态设置为Inactive,该存储设备停止同步操作;或者通过虚拟容器将与其关联的其他的剩余存储空间高于预设值、但当前状态为Inactive的存储设备中的一个设置为Active状态,恢复数据同步工作。

5.根据权利要求3所述的基于公有云存储账户的数据备份的线性扩容方法,其特征在于,步骤S4具体包括:当所述的存储设备联网后,检测存储设备的状态,若为Active,则向个人私有云存储系统发起任务获取请求,个人私有云存储系统查询到与该设备关联的所有虚拟容器,然后将虚拟容器内第一个未全部完成的任务组下发给该设备;该设备保存任务内容和分组的编号,并根据当前任务组中的目录及文件名自动从各个公有云存储账户中开始下载任务数据;每完成一个文件的下载或者完成一个任务组的全部或部分文件的下载,则向个人私有云存储系统更新任务完成情况同时反馈剩余存储空间;若存储设备的剩余可用空间小于预设值,则放弃已经获得的当前分组的后续任务,并设置存储设备的状态为Inactive,停止数据同步服务;否则个人私有云存储系统在接受到任务更新请求后,根据分组编号和文件名称在分组中查找对应的记录,若找到对应的文件记录,则设置fetched=1;

其中,fetched为META DATA结构体中包含的一个成员,用于表示是否已经同步,fetched的默认值为0;若未找到对应的文件记录,则返回false信号至所述存储设备,所述存储设备收到false信号后,放弃已经获得的当前分组的后续任务并重新获取第一个未完成的任务组;

所述存储设备每完成一个任务组的下载后,自动请求下一个未完成任务组,直至完成最后一个未完成任务组。

6.根据权利要求3所述的基于公有云存储账户的数据备份的线性扩容方法,其特征在于,步骤S5具体包括:当个人私有云存储系统的某个虚拟容器执行同步的过程中发现所述的存储设备的存储空间低于预设值时,则该虚拟容器将其与该存储设备的关系设置为Inactive状态;同时个人私有云存储系统查找并通知与该存储设备关联的其他虚拟容器,其他虚拟容器也将其与该存储设备的关系设置为Inactive状态;所述的存储设备停止同步操作,直至所述的存储设备通过删除数据转为Active状态,或者增加新的带有wifi功能的存储设备后,该新的存储设备与个人私有云存储系统的各个相应的虚拟容器绑定后,继续进行数据同步。

7.根据权利要求1所述的基于公有云存储账户的数据备份的线性扩容方法,其特征在于,步骤S2还包括:个人私有云存储系统定期对与其相关联的公有云存储账户下的目录及文件名进行补充遍历,并与本地缓存的目录及文件名列表进行比对,找出新文件,生成下载/同步任务列表;具体包括:首先,个人私有云存储系统从数据库中按照分组的顺序加载目录结构的json数据,在程序的内存中保存数组结构,并将该数组命名为:old;

其次,按照首次遍历的方式对公有云存储账户下的目录及文件名进行补充遍历,获得最新的目录遍历结果的数组结构,并将该数组命名为:new;

再次,从old数组中取出一个元素,在new数组中查找与该元素文件名相同的元素,如果没有找到,则放弃此old数组中的该元素;如果找到了对应的元素,则对比两个元素的MD5值或文件长度和最后修改时间;如果相同,则把old数组中元素的fetched值复制给new数组中对应的元素;重复本操作,直到old数组中所有的元素都取出;

最后,补充遍历完成后,将new数组的数据从程序的内存导出为json格式的数据,并以分组方式保存至数据库中。

8.一种基于公有云存储账户的数据备份的线性扩容系统,其特征在于,包括:

绑定模块,用于将个人私有云存储系统的账户与公有云存储账户及带有wifi功能的存储设备进行绑定;

遍历及存储模块,用于所述的个人私有云存储系统对公有云存储账户下的目录及文件名进行首次遍历,遍历完成后,将目录及文件名数据导出并保存至数据库中;

任务生成及分配模块,用于所述的个人私有云存储系统将数据库中的目录及文件名数据生成多个任务组并等待带有wifi功能的存储设备主动获取;

自动下载模块,用于当所述的存储设备联网后,向个人私有云存储系统获取任务,然后根据当前任务组中的目录及文件名自动从公有云存储账户中开始下载任务数据;

剩余内存反馈模块:用于下载任务数据的过程中,所述的存储设备不定时的向个人私有云存储系统反馈剩余存储空间;

设置及处理模块,用于若所述的存储设备的剩余存储空间低于预设值时,则个人私有云存储系统将该存储设备的状态设置为Inactive,该存储设备停止同步操作;

数据同步恢复模块,用于所述的存储设备删除数据使之恢复为Active状态或者通过关联新的存储设备到该个人私有云存储系统,恢复数据同步工作。

9.根据权利要求8所述的基于公有云存储账户的数据备份的线性扩容系统,其特征在于,所述的绑定模块还包括:登录模块,用于访问带有wifi功能的存储设备的Web管理界面,并利用个人私有云存储系统的账号和密码进行登陆;登陆成功后,所述的存储设备即与个人私有云存储系统的账户建立了绑定关系;

绑定请求发送模块,用于在所述存储设备的Web管理界面上发起对公有云存储账户的绑定请求;

访问授权获取模块,用于通过公有云存储系统的API获取访问授权,得到一个授权key;

数据上传模块,用于将公有云存储系统的名称、授权key和所述存储设备的设备编号上传至个人私有云存储系统并存储;

绑定关系记录创建模块,用于个人私有云存储系统创建一个绑定关系记录,存储公有云存储账户与所述存储设备之间的关系。

10.根据权利要求9所述的基于公有云存储账户的数据备份的线性扩容系统,其特征在于,所述的绑定请求发送模块具体包括:多账户绑定请求发送模块,用于在所述的存储设备的Web管理界面上发起对多个公有云存储账户的绑定请求;

所述的访问授权获取模块具体包括:

多账户访问授权获取模块,用于通过公有云存储系统的开放编程接口获取访问授权,获得相应的授权key;

所述的绑定关系记录创建模块具体包括:

虚拟容器创建及关联模块,用于个人私有云存储系统创建多个不同的虚拟容器,使得各个虚拟容器与多个公有云存储账户一一对应关联,并且各个虚拟容器与带有wifi功能的存储设备进行一对多、一对一或多对一关联,其中,当每个虚拟容器关联多个存储设备时,在进行数据同步时,只有一个存储设备的状态为Active,其他均为Inactive。

11.根据权利要求10所述的基于公有云存储账户的数据备份的线性扩容系统,其特征在于,所述系统或者还包括:设置模块:用于通过虚拟容器将与其关联的其他的剩余存储空间高于预设值、但当前状态为Inactive的存储设备中的一个设置为Active状态,恢复数据同步工作。

12.根据权利要求8所述的基于公有云存储账户的数据备份的线性扩容系统,其特征在于,所述的自动下载模块还包括:存储设备状态检测模块,用于当存储设备联网后,检测该存储设备的状态;

记录及下载模块,用于当存储设备的状态为Active时,向个人私有云存储系统发起任务获取请求,个人私有云存储系统查询到与该设备关联的所有虚拟容器,然后将虚拟容器内第一个未全部完成的任务组下发给该设备;该设备保存任务内容和分组的编号;并根据当前任务组中的目录及文件名自动从各个公有云存储账户中开始下载任务数据;

信息反馈模块,用于每完成一个文件的下载或者完成一个任务组的全部或部分文件的下载,则向个人私有云存储系统更新任务完成情况同时反馈剩余存储空间;

文件记录查找及设置模块,用于个人私有云存储系统在接受到任务更新请求后,根据分组编号和文件名称在分组中查找对应的记录,若找到对应的文件记录,则设置fetched=

1;其中,fetched为META DATA结构体中包含的一个成员,用于表示是否已经同步,fetched的默认值为0;若未找到对应的文件记录,则返回false信号至所述存储设备;

任务放弃及重新获取模块,用于所述存储设备收到false信号后,放弃已经获得的当前分组的后续任务并重新获取第一个未完成的任务组;

任务自动请求模块,用于所述存储设备每完成一个任务组的下载后,自动请求下一个未完成任务组,直至完成最后一个未完成任务组。

13.根据权利要求12所述的基于公有云存储账户的数据备份的线性扩容系统,其特征在于,所述的设置及处理模块还包括:查找及通知模块,用于个人私有云存储系统查找并通知与该存储设备关联的其他虚拟容器,使得其他虚拟容器也将其与该存储设备的关系设置为Inactive状态,停止同步操作;

所述的数据同步恢复模块还包括:

绑定模块,用于将新的存储设备与个人私有云存储系统的各个相应的虚拟容器进行绑定。

14.根据权利要求8所述的基于公有云存储账户的数据备份的线性扩容系统,其特征在于,所述的遍历模块还包括:补充遍历及对比模块,用于个人私有云存储系统定期对与其相关联的公有云存储账户下的目录及文件名进行补充遍历,并与本地缓存的目录及文件名列表进行比对,找出新文件,生成下载/同步任务列表;

所述的补充遍历及对比模块具体包括:

数据加载及存储模块:用于个人私有云存储系统从数据库中按照分组的顺序加载目录结构的json数据,在程序的内存中保存数组结构,并将该数组命名为:old;

补充遍历模块:用于按照首次遍历的方式对公有云存储账户下的目录及文件名进行补充遍历,获得最新的目录遍历结果的数组结构,并将该数组命名为:new;

数据对比模块:用于从old数组中取出一个元素,在new数组中查找与该元素文件名相同的元素,如果没有找到,则放弃此old数组中的该元素;如果找到了对应的元素,则对比两个元素的MD5值或文件长度和最后修改时间;如果相同,则把old数组中元素的fetched值复制给new数组中对应的元素;重复本操作,直到old数组中所有的元素都取出;

第二数据导出及存储模块,用于补充遍历完成后,将new数组的数据从程序的内存导出为json格式的数据,并以分组方式保存至数据库中。

说明书 :

基于公有云存储账户的数据备份的线性扩容方法及系统

技术领域

[0001] 本发明涉及一种基于公有云存储账户的数据备份的线性扩容方法及系统,属于公有云存储账户数据备份技术领域。

背景技术

[0002] 云存储是在云计算(cloud computing)概念上延伸和发展出来的一个新的概念,是指通过集群应用、网格技术或分布式文件系统等功能,将网络中各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。在云存储系统(即公有云存储账户,如百度网盘、360云盘、金山快盘等)中,可以存储的数据量很大,因而很多用户为了清理手机内存同时与好友分享文件(比如照片、文档等),往往会将个人的私人文件发送至云存储系统中进行存储。但与此同时,又逐渐暴露了新的问题:比如云账号被盗,那么用户的个人隐私很可能就会被泄露。因此,使用云存储时,数据安全性问题成为用户的主要顾虑。另外,用户所需的某些重要文件上传至云存储系统后,可能会因为某些原因而导致审核未通过进而被删除,从而给用户带来一定的损失,同时造成不好的用户体验,因而对云存储系统中的数据进行及时备份就显的非常重要。
[0003] 存储设备,比如移动硬盘,它的存储空间一般也比较大,为用户个人拥有,用于存储备份重要的文件。用户若想将云存储系统中有用的文件(包括用户自己通过手机上传至云存储系统中的文件及其他人上传至云存储系统并分享给用户的文件)存入其移动硬盘中,则需要先通过电脑将文件从云存储系统下载下来,然后再存入移动硬盘。此外,若云存储系统中有文件更新,也仍需要用户去人工识别并下载存入其个人移动硬盘中。上述的操作方式复杂繁琐,需要手动操作,无法满足人们智能化的要求。此外,在备份过程中,还会遇到以下问题:比如备份使用的A移动硬盘满了,如何利用B移动硬盘继续下载以及如何避免重复下载更新,这也是人们迫切需要解决的问题。

发明内容

[0004] 本发明的目的在于,提供一种基于公有云存储账户的数据备份的线性扩容方法及系统,它可以有效解决现有技术中存在的问题,实现公有云存储账户数据的智能化自动备份以及存储设备的线性扩容。
[0005] 为解决上述技术问题,本发明采用如下的技术方案:一种基于公有云存储账户的数据备份的线性扩容方法,包括以下步骤:
[0006] S1,将个人私有云存储系统的账户与公有云存储账户及带有wifi功能的存储设备进行绑定;
[0007] S2,所述的个人私有云存储系统对公有云存储账户下的目录及文件名进行首次遍历,遍历完成后,将目录及文件名数据导出并保存至数据库中;
[0008] S3,所述的个人私有云存储系统将数据库中的目录及文件名数据生成多个任务组并等待带有wifi功能的存储设备主动获取;
[0009] S4,当所述的存储设备联网后,向个人私有云存储系统获取任务,然后根据当前任务组中的目录及文件名自动从公有云存储账户中开始下载任务数据;并且下载任务数据的过程中,所述的存储设备不定时的向个人私有云存储系统反馈剩余存储空间;
[0010] S5,若所述的存储设备的剩余存储空间低于预设值时,则个人私有云存储系统将该存储设备的状态设置为Inactive,该存储设备停止同步操作;通过对所述的存储设备删除数据使之恢复为Active状态或者通过关联新的存储设备到该个人私有云存储系统,恢复数据同步工作。
[0011] 优选的,步骤S1具体包括:
[0012] S11,访问带有wifi功能的存储设备的Web管理界面,并利用个人私有云存储系统的账号和密码进行登陆;登陆成功后,所述的存储设备即与个人私有云存储系统的账户建立了绑定关系;
[0013] S12,在所述的存储设备的Web管理界面上发起对公有云存储账户的绑定请求;通过公有云存储系统的API获取访问授权,得到一个授权key;
[0014] S13,将公有云存储系统的名称、授权key和所述存储设备的设备编号上传至个人私有云存储系统并存储;个人私有云存储系统创建一个绑定关系记录,存储公有云存储账户与存储设备之间的关系。
[0015] 通过上述方法实现将个人私有云存储系统的账户与公有云存储账户及带有wifi功能的存储设备进行绑定,从而可以使得个人私有云存储系统与带有wifi功能的存储设备和公有云存储系统之间以及带有wifi功能的存储设备与公有云存储系统之间进行高效、安全、稳定的通信。
[0016] 更优选的,步骤S12具体包括:在所述的存储设备的Web管理界面上发起对多个公有云存储账户的绑定请求;通过公有云存储系统的开放编程接口(即OpenAPI)获取访问授权,获得相应的授权key;步骤S13具体包括:将所述的公有云存储系统的名称、授权key和所述存储设备的设备编号上传至个人私有云存储系统并存储;个人私有云存储系统创建多个不同的虚拟容器,(在每个虚拟容器中,利用公有云存储系统的API及相应的授权KEY进行登录,同时设置用户期望同步的目录,默认为根目录)使得各个虚拟容器与多个公有云存储账户一一对应关联,并且各个虚拟容器与带有wifi功能的存储设备进行一对多、一对一或多对一关联,其中,当每个虚拟容器关联多个存储设备时,在进行数据同步时,只有一个存储设备的状态为Active,其他均为Inactive(如果某个虚拟容器与相应的公有云存储账户取消关联,则该虚拟容器自动销毁,同时与其绑定的存储设备也取消关联状态)。通过利用不同的虚拟容器分别与多个公有云存储账户一一对应关联,并且各个虚拟容器与带有wifi功能的存储设备进行一对多、一对一或多对一关联,从而可以更精确、快捷、灵活的管控各个云存储账户的内容备份及更新任务。
[0017] 上述方法中,个人私有云存储系统创建多个不同的虚拟容器时会给每个容器分配一个唯一标识,当各个虚拟容器与多个公有云存储账户一一对应关联,并且各个虚拟容器与带有wifi功能的存储设备进行一对多、一对一或多对一关联时,个人私有云存储系统会记录容器唯一标识与公有云存储账户以及带有WiFi功能的存储设备之间的关系并保存至个人私有云存储系统的数据库中。
[0018] 前述的基于公有云存储账户的数据备份的线性扩容方法中,步骤S5还包括:若所述的存储设备的剩余存储空间低于预设值时,则个人私有云存储系统将该存储设备的状态设置为Inactive,该存储设备停止同步操作;或者通过虚拟容器将与其关联的其他的剩余存储空间高于预设值、但当前状态为Inactive的存储设备中的一个设置为Active状态,恢复数据同步工作,从而可以快速实现平滑扩容。
[0019] 前述的基于公有云存储账户的数据备份的线性扩容方法中,步骤S2具体包括:个人私有云存储系统对指定公有云存储账户下的目录及文件名进行首次遍历(或者个人私有云存储系统中所述的不同的虚拟容器对与其相关联的公有云存储账户下的目录及文件名进行首次遍历),生成META DATA的数据结构(即目录和文件的结构,还包含了最后修改时间、文件长度、MD5值、是否已经被下载到带有wifi功能的存储设备等信息);遍历完成后,将所述的文件名按照N个为一组,划分为多个组后,导出为json格式的数据(多种计算机语言都对其进行了支持),并保存至数据库中;其中,遍历时,以目录或文件名称作为索引值;以文件长度、最后修改时间、MD5值、是否是目录等信息作为结构体类型的数据块;从而可以优化个人云存储系统对备份任务的管理,便于向带有wifi功能的存储设备传递任务。
[0020] 步骤S3具体包括:个人私有云存储系统将数据库中的数据按照分组生成多个任务组(或者个人私有云存储系统中的各个不同的虚拟容器将数据库中的数据按照分组生成多个任务组),等待带有wifi功能的存储设备联网后按照分组获取任务;带有wifi功能的存储设备每次只下载一个分组的任务信息,而不是全部的任务信息,从而可以便于获得新任务、更新任务的完成情况以及降低个人云存储平台的压力。
[0021] 前述的基于公有云存储账户的数据备份的线性扩容方法中,步骤S4具体包括:当所述的存储设备联网后,检测存储设备的状态,若为Active,则向个人私有云存储系统发起任务获取请求,个人私有云存储系统查询到与该设备关联的所有虚拟容器,然后将虚拟容器内第一个未全部完成的任务组下发给该设备;该设备保存任务内容和分组的编号,并根据当前任务组中的目录及文件名自动从各个公有云存储账户中开始下载任务数据;每完成一个文件的下载或者完成一个任务组的全部或部分文件的下载,则向个人私有云存储系统或个人私有云存储系统中相应的虚拟容器更新任务完成情况同时反馈剩余存储空间(带有wifi功能的存储设备在下载任务时,就同时获得了生成该任务的虚拟容器的唯一标识);若存储设备的剩余可用空间小于预设值,则放弃已经获得的当前分组的后续任务,并设置存储设备的状态为Inactive,并停止数据同步服务;否则个人私有云存储系统或个人私有云存储系统中相应的虚拟容器在接受到任务更新请求后,根据分组编号和文件名称在分组中查找对应的记录,若找到对应的文件记录,则设置fetched=1(其中,每一个文件都对应了一个fetched值);其中,fetched为META DATA结构体中包含的一个成员,用于表示是否已经同步,fetched的默认值为0;若未找到对应的文件记录,则返回false信号至所述存储设备,所述存储设备收到false信号后,放弃已经获得的当前分组的后续任务并重新获取第一个未完成的任务组(这表示任务分组出现了更新,因此需要重新获取任务分组);所述存储设备每完成一个任务组的下载后,自动请求下一个未完成任务组,直至完成最后一个未完成任务组。根据带有wifi功能的存储设备的硬件性能,可以逐个对虚拟容器内的任务组进行处理,或者同时对多个虚拟容器内的任务分组进行处理。从而可以根据数据更新列表从公有云存储账户准确的备份所需数据,提高了数据备份的效率和整个系统的运行效率。此外,设置fetched为META DATA结构体中包含的一个成员,从而便于标记任务的下载完成情况;这样当带有wifi功能的存储设备下次再联网后,可以直接下载未完成的任务,而不用从头开始全部下载,减轻了带有wifi功能的存储设备的压力,提高了数据传输效率;另外进行本地存储设备的线性扩容后,也可以避免任务数据的重复下载,提高了本地存储设备的利用率。
[0022] 步骤S4中,检测存储设备的状态时,需要存储设备将其当前的剩余存储空间发送至个人私有云存储系统中,个人私有云存储系统根据预设值的大小给存储设备反馈其当前的状态,为Active或Inactive。
[0023] 当存储设备的状态为Inactive时,也需要定期重新获取其最新的状态。
[0024] 优选的,所述的带有wifi功能的存储设备联网后,检测存储设备的状态,若为Active,则向个人私有云存储系统发起任务获取请求,个人私有云存储系统查询到与该设备关联的所有虚拟容器,然后将虚拟容器内第一个未全部完成的任务组下发给该设备;该设备保存任务内容和分组的编号,并根据当前任务组中的目录及文件名自动从各个公有云存储账户中开始下载任务数据具体包括:并行处理或串行处理;所述的并行处理即带有wifi功能的存储设备先获取与此设备关联的所有虚拟容器的第一个任务组数据,然后并行进行多个文件的下载;所述的串行处理即每次只获取一个虚拟容器的任务组数据并进行文件同步,处理完一个虚拟容器的所有任务分组后再依次处理下一个虚拟容器的任务数据。如果带有wifi功能的存储设备内置的CPU性能好,则采用并行处理,如果CPU性能差,则采用串行处理;另外存储设备的读写速度也影响了这个设置的选择,可根据不同的硬件性能,设置最大的并行的任务数。
[0025] 本发明中,步骤S5具体包括:当个人私有云存储系统的某个虚拟容器执行同步的过程中发现所述的存储设备的存储空间低于预设值时,则该虚拟容器将其与该存储设备的关系设置为Inactive状态;同时个人私有云存储系统查找并通知与该存储设备关联的其他虚拟容器,其他虚拟容器也将其与该存储设备的关系设置为Inactive状态;所述的存储设备停止同步操作,直至所述的存储设备通过删除数据转为Active状态,或者增加新的带有wifi功能的存储设备后,该新的存储设备与个人私有云存储系统的各个相应的虚拟容器绑定后,继续进行数据同步。从而可以快速实现统一控制所有与某个存储设备相关联的公有云存储账户停止数据同步或者向某个新的存储设备进行数据备份。
[0026] 上述方法中,若存储设备当前的状态为Active,也可绑定新的存储设备至其相应的虚拟容器,并且如果该新的存储设备的状态为Active,那么与该虚拟容器关联的上一个Active状态的存储设备会被强制设置为Inactive,然后在该新的存储设备上继续进行数据同步。
[0027] 上述的基于公有云存储账户的数据备份的线性扩容方法,步骤S2还包括:人私有云存储系统或人私有云存储系统中的各个虚拟容器定期对与其相关联的公有云存储账户下的目录及文件名进行补充遍历(补充遍历的间隔时间可以调整,默认24小时一次),并与本地缓存的目录及文件名列表进行比对,找出新文件,生成下载/同步任务列表;具体包括:
[0028] 首先,个人私有云存储系统或个人私有云存储系统中的各个虚拟容器从数据库中按照分组的顺序加载目录结构的json数据,在程序的内存中保存该数组结构,并将该数组命名为:old;(所述的数组中包含的元素可以通过文件名进行检索,每一个元素都包含了一个数据块,数据块内保存了与该文件名对应的MD5值、文件长度、最后修改时间等与META DATA相关的信息);
[0029] 其次,按照首次遍历的方式对公有云存储账户下的目录及文件名进行补充遍历,获得最新的目录遍历结果的数组结构,并将该数组命名为:new;(其结构与old相同,同样的,该数组中包含的元素可以通过文件名进行检索,但是该数据结构中每一个元素包含的fetched值都为0);
[0030] 再次,从old数组中取出一个元素,在new数组中查找与该元素文件名相同的元素,如果没有找到,则放弃此old数组中的该元素;如果找到了对应的元素,则对比两个元素的MD5值或文件长度和最后修改时间(当公有云存储系统支持MD5值时,则通过对比MD5值;当公有云存储系统不支持MD5值时,则通过对比文件长度和最后修改时间来代替MD5值的比对;由于云盘的文件一旦下载/备份到带有wifi功能的存储设备后,用户会从云盘上删除对应的文件,然后存入更多的新文件到云盘;因此在个人私有云存储系统对公有云存储账户文件进行扫描时要考虑到这种情况的出现);如果相同,则把old数组中元素的fetched值复制给new数组中对应的元素;重复本操作,直到old数组中所有的元素都取出;
[0031] 最后,补充遍历完成后,将new数组的数据从程序的内存导出为json格式的数据,并以分组方式保存至数据库中。
[0032] 通过以上补充遍历的方法,从而可以实现仅对公有云存储账户更新的文件进行自动、及时备份,进一步提高了数据自动更新的效率;此外,上述方法中,在上一次扫描结果生成为多个任务组之后,在任务组中已经有部分任务已经完成了(fetched等于1),如果这些任务已经处于完成的状态,而且云盘中对应的文件没有删除,那么在最新的云盘文件扫描结果中,就要根据老的任务列表来设置任务的状态为已完成(设置fetched为1)。具体的说,通过上述方法,从而可以把最新的公有云存储的目录和文件结构与数据库中存储的老旧数据进行合并。如果老旧数据中记录的文件名在当前的公有云存储中已经不存在了(例如被用户删除了),那么就要在合并过程中删除这些记录;如果新旧记录里都有同名的文件,还要根据MD5的值或文件长度和最后修改时间来判断文件是否有内容的变化,如果文件产生了变化,就标记为未下载,否则就根据老记录的状态来设置任务的下载状态。对于只有新记录里存在的文件名,则直接设置为未下载。
[0033] 优选的,步骤S5中,若没有与虚拟容器相关联的Active状态的存储设备,则该虚拟容器进入Inactive状态,只保留最后的同步状态,并停止对与其相关联的公有云存储账户下的目录及文件名进行补充遍历、找出新文件,以及生成下载/同步任务列表;直至某个存储设备通过删除数据转为Active状态或者增加新的带有wifi功能的存储设备后,所述的虚拟容器恢复为Active状态。从而可以有效节约个人云存储系统的平台资源,同时避免对公有云平台的频繁请求。
[0034] 一种基于公有云存储账户的数据备份的线性扩容系统,包括:
[0035] 绑定模块,用于将个人私有云存储系统的账户与公有云存储账户及带有wifi功能的存储设备进行绑定;
[0036] 遍历及存储模块,用于所述的个人私有云存储系统对公有云存储账户下的目录及文件名进行首次遍历,遍历完成后,将目录及文件名数据导出并保存至数据库中;
[0037] 任务生成及分配模块,用于所述的个人私有云存储系统将数据库中的目录及文件名数据生成多个任务组并等待带有wifi功能的存储设备主动获取;
[0038] 自动下载模块,用于当所述的存储设备联网后,向个人私有云存储系统获取任务,然后根据当前任务组中的目录及文件名自动从公有云存储账户中开始下载任务数据;
[0039] 剩余内存反馈模块:用于下载任务数据的过程中,所述的存储设备不定时的向个人私有云存储系统反馈剩余存储空间;
[0040] 设置及处理模块,用于若所述的存储设备的剩余存储空间低于预设值时,则个人私有云存储系统将该存储设备的状态设置为Inactive,该存储设备停止同步操作;
[0041] 数据同步恢复模块,用于所述的存储设备删除数据使之恢复为Active状态或者通过关联新的存储设备到该个人私有云存储系统,恢复数据同步工作。
[0042] 优选的,所述的绑定模块还包括:
[0043] 登录模块,用于访问带有wifi功能的存储设备的Web管理界面,并利用个人私有云存储系统的账号和密码进行登陆;登陆成功后,所述的存储设备即与个人私有云存储系统的账户建立了绑定关系;
[0044] 绑定请求发送模块,用于在所述存储设备的Web管理界面上发起对公有云存储账户的绑定请求;
[0045] 访问授权获取模块,用于通过公有云存储系统的API获取访问授权,得到一个授权key;
[0046] 数据上传模块,用于将公有云存储系统的名称、授权key和所述存储设备的设备编号上传至个人私有云存储系统并存储;
[0047] 绑定关系记录创建模块,用于个人私有云存储系统创建一个绑定关系记录,存储公有云存储账户与所述存储设备之间的关系。
[0048] 更优选的,所述的绑定请求发送模块具体包括:
[0049] 多账户绑定请求发送模块,用于在所述的存储设备的Web管理界面上发起对多个公有云存储账户的绑定请求;
[0050] 所述的访问授权获取模块具体包括:
[0051] 多账户访问授权获取模块,用于通过公有云存储系统的开放编程接口(即OpenAPI)获取访问授权,获得相应的授权key;
[0052] 所述的绑定关系记录创建模块具体包括:
[0053] 虚拟容器创建及关联模块,用于个人私有云存储系统创建多个不同的虚拟容器,(在每个虚拟容器中,利用公有云存储系统的API及相应的授权KEY进行登录,同时设置用户期望同步的目录,默认为根目录)使得各个虚拟容器与多个公有云存储账户一一对应关联,并且各个虚拟容器与带有wifi功能的存储设备进行一对多、一对一或多对一关联,其中,当每个虚拟容器关联多个存储设备时,在进行数据同步时,只有一个存储设备的状态为Active,其他均为Inactive(如果某个虚拟容器与相应的公有云存储账户取消关联,则该虚拟容器自动销毁,同时与其绑定的存储设备也取消关联状态)。
[0054] 前述的系统中,或者还包括:
[0055] 设置模块:用于通过虚拟容器将与其关联的其他的剩余存储空间高于预设值、但当前状态为Inactive的存储设备中的一个设置为Active状态,恢复数据同步工作。
[0056] 前述的基于公有云存储账户的数据备份的线性扩容系统中,所述的遍历及存储模块还包括:
[0057] 数组结构生成模块,用于个人私有云存储系统对指定公有云存储账户下的目录及文件名进行首次遍历(或者用于个人私有云存储系统中所述的不同的虚拟容器对与其相关联的公有云存储账户下的目录及文件名进行首次遍历),生成META DATA的数据结构;
[0058] 数据分组及存储模块,用于遍历完成后,将所述的文件名按照N个为一组,划分为多个组后,导出为json格式的数据,并保存至数据库中;其中,遍历时,以目录或文件名称作为索引值;
[0059] 所述的任务生成及分配模块具体包括:
[0060] 多任务生成及分配模块,用于个人私有云存储系统将数据库中的数据按照分组生成多个任务组(或者用于个人私有云存储系统中的各个不同的虚拟容器将数据库中的数据按照分组生成多个任务组),等待带有wifi功能的存储设备联网后按照分组获取任务。
[0061] 优选的,所述的自动下载模块还包括:
[0062] 存储设备状态检测模块,用于当存储设备联网后,检测该存储设备的状态;
[0063] 记录及下载模块,用于当存储设备的状态为Active时,向个人私有云存储系统发起任务获取请求,个人私有云存储系统查询到与该设备关联的所有虚拟容器,然后将虚拟容器内第一个未全部完成的任务组下发给该设备;该设备保存任务内容和分组的编号;并根据当前任务组中的目录及文件名自动从各个公有云存储账户中开始下载任务数据;
[0064] 信息反馈模块,用于每完成一个文件的下载或者完成一个任务组的全部或部分文件的下载,则向个人私有云存储系统或个人私有云存储系统中相应的虚拟容器更新任务完成情况同时反馈剩余存储空间;
[0065] 文件记录查找及设置模块,用于个人私有云存储系统或个人私有云存储系统中相应的虚拟容器在接受到任务更新请求后,根据分组编号和文件名称在分组中查找对应的记录,若找到对应的文件记录,则设置fetched=1;其中,fetched为META DATA结构体中包含的一个成员,用于表示是否已经同步,fetched的默认值为0;若未找到对应的文件记录,则返回false信号至所述存储设备;
[0066] 任务放弃及重新获取模块,用于所述存储设备收到false信号后,放弃已经获得的当前分组的后续任务并重新获取第一个未完成的任务组;
[0067] 任务自动请求模块,用于所述存储设备每完成一个任务组的下载后,自动请求下一个未完成任务组,直至完成最后一个未完成任务组。
[0068] 更优选的,所述的设置及处理模块还包括:
[0069] 查找及通知模块,用于个人私有云存储系统查找并通知与该存储设备关联的其他虚拟容器,使得其他虚拟容器也将其与该存储设备的关系设置为Inactive状态,停止同步操作;
[0070] 所述的数据同步恢复模块还包括:
[0071] 绑定模块,用于将新的存储设备与个人私有云存储系统的各个相应的虚拟容器进行绑定。
[0072] 上述系统中,所述的遍历模块还包括:
[0073] 补充遍历及对比模块,用于人私有云存储系统或人私有云存储系统中的各个虚拟容器定期对与其相关联的公有云存储账户下的目录及文件名进行补充遍历,并与本地缓存的目录及文件名列表进行比对,找出新文件,生成下载/同步任务列表;
[0074] 所述的补充遍历及对比模块具体包括:
[0075] 数据加载及存储模块:用于各个虚拟容器从数据库中按照分组的顺序加载目录结构的json数据,在程序的内存中保存该数组结构,并将该数组命名为:old;
[0076] 补充遍历模块:用于按照首次遍历的方式对公有云存储账户下的目录及文件名进行补充遍历,获得最新的目录遍历结果的数组结构,并将该数组命名为:new;
[0077] 数据对比模块:用于从old数组中取出一个元素,在new数组中查找与该元素文件名相同的元素,如果没有找到,则放弃此old数组中的该元素;如果找到了对应的元素,则对比两个元素的MD5值或文件长度和最后修改时间;如果相同,则把old数组中元素的fetched值复制给new数组中对应的元素;重复本操作,直到old数组中所有的元素都取出;
[0078] 第二数据导出及存储模块,用于补充遍历完成后,将new数组的数据从程序的内存导出为json格式的数据,并以分组方式保存至数据库中。
[0079] 与现有技术相比,本发明具有以下优点:
[0080] 1、通过将个人私有云存储系统的账户与公有云存储账户及带有wifi功能的存储设备进行绑定;所述的个人私有云存储系统对公有云存储账户下的目录及文件名进行首次遍历,遍历完成后,将目录及文件名数据导出并保存至数据库中;所述的个人私有云存储系统将数据库中的目录及文件名数据生成多个任务组并等待带有wifi功能的存储设备主动获取;当所述的存储设备联网后,向个人私有云存储系统获取任务,然后根据当前任务组中的目录及文件名自动从公有云存储账户中开始下载任务数据;并且下载任务数据的过程中,所述的存储设备不定时的向个人私有云存储系统反馈剩余存储空间;若所述的存储设备的剩余存储空间低于预设值时,则个人私有云存储系统将该存储设备的状态设置为Inactive,该存储设备停止同步操作;通过对所述的存储设备删除数据使之恢复为Active状态或者通过关联新的存储设备到该个人私有云存储系统,恢复数据同步工作;从而实现了将云存储账号的内容智能化自动备份到本地存储设备中,保证了数据的安全性;同时实现了本地存储设备的线性扩容,即当某个本地存储设备内存不足时,可以连接其他的本地存储设备继续进行数据同步;
[0081] 2、通过利用不同的虚拟容器分别与多个公有云存储账户一一对应关联,并且各个虚拟容器与带有wifi功能的存储设备进行一对多、一对一或多对一关联,其中,当每个虚拟容器关联多个存储设备时,在进行数据同步时,只有一个存储设备的状态为Active,其他均为Inactive,从而可以更精确、快捷、灵活的管控各个云存储账户的内容备份及更新任务;
[0082] 3、若所述的存储设备的剩余存储空间低于预设值时,则个人私有云存储系统将该存储设备的状态设置为Inactive,该存储设备停止同步操作;可以通过虚拟容器将与其关联的其他的剩余存储空间高于预设值、但当前状态为Inactive的存储设备中的一个设置为Active状态,恢复数据同步工作,从而采用另一种方式实现了快速平滑扩容;
[0083] 4、各个虚拟容器定期对与其相关联的公有云存储账户下的目录及文件名进行补充遍历,并与本地缓存的目录及文件名列表进行比对,找出新文件,生成下载/同步任务列表,从而可以仅对各个公有云存储账户更新的文件进行自动、及时备份,进一步提高了数据自动更新的效率;
[0084] 5、通过在结构体中设置成员fetched,从而可以在数据备份时或者线性扩容时有效避免数据的重复备份,从而提高了本地存储设备的利用率。

附图说明

[0085] 图1是本发明的一种实施例的工作流程图;
[0086] 图2是个人私有云存储系统的账户与Baidu Yun账户及带有wifi功能的存储设备进行绑定的方法流程图;
[0087] 图3是带有wifi功能的存储设备执行备份任务以及个人私有云存储系统(点滴云)发现公有云存储上有新文件并生成备份任务的流程图。
[0088] 下面结合附图和具体实施方式对本发明作进一步的说明。

具体实施方式

[0089] 本发明的实施例1:一种基于公有云存储账户的数据备份的线性扩容方法,如图1、图3所示,包括以下步骤:
[0090] S1,将个人私有云存储系统的账户与公有云存储账户及带有wifi功能的存储设备进行绑定;优选的,所述的S1具体可包括以下内容:
[0091] S11,访问带有wifi功能的存储设备的Web管理界面,并利用个人私有云存储系统的账号和密码进行登陆;登陆成功后,所述的存储设备即与个人私有云存储系统的账户建立了绑定关系;
[0092] S12,在所述的存储设备的Web管理界面上发起对公有云存储账户的绑定请求;通过公有云存储系统的API获取访问授权,得到一个授权key;
[0093] S13,将公有云存储系统的名称、授权key和所述存储设备的设备编号上传至个人私有云存储系统并存储;个人私有云存储系统创建一个绑定关系记录,存储公有云存储账户与存储设备之间的关系;
[0094] S2,所述的个人私有云存储系统对公有云存储账户下的目录及文件名进行首次遍历,遍历完成后,将目录及文件名数据导出并保存至数据库中;优选的,所述S2具体可包括:个人私有云存储系统对指定公有云存储账户下的目录及文件名进行首次遍历,生成META DATA的数据结构;遍历完成后,将所述的文件名按照N个为一组,划分为多个组后,导出为json格式的数据,并保存至数据库中;其中,遍历时,以目录或文件名称作为索引值;
[0095] 进一步优选的,所述步骤S2还可包括以下内容:人私有云存储系统或人私有云存储系统中的各个虚拟容器定期对与其相关联的公有云存储账户下的目录及文件名进行补充遍历,并与本地缓存的目录及文件名列表进行比对,找出新文件,生成下载/同步任务列表;具体包括:
[0096] 首先,各个虚拟容器从数据库中按照分组的顺序加载目录结构的json数据,在程序的内存中保存该数组结构,并将该数组命名为:old;
[0097] 其次,按照首次遍历的方式对公有云存储账户下的目录及文件名进行补充遍历,获得最新的目录遍历结果的数组结构,并将该数组命名为:new;
[0098] 再次,从old数组中取出一个元素,在new数组中查找与该元素文件名相同的元素,如果没有找到,则放弃此old数组中的该元素;如果找到了对应的元素,则对比两个元素的MD5值或文件长度和最后修改时间;如果相同,则把old数组中元素的fetched值复制给new数组中对应的元素;重复本操作,直到old数组中所有的元素都取出;
[0099] 最后,补充遍历完成后,将new数组的数据从程序的内存导出为json格式的数据,并以分组方式保存至数据库中;
[0100] S3,所述的个人私有云存储系统将数据库中的目录及文件名数据生成多个任务组,并等待带有wifi功能的存储设备主动获取;
[0101] S4,当所述的存储设备联网后,向个人私有云存储系统获取任务,然后根据当前任务组中的目录及文件名自动从公有云存储账户中开始下载任务数据;并且下载任务数据的过程中,所述的存储设备不定时的向个人私有云存储系统反馈剩余存储空间;优选,所述S4可具体包括:当所述的存储设备联网后,检测存储设备的状态,若为Active,则向个人私有云存储系统发起任务获取请求,个人私有云存储系统查询到与该设备关联的所有虚拟容器,然后将虚拟容器内第一个未全部完成的任务组下发给该设备;该设备保存任务内容和分组的编号,并根据当前任务组中的目录及文件名自动从各个公有云存储账户中开始下载任务数据;每完成一个文件的下载或者完成一个任务组的全部或部分文件的下载,则向个人私有云存储系统更新任务完成情况同时反馈剩余存储空间;若存储设备的剩余可用空间小于预设值,则放弃已经获得的当前分组的后续任务,并设置存储设备的状态为Inactive,停止数据同步服务;否则个人私有云存储系统在接受到任务更新请求后,根据分组编号和文件名称在分组中查找对应的记录,若找到对应的文件记录,则设置fetched=1;其中,fetched为META DATA结构体中包含的一个成员,用于表示是否已经同步,fetched的默认值为0;若未找到对应的文件记录,则返回false信号至所述存储设备,所述存储设备收到false信号后,放弃已经获得的当前分组的后续任务并重新获取第一个未完成的任务组;所述存储设备每完成一个任务组的下载后,自动请求下一个未完成任务组,直至完成最后一个未完成任务组;
[0102] S5,若所述的存储设备的剩余存储空间低于预设值时,则个人私有云存储系统将该存储设备的状态设置为Inactive,该存储设备停止同步操作;通过对所述的存储设备删除数据使之恢复为Active状态或者通过关联新的存储设备到该个人私有云存储系统,恢复数据同步工作。
[0103] 一种基于公有云存储账户的数据备份的线性扩容系统,包括:
[0104] 绑定模块,用于将个人私有云存储系统的账户与公有云存储账户及带有wifi功能的存储设备进行绑定;
[0105] 遍历及存储模块,用于所述的个人私有云存储系统对公有云存储账户下的目录及文件名进行首次遍历,遍历完成后,将目录及文件名数据导出并保存至数据库中;
[0106] 任务生成及分配模块,用于所述的个人私有云存储系统将数据库中的目录及文件名数据生成多个任务组并等待带有wifi功能的存储设备主动获取;
[0107] 自动下载模块,用于当所述的存储设备联网后,向个人私有云存储系统获取任务,然后根据当前任务组中的目录及文件名自动从公有云存储账户中开始下载任务数据;
[0108] 剩余内存反馈模块:用于下载任务数据的过程中,所述的存储设备不定时的向个人私有云存储系统反馈剩余存储空间;
[0109] 设置及处理模块,用于若所述的存储设备的剩余存储空间低于预设值时,则个人私有云存储系统将该存储设备的状态设置为Inactive,该存储设备停止同步操作;
[0110] 数据同步恢复模块,用于所述的存储设备删除数据使之恢复为Active状态或者通过关联新的存储设备到该个人私有云存储系统,恢复数据同步工作。
[0111] 优选的,所述的绑定模块还可包括:
[0112] 登录模块,用于访问带有wifi功能的存储设备的Web管理界面,并利用个人私有云存储系统的账号和密码进行登陆;登陆成功后,所述的存储设备即与个人私有云存储系统的账户建立了绑定关系;
[0113] 绑定请求发送模块,用于在所述存储设备的Web管理界面上发起对公有云存储账户的绑定请求;
[0114] 访问授权获取模块,用于通过公有云存储系统的API获取访问授权,得到一个授权key;
[0115] 数据上传模块,用于将公有云存储系统的名称、授权key和所述存储设备的设备编号上传至个人私有云存储系统并存储;
[0116] 绑定关系记录创建模块,用于个人私有云存储系统创建一个绑定关系记录,存储公有云存储账户与所述存储设备之间的关系。
[0117] 优选的,所述的遍历及存储模块还可包括:
[0118] 数组结构生成模块,用于个人私有云存储系统对指定公有云存储账户下的目录及文件名进行首次遍历,生成META DATA的数据结构;
[0119] 数据分组及存储模块,用于遍历完成后,将所述的文件名按照N个为一组,划分为多个组后,导出为json格式的数据,并保存至数据库中;其中,遍历时,以目录或文件名称作为索引值;
[0120] 优选的,所述的任务生成及分配模块具体还可包括:
[0121] 多任务生成及分配模块,用于个人私有云存储系统将数据库中的数据按照分组生成多个任务组,等待带有wifi功能的存储设备联网后按照分组获取任务。
[0122] 优选的,所述的自动下载模块还可包括:
[0123] 存储设备状态检测模块,用于当存储设备联网后,检测该存储设备的状态;
[0124] 记录及下载模块,用于当存储设备的状态为Active时,向个人私有云存储系统发起任务获取请求,个人私有云存储系统查询到与该设备关联的所有虚拟容器,然后将虚拟容器内第一个未全部完成的任务组下发给该设备;该设备保存任务内容和分组的编号;并根据当前任务组中的目录及文件名自动从各个公有云存储账户中开始下载任务数据;
[0125] 信息反馈模块,用于每完成一个文件的下载或者完成一个任务组的全部或部分文件的下载,则向个人私有云存储系统更新任务完成情况同时反馈剩余存储空间;
[0126] 文件记录查找及设置模块,用于个人私有云存储系统在接受到任务更新请求后,根据分组编号和文件名称在分组中查找对应的记录,若找到对应的文件记录,则设置fetched=1;其中,fetched为META DATA结构体中包含的一个成员,用于表示是否已经同步,fetched的默认值为0;若未找到对应的文件记录,则返回false信号至所述存储设备;
[0127] 任务放弃及重新获取模块,用于所述存储设备收到false信号后,放弃已经获得的当前分组的后续任务并重新获取第一个未完成的任务组;
[0128] 任务自动请求模块,用于所述存储设备每完成一个任务组的下载后,自动请求下一个未完成任务组,直至完成最后一个未完成任务组。
[0129] 进一步优选的,所述的遍历模块还可包括:
[0130] 补充遍历及对比模块,用于人私有云存储系统定期对与其相关联的公有云存储账户下的目录及文件名进行补充遍历,并与本地缓存的目录及文件名列表进行比对,找出新文件,生成下载/同步任务列表;
[0131] 进一步的,所述的补充遍历及对比模块具体可包括:
[0132] 数据加载及存储模块:用于个人私有云存储系统从数据库中按照分组的顺序加载目录结构的json数据,在程序的内存中保存该数组结构,并将该数组命名为:old;
[0133] 补充遍历模块:用于按照首次遍历的方式对公有云存储账户下的目录及文件名进行补充遍历,获得最新的目录遍历结果的数组结构,并将该数组命名为:new;
[0134] 数据对比模块:用于从old数组中取出一个元素,在new数组中查找与该元素文件名相同的元素,如果没有找到,则放弃此old数组中的该元素;如果找到了对应的元素,则对比两个元素的MD5值或文件长度和最后修改时间;如果相同,则把old数组中元素的fetched值复制给new数组中对应的元素;重复本操作,直到old数组中所有的元素都取出;
[0135] 第二数据导出及存储模块,用于补充遍历完成后,将new数组的数据从程序的内存导出为json格式的数据,并以分组方式保存至数据库中。
[0136] 实施例2:一种基于公有云存储账户的数据备份的线性扩容方法,包括以下步骤:
[0137] S1,将个人私有云存储系统的账户与公有云存储账户及带有wifi功能的存储设备进行绑定;优选的,所述S1具体可包括:
[0138] S11,访问带有wifi功能的存储设备的Web管理界面,并利用个人私有云存储系统的账号和密码进行登陆;登陆成功后,所述的存储设备即与个人私有云存储系统的账户建立了绑定关系;
[0139] S12,在所述的存储设备的Web管理界面上发起对公有云存储账户的绑定请求;通过公有云存储系统的API获取访问授权,得到一个授权key;
[0140] S13,将公有云存储系统的名称、授权key和所述存储设备的设备编号上传至个人私有云存储系统并存储;个人私有云存储系统创建一个绑定关系记录,存储公有云存储账户与存储设备之间的关系;
[0141] 进一步优选的,所述的步骤S12具体可包括:在所述的存储设备的Web管理界面上发起对多个公有云存储账户的绑定请求;通过公有云存储系统的开放编程接口(即OpenAPI)获取访问授权,获得相应的授权key;步骤S13进一步可包括:将所述的公有云存储系统的名称、授权key和所述存储设备的设备编号上传至个人私有云存储系统并存储;个人私有云存储系统创建多个不同的虚拟容器,(在每个虚拟容器中,利用公有云存储系统的API及相应的授权KEY进行登录,同时设置用户期望同步的目录,默认为根目录)使得各个虚拟容器与多个公有云存储账户一一对应关联,并且各个虚拟容器与带有wifi功能的存储设备进行一对多、一对一或多对一关联,其中,当每个虚拟容器关联多个存储设备时,在进行数据同步时,只有一个存储设备的状态为Active,其他均为Inactive(如果某个虚拟容器与相应的公有云存储账户取消关联,则该虚拟容器自动销毁,同时与其绑定的存储设备也取消关联状态);
[0142] S2,所述的个人私有云存储系统对公有云存储账户下的目录及文件名进行首次遍历,遍历完成后,将目录及文件名数据导出并保存至数据库中;优选的,所述步骤S2具体可包括:个人私有云存储系统中所述的不同的虚拟容器对与其相关联的公有云存储账户下的目录及文件名进行首次遍历,生成META DATA的数据结构;遍历完成后,将所述的文件名按照N个为一组,划分为多个组后,导出为json格式的数据,并保存至数据库中;其中,遍历时,以目录或文件名称作为索引值;
[0143] 进一步优选的,步骤S2还可包括:人私有云存储系统中的各个虚拟容器定期对与其相关联的公有云存储账户下的目录及文件名进行补充遍历,并与本地缓存的目录及文件名列表进行比对,找出新文件,生成下载/同步任务列表;具体包括:
[0144] 首先,各个虚拟容器从数据库中按照分组的顺序加载目录结构的json数据,在程序的内存中保存该数组结构,并将该数组命名为:old;
[0145] 其次,按照首次遍历的方式对公有云存储账户下的目录及文件名进行补充遍历,获得最新的目录遍历结果的数组结构,并将该数组命名为:new;
[0146] 再次,从old数组中取出一个元素,在new数组中查找与该元素文件名相同的元素,如果没有找到,则放弃此old数组中的该元素;如果找到了对应的元素,则对比两个元素的MD5值或文件长度和最后修改时间;如果相同,则把old数组中元素的fetched值复制给new数组中对应的元素;重复本操作,直到old数组中所有的元素都取出;
[0147] 最后,补充遍历完成后,将new数组的数据从程序的内存导出为json格式的数据,并以分组方式保存至数据库中;
[0148] S3,所述的个人私有云存储系统将数据库中的目录及文件名数据生成多个任务组并等待带有wifi功能的存储设备主动获取;
[0149] S4,当所述的存储设备联网后,向个人私有云存储系统获取任务,然后根据当前任务组中的目录及文件名自动从公有云存储账户中开始下载任务数据;并且下载任务数据的过程中,所述的存储设备不定时的向个人私有云存储系统反馈剩余存储空间;优选的,步骤S4具体可包括:当所述的存储设备联网后,检测存储设备的状态,若为Active,则向个人私有云存储系统发起任务获取请求,个人私有云存储系统查询到与该设备关联的所有虚拟容器,然后将虚拟容器内第一个未全部完成的任务组下发给该设备;该设备保存任务内容和分组的编号,并根据当前任务组中的目录及文件名自动从各个公有云存储账户中开始下载任务数据(可采用并行处理或串行处理;所述的并行处理即带有wifi功能的存储设备先获取与此设备关联的所有虚拟容器的第一个任务组数据,然后并行进行多个文件的下载;所述的串行处理即每次只获取一个虚拟容器的任务组数据并进行文件同步,处理完一个虚拟容器的所有任务分组后再依次处理下一个虚拟容器的任务数据);每完成一个文件的下载或者完成一个任务组的全部或部分文件的下载,则向个人私有云存储系统中相应的虚拟容器更新任务完成情况同时反馈剩余存储空间;若存储设备的剩余可用空间小于预设值,则放弃已经获得的当前分组的后续任务,并设置存储设备的状态为Inactive,停止数据同步服务;否则个人私有云存储系统中相应的虚拟容器在接受到任务更新请求后,根据分组编号和文件名称在分组中查找对应的记录,若找到对应的文件记录,则设置fetched=1;其中,fetched为META DATA结构体中包含的一个成员,用于表示是否已经同步,fetched的默认值为0;若未找到对应的文件记录,则返回false信号至所述存储设备,所述存储设备收到false信号后,放弃已经获得的当前分组的后续任务并重新获取第一个未完成的任务组;所述存储设备每完成一个任务组的下载后,自动请求下一个未完成任务组,直至完成最后一个未完成任务组;
[0150] S5,若所述的存储设备的剩余存储空间低于预设值时,则个人私有云存储系统将该存储设备的状态设置为Inactive,该存储设备停止同步操作;通过对所述的存储设备删除数据使之恢复为Active状态、或者通过关联新的存储设备到该个人私有云存储系统、或者通过虚拟容器将与其关联的其他的剩余存储空间高于预设值、但当前状态为Inactive的存储设备中的一个设置为Active状态,恢复数据同步工作;可选的,步骤S5具体可包括:当个人私有云存储系统的某个虚拟容器执行同步的过程中发现所述的存储设备的存储空间低于预设值时,则该虚拟容器将其与该存储设备的关系设置为Inactive状态;同时个人私有云存储系统查找并通知与该存储设备关联的其他虚拟容器,其他虚拟容器也将其与该存储设备的关系设置为Inactive状态;所述的存储设备停止同步操作,直至所述的存储设备通过删除数据转为Active状态,或者增加新的带有wifi功能的存储设备后,该新的存储设备与个人私有云存储系统的各个相应的虚拟容器绑定后,继续进行数据同步;若没有与虚拟容器相关联的Active状态的存储设备,则该虚拟容器进入Inactive状态,只保留最后的同步状态,并停止对与其相关联的公有云存储账户下的目录及文件名进行补充遍历、找出新文件,以及生成下载/同步任务列表;直至某个存储设备通过删除数据转为Active状态或者增加新的带有wifi功能的存储设备后,所述的虚拟容器恢复为Active状态。
[0151] 一种基于公有云存储账户的数据备份的线性扩容系统,包括:
[0152] 绑定模块,用于将个人私有云存储系统的账户与公有云存储账户及带有wifi功能的存储设备进行绑定;
[0153] 遍历及存储模块,用于所述的个人私有云存储系统对公有云存储账户下的目录及文件名进行首次遍历,遍历完成后,将目录及文件名数据导出并保存至数据库中;
[0154] 任务生成及分配模块,用于所述的个人私有云存储系统将数据库中的目录及文件名数据生成多个任务组并等待带有wifi功能的存储设备主动获取;
[0155] 自动下载模块,用于当所述的存储设备联网后,向个人私有云存储系统获取任务,然后根据当前任务组中的目录及文件名自动从公有云存储账户中开始下载任务数据;
[0156] 剩余内存反馈模块:用于下载任务数据的过程中,所述的存储设备不定时的向个人私有云存储系统反馈剩余存储空间;
[0157] 设置及处理模块,用于若所述的存储设备的剩余存储空间低于预设值时,则个人私有云存储系统将该存储设备的状态设置为Inactive,该存储设备停止同步操作;
[0158] 数据同步恢复模块,用于所述的存储设备删除数据使之恢复为Active状态或者通过关联新的存储设备到该个人私有云存储系统,恢复数据同步工作;
[0159] 或者包括:
[0160] 设置模块:用于通过虚拟容器将与其关联的其他的剩余存储空间高于预设值、但当前状态为Inactive的存储设备中的一个设置为Active状态,恢复数据同步工作。
[0161] 优选的,所述的绑定模块还可包括:
[0162] 登录模块,用于访问带有wifi功能的存储设备的Web管理界面,并利用个人私有云存储系统的账号和密码进行登陆;登陆成功后,所述的存储设备即与个人私有云存储系统的账户建立了绑定关系;
[0163] 绑定请求发送模块,用于在所述存储设备的Web管理界面上发起对公有云存储账户的绑定请求;
[0164] 访问授权获取模块,用于通过公有云存储系统的API获取访问授权,得到一个授权key;
[0165] 数据上传模块,用于将公有云存储系统的名称、授权key和所述存储设备的设备编号上传至个人私有云存储系统并存储;
[0166] 绑定关系记录创建模块,用于个人私有云存储系统创建一个绑定关系记录,存储公有云存储账户与所述存储设备之间的关系。
[0167] 进一步优选的,所述的绑定请求发送模块具体还可包括:
[0168] 多账户绑定请求发送模块,用于在所述的存储设备的Web管理界面上发起对多个公有云存储账户的绑定请求;
[0169] 所述的访问授权获取模块具体包括:
[0170] 多账户访问授权获取模块,用于通过公有云存储系统的开放编程接口(即OpenAPI)获取访问授权,获得相应的授权key;
[0171] 所述的绑定关系记录创建模块具体包括:
[0172] 虚拟容器创建及关联模块,用于个人私有云存储系统创建多个不同的虚拟容器,(在每个虚拟容器中,利用公有云存储系统的API及相应的授权KEY进行登录,同时设置用户期望同步的目录,默认为根目录)使得各个虚拟容器与多个公有云存储账户一一对应关联,并且各个虚拟容器与带有wifi功能的存储设备进行一对多、一对一或多对一关联,其中,当每个虚拟容器关联多个存储设备时,在进行数据同步时,只有一个存储设备的状态为Active,其他均为Inactive(如果某个虚拟容器与相应的公有云存储账户取消关联,则该虚拟容器自动销毁,同时与其绑定的存储设备也取消关联状态)。
[0173] 优选的,所述的遍历及存储模块还可包括:
[0174] 数组结构生成模块,用于用于个人私有云存储系统中所述的不同的虚拟容器对与其相关联的公有云存储账户下的目录及文件名进行首次遍历,生成META DATA的数据结构;
[0175] 数据分组及存储模块,用于遍历完成后,将所述的文件名按照N个为一组,划分为多个组后,导出为json格式的数据,并保存至数据库中;其中,遍历时,以目录或文件名称作为索引值;
[0176] 优选的,所述的任务生成及分配模块具体可包括:
[0177] 多任务生成及分配模块,用于用于个人私有云存储系统中的各个不同的虚拟容器将数据库中的数据按照分组生成多个任务组,等待带有wifi功能的存储设备联网后按照分组获取任务。
[0178] 优选的,所述的自动下载模块还可包括:
[0179] 存储设备状态检测模块,用于当存储设备联网后,检测该存储设备的状态;
[0180] 记录及下载模块,用于当存储设备的状态为Active时,向个人私有云存储系统发起任务获取请求,个人私有云存储系统查询到与该设备关联的所有虚拟容器,然后将虚拟容器内第一个未全部完成的任务组下发给该设备;该设备保存任务内容和分组的编号;并根据当前任务组中的目录及文件名自动从各个公有云存储账户中开始下载任务数据;
[0181] 信息反馈模块,用于每完成一个文件的下载或者完成一个任务组的全部或部分文件的下载,则向个人私有云存储系统中相应的虚拟容器更新任务完成情况同时反馈剩余存储空间;
[0182] 文件记录查找及设置模块,用于个人私有云存储系统中相应的虚拟容器在接受到任务更新请求后,根据分组编号和文件名称在分组中查找对应的记录,若找到对应的文件记录,则设置fetched=1;其中,fetched为META DATA结构体中包含的一个成员,用于表示是否已经同步,fetched的默认值为0;若未找到对应的文件记录,则返回false信号至所述存储设备;
[0183] 任务放弃及重新获取模块,用于所述存储设备收到false信号后,放弃已经获得的当前分组的后续任务并重新获取第一个未完成的任务组;
[0184] 任务自动请求模块,用于所述存储设备每完成一个任务组的下载后,自动请求下一个未完成任务组,直至完成最后一个未完成任务组。
[0185] 优选的,所述的设置及处理模块还可包括:
[0186] 查找及通知模块,用于个人私有云存储系统查找并通知与该存储设备关联的其他虚拟容器,使得其他虚拟容器也将其与该存储设备的关系设置为Inactive状态,停止同步操作;
[0187] 所述的数据同步恢复模块还包括:
[0188] 绑定模块,用于将新的存储设备与个人私有云存储系统的各个相应的虚拟容器进行绑定。
[0189] 优选的,所述的遍历模块还可包括:
[0190] 补充遍历及对比模块,用于个人私有云存储系统中的各个虚拟容器定期对与其相关联的公有云存储账户下的目录及文件名进行补充遍历,并与本地缓存的目录及文件名列表进行比对,找出新文件,生成下载/同步任务列表;
[0191] 进一步优选的,所述的补充遍历及对比模块具体可包括:
[0192] 数据加载及存储模块:用于各个虚拟容器从数据库中按照分组的顺序加载目录结构的json数据,在程序的内存中保存该数组结构,并将该数组命名为:old;
[0193] 补充遍历模块:用于按照首次遍历的方式对公有云存储账户下的目录及文件名进行补充遍历,获得最新的目录遍历结果的数组结构,并将该数组命名为:new;
[0194] 数据对比模块:用于从old数组中取出一个元素,在new数组中查找与该元素文件名相同的元素,如果没有找到,则放弃此old数组中的该元素;如果找到了对应的元素,则对比两个元素的MD5值或文件长度和最后修改时间;如果相同,则把old数组中元素的fetched值复制给new数组中对应的元素;重复本操作,直到old数组中所有的元素都取出;
[0195] 第二数据导出及存储模块,用于补充遍历完成后,将new数组的数据从程序的内存导出为json格式的数据,并以分组方式保存至数据库中。
[0196] 实施例3:一种基于公有云存储账户的数据备份的线性扩容方法,包括以下步骤:
[0197] S1,将个人私有云存储系统的账户与公有云存储账户及带有wifi功能的存储设备进行绑定;
[0198] S2,所述的个人私有云存储系统对公有云存储账户下的目录及文件名进行首次遍历,遍历完成后,将目录及文件名数据导出并保存至数据库中;
[0199] S3,所述的个人私有云存储系统将数据库中的目录及文件名数据生成多个任务组并等待带有wifi功能的存储设备主动获取;
[0200] S4,当所述的存储设备联网后,向个人私有云存储系统获取任务,然后根据当前任务组中的目录及文件名自动从公有云存储账户中开始下载任务数据;并且下载任务数据的过程中,所述的存储设备不定时的向个人私有云存储系统反馈剩余存储空间;
[0201] S5,若所述的存储设备的剩余存储空间低于预设值时,则个人私有云存储系统将该存储设备的状态设置为Inactive,该存储设备停止同步操作;通过对所述的存储设备删除数据使之恢复为Active状态或者通过关联新的存储设备到该个人私有云存储系统,恢复数据同步工作。
[0202] 一种基于公有云存储账户的数据备份的线性扩容系统,包括:
[0203] 绑定模块,用于将个人私有云存储系统的账户与公有云存储账户及带有wifi功能的存储设备进行绑定;
[0204] 遍历及存储模块,用于所述的个人私有云存储系统对公有云存储账户下的目录及文件名进行首次遍历,遍历完成后,将目录及文件名数据导出并保存至数据库中;
[0205] 任务生成及分配模块,用于所述的个人私有云存储系统将数据库中的目录及文件名数据生成多个任务组并等待带有wifi功能的存储设备主动获取;
[0206] 自动下载模块,用于当所述的存储设备联网后,向个人私有云存储系统获取任务,然后根据当前任务组中的目录及文件名自动从公有云存储账户中开始下载任务数据;
[0207] 剩余内存反馈模块:用于下载任务数据的过程中,所述的存储设备不定时的向个人私有云存储系统反馈剩余存储空间;
[0208] 设置及处理模块,用于若所述的存储设备的剩余存储空间低于预设值时,则个人私有云存储系统将该存储设备的状态设置为Inactive,该存储设备停止同步操作;
[0209] 数据同步恢复模块,用于所述的存储设备删除数据使之恢复为Active状态或者通过关联新的存储设备到该个人私有云存储系统,恢复数据同步工作。
[0210] 本发明的一种实施例的工作原理:如图2所示,访问带有wifi功能的aaa盘的Web管理界面,并利用个人私有云存储系统的账号和密码进行登陆;登陆成功后,所述的aaa盘即与个人私有云存储系统的账户建立了绑定关系;在所述的aaa盘的Web管理界面上发起对某个或多个公有云存储账户(比如360云盘的账户、百度云的账户)的绑定请求;通过360云盘、百度云的开放编程接口(即OpenAPI)获取访问授权,获得相应的授权key;将所述的公有云存储系统的名称(360云盘、百度云)、授权key和aaa盘的设备编号上传至个人私有云存储系统并存储;
[0211] 同理,建立bbb盘与个人私有云存储系统和金山云盘账户的绑定关系;以及ccc盘、ddd盘和eee盘与个人私有云存储系统和腾讯云盘的绑定关系。
[0212] 个人私有云存储系统创建4不同的虚拟容器,如A虚拟容器、B虚拟容器、C虚拟容器、D虚拟容器(比如可在A虚拟容器中,利用360云盘的API及相应的授权KEY进行登录;在B虚拟容器中,利用百度云的API及相应的授权KEY进行登录,以此类推),创建以下关联关系:
[0213] 360云盘——A容器——aaa盘
[0214] 百度云——B容器——aaa盘
[0215] 金山云盘——C容器——bbb盘
[0216] 腾讯云盘——D容器——ccc盘和ddd盘和eee盘
[0217] 利用A虚拟容器、B虚拟容器、C虚拟容器、D虚拟容器分别管控360云盘账户、百度云账户、金山云盘、腾讯云盘中的数据备份及更新任务,并且与存储设备进行多对一、一对一或一对多关联。
[0218] 在备份过程中,aaa盘每完成一个任务的同步则向相应的容器(A容器或B容器)反馈剩余存储空间,若A容器接收到aaa盘的剩余存储空间不足时,则将其与aaa盘的关联状态设置为Inactive,aaa盘停止对A容器的任务进行同步;同时A容器通知个人私有云存储系统,个人私有云存储系统查找发现与aaa盘关联的还有B容器,因此将aaa盘剩余存储空间不足的信息发送至B容器,B容器将其与aaa盘的关联状态也设置为Inactive,aaa盘停止对B容器的任务进行同步。直至通过删除aaa盘的内容,使得aaa盘的剩余存储空间大于预设值,或者通过增加新的存储设备,比如fff盘,将fff盘分别与A容器或B容器绑定后,同步任务继续进行。
[0219] 同理,bbb盘每完成一个任务的同步则向相应的容器(C容器)反馈剩余存储空间,若C容器接收到bbb盘的剩余存储空间不足时,则将其与bbb盘的关联状态设置为Inactive,bbb盘停止对C容器的任务进行同步;直至通过删除bbb盘的内容,使得bbb盘的剩余存储空间大于预设值,或者通过增加新的存储设备,比如ggg盘,将ggg盘与C容器绑定后,同步任务继续进行。
[0220] 与D容器同时绑定的ccc盘、ddd盘和eee盘3个存储设备,但在数据同步过程中,只有1个为Active,比如ccc盘,其他2个均为Inactive状态。同理,ccc盘每完成一个任务的同步则向相应的容器(D容器)反馈剩余存储空间,若D容器接收到ccc盘的剩余存储空间不足时,则将其与ccc盘的关联状态设置为Inactive,ccc盘停止对D容器的任务进行同步;直至通过删除ccc盘的内容,使得ccc盘的剩余存储空间大于预设值,或者通过增加新的存储设备,比如hhh盘,将hhh盘与D容器绑定后或者将ddd盘或eee盘的状态设置为Active时,同步任务继续进行。
[0221] 以上工作原理中,所述的360云盘账户和百度云账户也可以替换为360云盘的几个不同账户或百度云的几个不同的账户。