发明内容
为了解决上述技术问题,本申请实施例提供了通过云文件***实现云存储接入的方法和装置,以通过一个云文件***集中为各个应用提供云存储服务,应用开发商无需再自己实现云存储功能,从而节约了应用开发商的开发难度和开发成本。
本申请实施例公开了如下技术方案:
一种通过云文件***实现云存储接入的方法,包括:
响应于应用对云文件***中的文件的操作请求,获取所述应用的进程名;
判断所述操作请求针对的文件所在的路径的名称中是否包含所述应用的进程名;
如果是,允许所述操作请求,对云存储服务器执行所述操作请求指示的操作;
如果否,拒绝所述操作请求。
优选的,当所述操作请求为写入请求时,所述允许所述写入请求,对云存储服务器执行所述写入请求指示的写入操作包括:
将所述写入请求针对的文件保存在本地的存储空间中;
向所述应用返回写入响应,并将所述写入请求针对的文件从本地的存储空间传输给所述云存储服务器。
优选的,还包括:
在将所述写入请求针对的文件从本地的存储空间传输给所述云存储服务器之后,将所述写入请求针对的文件从本地的存储空间中删除。
优选的,还包括:
将所述写入操作针对的文件的信息存储在本地的数据库中。
优选的,还包括:
响应于对云文件***的启动操作,将所述云存储服务器中的文件信息同步到本地的数据库中。
优选的,还包括:
响应于应用对所述文件***中的文件目录的读取请求,从所述本地的数据库读取文件信息,并将读取的文件信息返回给所述应用。
优选的,还包括:
在对云存储服务器执行所述操作请求指示的操作之前,根据所述云文件***所在的电子设备的唯一标识,从云存储代理平台获取预先分配给所述云文件***所在的电子设备的云存储服务器的使用账号,其中,所述云存储代理平台预先存储有电子设备的唯一标识与云存储服务的使用账号之间的映射关系;
则所述对云存储服务器执行所述操作请求指示的操作为:
根据所述云存储服务器的使用账号对相应的云存储服务器执行所述操作请求指示的操作。
优选的,所述云存储服务器的使用账号是经过所述云存储代理平台加密处理的。
优选的,所述云文件***是在用户空间实现的。
优选的,在所述用户空间设置有libfuse接口,所述libfuse接口与内核空间的FUSE模块通信;当内核空间中的VFS模块响应于应用的文件操作命令,并将所述文件操作命令传递给FUSE模块时,所述FUSE模块将所述文件操作命令传递给所述libfuse接口,所述libfuse接口将所述文件操作命令传递给所述云文件***。
优选的,所述云文件***基于http协议实现传输。
一种通过云文件***实现云存储接入的装置,包括:
进程名获取单元,用于响应于应用对云文件***中的文件的操作请求,获取所述应用的进程名;
判断单元,用于判断所述操作请求针对的文件所在的路径的名称中是否包含所述应用的进程名;
操作执行单元,用于如果是,允许所述操作请求,对云存储服务器执行所述操作请求指示的操作;
操作拒绝单元,用于如果否,拒绝所述操作请求。
优选的,当所述操作请求为写入请求时,所述操作执行单元包括:
第一存储子单元,用于将所述写入请求针对的文件保存在本地的存储空间中;
响应子单元,用于向所述应用返回写入响应,并将所述写入请求针对的文件从本地的存储空间传输给所述云存储服务器。
优选的,所述操作执行单元还包括:
删除子单元,用于在所述响应子单元将所述写入请求针对的文件从本地的存储空间传输给所述云存储服务器之后,将所述写入请求针对的文件从本地的存储空间中删除。
优选的,所述操作执行单元还包括:
第二存储子单元,用于将所述写入操作针对的文件的信息存储在本地的数据库中。
优选的,所述装置还包括:
数据同步单元,用于响应于对云文件***的启动操作,将所述云存储服务器中的文件信息同步到本地的数据库中。
优选的,所述装置还包括:
目录读取单元,用于响应于应用对所述文件***中的文件目录的读取请求,从所述本地的数据库读取文件信息,并将读取的文件信息返回给所述应用。
优选的,所述装置还包括:
账号获取单元,用于在所述操作执行单元对云存储服务器执行所述操作请求指示的操作之前,根据所述云文件***所在的电子设备的唯一标识,从云存储代理平台获取预先分配给所述云文件***所在的电子设备的云存储服务器的使用账号,其中,所述云存储代理平台预先存储有电子设备的唯一标识与云存储服务的使用账号之间的映射关系;
则所述操作执行单元用于,根据所述云存储服务器的使用账号对相应的云存储服务器执行所述操作请求指示的操作。
优选的,所述云存储服务器的使用账号是经过所述云存储代理平台加密处理的。
优选的,所述云文件***是在用户空间实现的。
优选的,在所述用户空间设置有libfuse接口,所述libfuse接口与内核空间的FUSE模块通信;当内核空间中的VFS模块响应于应用的文件操作命令,并将所述文件操作命令传递给FUSE模块时,所述FUSE模块将所述文件操作命令传递给所述libfuse接口,所述libfuse接口将所述文件操作命令传递给所述云文件***。
优选的,所述云文件***基于http协议实现传输。
由上述实施例可以看出,与现有技术相比,本申请的优点在于:
由一个云文件***集中为所有应用提供***级的云存储服务,并且,对于每一个应用来说,其只能对该云文件***中属于自己的文件进行操作,而不能对属于其它应用的文件进行操作。各个应用的开发商无需再各自去实现云存储服务,从而节约了应用开发商的开发难度和开发成本。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例进行详细描述。
方法实施例
首先参考图1,图1示意性地示出了本申请的实施方式可以在其中实施的一个示例性应用场景。其中,以智能电视设备为例,在智能电视设备上布置一个云文件***10,在云文件***10的根目录下创建一个/Cloud文件夹11,智能电视设备上的任意一个客户端应用可以像操作本地文件一样操作/Cloud文件夹11中的文件。/Cloud文件夹11是一个虚拟文件夹,并且映射到云存储服务器20的某一个文件夹21上,因此,任意一个客户端应用对云文件***10上的/Cloud文件夹11的操作实际上是对云存储服务器20上的某一个文件夹21的操作。
具体的,客户端应用30向云文件***10发送对/Cloud文件夹11中的某一个文件的写入请求,云文件***10对客户端应用30的写入权限进行控制,如果允许该写入请求,云文件***10对云存储服务器20执行该写入请求所指示的写入操作。即,云文件***10向云存储服务器20发送上传文件请求,云存储服务器20向云文件***10返回上传文件响应(在上传文件响应中指示文件上传成功或上传失败)。如果拒绝该写入请求,云文件***10向客户端应用30返回拒绝写入的响应。本领域技术人员可以理解,图1所示的示意图仅是本申请的实施方式可以在其中得以实现的一个示例。本申请实施方式的应用范围不受到该框架任何方面的限制。例如,客户端应用30除了可以向云文件***10发送对/Cloud文件夹11中的某一个文件的写入请求之外,还可以向云文件***10发送对/Cloud文件夹11中的某一个文件的读取请求。作为响应,云文件***10向云存储服务器20发送文件读取请求,云存储服务器20向云文件***10返回相应的文件。
需要说明的是,在本申请中,“云文件***”是一种可以向应用提供云存储接入服务的文件***。
结合上述应用场景,请参阅图2,示意性地示出了根据本申请的一个实施方式的通过云文件***实现云存储的方法的流程图,例如,该方法可以由云文件***10执行,该方法例如包括以下步骤:
步骤201:响应于应用对云文件***中的文件的操作请求,获取所述应用的进程名。
步骤202:判断所述操作请求针对的文件所在的路径的名称中是否包含所述应用的进程名,如果是,进入步骤203,否则,进入步骤204。
步骤203:允许所述操作请求,对云存储服务器执行所述操作请求指示的操作,结束流程。
步骤204:拒绝所述操作请求,结束流程。
在Linux文件***中,文件的权限管理是基于用户的,即,一个文件只能属于一个用户,其它用户不能随意操作该文件。但是,在智能电视设备或机顶盒设备中,应用的概念变得更重要。当云文件***10响应某一个应用对某一个文件的操作请求时,需要先判断该应用是否有对该文件进行操作的权限。
在本申请中规定,一个应用只能访问以自己的进程名命名的文件夹下的内容。基于此,云文件***10可以判断该操作请求针对的文件所在的路径的名称中是否包含所述应用的进程名,如果是,即可确定该应用有对该文件进行操作的权限,作为响应,云文件***10允许该操作请求,对云存储服务器执行该操作请求指示的操作;如果否,即可确定该应用没有对该文件进行操作的权限,作为响应,云文件***10拒绝该操作请求。
其中,当一个应用向云文件***10发送操作请求时,该应用的进程号作为该操作请求中的一个参数传递给了云文件***10,云文件***10通过该应用的进程号可以进一步得到该应用的进程名。
考虑到本申请中的云文件***10是一个依赖于网络的文件***,其对于操作请求的响应速度会比本地文件***的响应速度要低。
在本申请的一个优选实施方式中,为了尽可能地提高云文件***10对写入请求的响应速度,当云文件***10允许写入请求,对云存储服务器20执行该写入请求指示的写入操作时,云文件***10可以先将写入请求针对文件保存在本地的存储空间中,然后立刻向应用返回写入响应,以便用户可以继续进行下面的操作,随后云文件***10再将该写入请求针对的文件从本地的存储空间传输给云存储服务器20。当然,云文件***10也可以在向应用返回写入响应的同时,将该写入请求针对的文件从本地的存储空间传输给云存储服务器20。
进一步的,在将写入请求针对的文件从本地的存储空间传输给云存储服务器之后,还将写入请求针对的文件本地的存储空间中删除,以便释放本地的存储空间。
在本申请的一个优选实施方式中,为了尽可能地提高云文件***10对读取请求的响应速度,云文件***10将写入操作针对的文件的文件信息存储在本地的数据库中。其中,文件信息可以包括但不限于:文件的类型、文件的大小以及文件的存储路径等。文件信息是作为元数据存储在数据库中。当云文件***10响应于应用对文件目录的读取请求时,文件***10从本地的数据库中读取文件信息,并将读取的文件信息返回给该应用。
可以理解的,由于云文件***10是从本地的数据库中读取文件信息的,而不需要通过网络访问云端的云存储服务器20,因此,可以快速地进行响应。
为了保证云存储服务器20中的文件信息与本地的数据库中的文件信息一致,在本申请的另一个优选实施方式中,当启动云文件***10时,响应于该启动操作,云文件***10启动同步服务,即,将云存储服务器20中的文件信息同步到本地的数据库中。
当然,云文件***10可以先比较本地的数据库中的文件信息是否与云存储服务器中的文件信息一致,如果不一致,再启动同步服务,如果一致,不启动同步服务。
在同步完成之前,先使用同步之前的数据库,在同步完成之后,再使用同步后的数据库。
另外,需要说明的是,在本申请中,可以利用现有的云存储服务器提供云存储服务。
但是,云存储服务器的提供商都有自己的账号体系,需要各个应用的开发者在网站上注册并开通云存储功能,进而为应用获得一个云存储服务器的使用账号。考虑到各个应用的开发者还需要执行注册和开通等繁琐的操作过程才能享用到云存储服务,因此,在本申请中,为了避免各个应用的开发者执行上述繁琐的操作过程,可以在云端搭建一个云存储代理平台(CloudstorageAgent Platform,CAP),由智能电视设备或机顶盒设备的生产商从云存储服务器的提供商处为每一台设备获得一个云存储服务器的使用账号,同时,在CAP上存储了每一台设备的唯一标识与云存储服务器的使用账号之间的映射关系。
首先参考图3,图3示意性地示出了本申请的实施方式可以在其中实施的另一个示例性应用场景。客户端应用30向云文件***10发送对/Cloud文件夹11中的文件的写入请求,云文件***10对客户端应用30的写入权限进行控制,如果允许该写入请求,云文件***10将向CAP40发送获取账号请求,在该获取账号请求中包含有云文件***10所在电子设备的唯一标识,如,设备标识Device ID和产品型号Product Name,CAP40根据预先存储的映射关系查找到云存储服务器20的使用账号,并向云文件***10返回获取账号响应,在该获取账号响应中包含有云存储服务器20的使用账号。云文件***10根据云存储服务器20的使用账号对云存储服务器20执行该写入请求指示的写入操作。即,云文件***10向云存储服务器20发送上传文件请求,云存储服务器20向云文件***10返回指示文件上传成功或上传失败的上传文件响应。如果拒绝该写入请求,云文件***10向客户端应用30返回指示拒绝写入的写入响应。本领域技术人员可以理解,图3所示的示意图仅是本申请的实施方式可以在其中得以实现的一个示例。本申请实施方式的应用范围不受到该框架任何方面的限制。例如,客户端应用30除了可以向云文件***10发送对/Cloud文件夹11中的文件的写入请求之外,还可以向云文件***10发送对/Cloud文件夹11中的文件的读取请求。作为响应,云文件***10向云存储服务器20发送文件读取请求,云存储服务器20向云文件***10返回相应的文件。
另外,需要说明的是,为了保证云存储服务器20的使用账号在传输时的安全性,CAP可以先利用加密算法对云存储服务器20的使用账号进行加密处理,然后再将经过加密处理后的云存储服务器20的使用账号通过信令消息发送给云文件***10。
可以理解的,在整个过程中,各个应用对云存储服务器20的账号是一无所知的,这也保障了云存储服务器20的账号的安全性。
在现有技术中,如ext4这些常见的文件***都是在操作***的内核中实现的,即,文件***作为内核的一个模块。但是,这种实现方式对于***开发人员的要求很高,需要非常熟悉操作***的内核,从而增加了开发难度。为了降低开发难度,在本申请的一个优选实施方式中,云文件***10是在用户空间实现的,从而应用只需要使用通用的Linux文件操作接口,就可以访问云文件***。
如图4所示,用户空间的libfuse接口与内核空间的FUSE(Filesystemin Userspace)模块通过/dev/fuse设备实现通信,从而达到由用户空间的libfuse接口接管所有用户操作的目的。其中,当客户端应用通过某个命令发起对/Cloud文件夹11中的文件的操作时,该命令从用户空间传递到内核空间的VFS(Virtual File Systeml,虚拟文件***)模块,VFS模块将该命令进一步传递给FUSE模块,FUSE模块再将该命令从内核空间传递回用户空间的libfuse接口,libfuse接口将该命令传递给./yunfs/Cloud处理进程(即,用于实现各种文件操作的处理进程,也是申请中的云文件***),./yunfs/Cloud处理进程根据该命令执行相应的操作。执行完毕后,./yunfs/Cloud将执行结果返回给libfuse接口,libfuse接口将执行结果从用户空间传递给内核空间的FUSE模块,FUSE模块再将执行结果传递给VFS模块,VFS模块将执行结果传递给客户端应用。
为了使本申请的云文件***10可以跨局域网,在本申请的一个优选实施方式中,云文件***10基于http协议实现传输。
需要说明的是,本申请中的云文件***可以布置在智能电视、机顶盒、PC机、平板电脑或手机等终端设备中。其中,优选布置在智能电视和机顶盒中。
另外,在本申请中,当云文件***响应应用的操作请求时,是针对云存储服务器执行该操作请求指示的操作,即,是向应用提供了云存储接入的服务。此外,云文件***是在用户空间而不是在linux内核中实现的,并且,在传输层上,云文件***是基于http协议实现传输的,而不是基于自由的协议实现传输的。
由上述实施例可以看出,与现有技术相比,本申请的优点在于:
由一个云文件***集中为所有的应用提供***级的云存储接入服务,并且,对于每一个应用来说,其只能对该云文件***中属于自己的文件进行操作,而不能对属于其它应用的文件进行操作。各个应用的开发商无需再各自去实现云存储服务,从而节约了应用开发商的开发难度和开发成本。
装置实施例
与上述一种通过云文件***实现云存储接入的方法相对应,本申请实施例还提供了一种通过云文件***实现云存储的装置。请参阅图5,示意性地示出了根据本申请的一个实施方式的通过云文件***实现云存储接入的装置的结构框图,该装置包括:进程名获取单元501、判断单元502、操作执行单元503和操作拒绝单元504。下面结合该装置的工作原理进一步介绍其内部结构以及连接关系。
进程名获取单元501,用于响应于应用对云文件***中的文件的操作请求,获取所述应用的进程名;
判断单元502,用于判断所述操作请求针对的文件所在的路径的名称中是否包含所述应用的进程名;
操作执行单元503,用于如果是,允许所述操作请求,对云存储服务器执行所述操作请求指示的操作;
操作拒绝单元504,用于如果否,拒绝所述操作请求。
在本申请的一个优选实施方式中,如图6所示,当所述操作请求为写入请求时,操作执行单元503包括:
第一存储子单元5031,用于将所述写入请求针对的文件保存在本地的存储空间中;
响应子单元5032,用于向所述应用返回写入响应,并将所述写入请求针对的文件从本地的存储空间传输给所述云存储服务器。
在本申请的另一个优选实施方式中,如图7所示,操作执行单元503还包括:
删除子单元5033,用于在响应子单元5032将所述写入请求针对的文件从本地的存储空间传输给所述云存储服务器之后,将所述写入请求针对的文件从本地的存储空间中删除。
在本申请的另一个优选实施方式中,操作执行单元503还包括:
第二存储子单元,用于将所述写入操作针对的文件的文件信息存储在本地的数据库中。
在本申请的另一个优选实施方式中,所述装置还包括:
数据同步单元,用于响应于对云文件***的启动操作,将所述云存储服务器中的文件信息同步到本地的数据库中。
在本申请的一个优选实施方式中,所述装置还包括:
目录读取单元,用于响应于应用对所述文件***中的文件目录的读取请求,从所述本地的数据库读取文件信息,并将读取的文件信息返回给所述应用。
在本申请的一个优选实施方式中,如图8所示,所述装置还包括:
账号获取单元505,用于在操作执行单元503对云存储服务器执行所述操作请求指示的操作之前,根据所述云文件***所在的电子设备的唯一标识,从云存储代理平台获取预先分配给所述云文件***所在的电子设备的云存储服务器的使用账号,其中,所述云存储代理平台预先存储有电子设备的唯一标识与云存储服务的使用账号之间的映射关系;
则操作执行单元503用于,根据所述云存储服务器的使用账号对相应的云存储服务器执行所述操作请求指示的操作。
在本申请的另一个优选实施方式中,所述云存储服务器的使用账号是经过所述云存储代理平台加密处理的。
在本申请的另一个优选实施方式中,所述云文件***是在用户空间实现的。
在申请的另一个优选实施方式中,可以通过如下方式在用户空间实现云文件***:在所述用户空间设置有libfuse接口,所述libfuse接口与内核空间的FUSE模块通信;当内核空间中的VFS模块响应于应用的文件操作命令,并将所述文件操作命令传递给FUSE模块时,所述FUSE模块将所述文件操作命令传递给所述libfuse接口,所述libfuse接口将所述文件操作命令传递给所述云文件***。
在本申请的另一个优选实施方式中,所述云文件***基于http协议实现传输。
由上述实施例可以看出,与现有技术相比,本申请的优点在于:
由一个云文件***集中为所有应用提供***级的云存储服务,并且,对于每一个应用来说,其只能对该云文件***中属于自己的文件进行操作,而不能对属于其它应用的文件进行操作。各个应用的开发商无需再各自去实现云存储服务,从而节约了应用开发商的开发难度和开发成本。
需要说明的是,本申请的云文件***不仅适用于智能电视设备或机顶盒设备中,同样还适用于使用Linux内核的其它电子设备,包括移动设备和PC机等。
所述领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述到的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,可以采用软件功能单元的形式实现。
需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上对本申请所提供的一种实现云存储接入的方法和装置进行了详细介绍,本文中应用了具体实施例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。