共享文件的处理方法及云存储服务器的制造方法

文档序号:8005741阅读:229来源:国知局
共享文件的处理方法及云存储服务器的制造方法
【专利摘要】本发明提供一种共享文件的处理方法及云存储服务器。方法包括:云存储服务器接收第二客户端发送的更新请求消息,根据其中第一文件的标识确定第一文件位于第一客户端的存储区内,并从中获取第一文件的当前版本信息;如果确定出第一文件在第二客户端上的版本比第一客户端的存储区内的版本低,生成第一下载地址并发送给第二客户端,以供第二客户端下载当前版本的第一文件。本发明技术方案实现共享文件的同步更新。
【专利说明】共享文件的处理方法及云存储服务器

【技术领域】
[0001]本发明涉及云存储技术,尤其涉及一种共享文件的处理方法及云存储服务器。

【背景技术】
[0002]目前,云存储技术主要停留在用户对自己存储空间的管理,用户可以实现在不同设备上同云存储服务器进行同步。现在用户在云存储服务器上的文件也可以进行共享,共享的方式是用户确定共享的文件,然后云存储服务器给该用户一个该文件的“外链”,该用户可以把该“外链”提供给其他用户,其他用户通过该“外链”从上述用户的云存储空间上下载该文件到本地,实现共享。
[0003]但是,当被共享的文件在云存储服务器发生改变时,该文件对应的“外链”也会发生变化,这样其他用户就无法通过原有的“外链”从云存储服务器下载发生改变的文件,因此其他用户下载到本地的文件就不能和源文件保持同步更新。


【发明内容】

[0004]本发明提供一种共享文件的处理方法及云存储服务器,用以实现共享文件的同步更新。
[0005]第一方面提供一种共享文件的处理方法,包括:
[0006]云存储服务器接收第二客户端发送的更新请求消息,所述更新请求消息包括请求更新的第一文件的标识和所述第一文件的本地版本信息,所述第一文件是所述第二客户端从第一客户端的存储区内下载的;
[0007]所述云存储服务器根据所述第一文件的标识,确定所述第一文件位于所述第一客户端的存储区内,并从所述第一客户端的存储区内获取所述第一文件的当前版本信息;
[0008]如果所述云存储服务器根据所述第一文件的本地版本信息和所述第一文件的当前版本信息确定所述第一文件在所述第二客户端上的版本比所述第一文件在所述第一客户端的存储区内的版本低,生成所述第一文件的第一下载地址,并将所述第一下载地址发送给所述第二客户端,以供所述第二客户端根据所述第一下载地址从所述第一客户端的存储区内下载当前版本的所述第一文件。
[0009]第二方面提供一种云存储服务器,包括:
[0010]第一接收模块,用于接收第二客户端发送的更新请求消息,所述更新请求消息包括请求更新的第一文件的标识和所述第一文件的本地版本信息,所述第一文件是所述第二客户端从第一客户端的存储区内下载的;
[0011]第一获取模块,用于根据所述第一接收模块接收的所述第一文件的标识,确定所述第一文件位于所述第一客户端的存储区内,并从所述第一客户端的存储区内获取所述第一文件的当前版本信息;
[0012]第一生成模块,用于如果根据所述第一接收模块接收的所述第一文件的本地版本信息和所述第一获取模块获取的所述第一文件的当前版本信息确定所述第一文件在所述第二客户端上的版本比所述第一文件在所述第一客户端的存储区内的版本低,生成所述第一文件的第一下载地址;
[0013]第一发送模块,用于将所述第一生成模块生成的所述第一下载地址发送给所述第二客户端,以供所述第二客户端根据所述第一下载地址从所述第一客户端的存储区内下载当前版本的所述第一文件。
[0014]本发明提供的共享文件的处理方法及云存储服务器,第二客户端通过更新请求消息将请求更新的第一文件的标识和第一文件的本地版本信息发送给云存储服务器,云存储服务器基于第一文件的标识确定第一文件位于第一客户端的存储区内,进而从第一客户端的存储区内获取第一文件的当前版本信息,通过将第一文件的本地版本信息和当前版本信息进行比较,确定该第一文件在第二客户端上的版本是否低于在第一客户端的存储区内的版本,如果是,则生成更新第一文件使用的下载地址,并提供给第二客户端,使得第二客户端可以基于该下载地址下载当前版本的文件,实现共享文件的更新。

【专利附图】

【附图说明】
[0015]图1A为本发明实施例提供的一种共享文件的处理方法的流程图;
[0016]图1B为本发明实施例提供的另一种共享文件的处理方法的流程图;
[0017]图2为本发明实施例提供的又一种共享文件的处理方法的流程图;
[0018]图3为本发明实施例提供的又一种共享文件的处理方法的流程图;
[0019]图4为本发明实施例提供的又一种共享文件的处理方法的流程图;
[0020]图5为本发明实施例提供的又一种共享文件的处理方法的流程图;
[0021]图6为本发明实施例提供的又一种共享文件的处理方法的流程图;
[0022]图7为本发明实施例提供的一种云存储服务器的结构示意图;
[0023]图8为本发明实施例提供的另一种云存储服务器的结构示意图;
[0024]图9为本发明实施例提供的又一种云存储服务器的结构示意图。

【具体实施方式】
[0025]图1A为本发明实施例提供的一种共享文件的处理方法的流程图。如图1A所示,所述方法包括:
[0026]la、云存储服务器接收第二客户端发送的更新请求消息,所述更新请求消息包括请求更新的第一文件的标识和所述第一文件的本地版本信息,所述第一文件是所述第二客户端从第一客户端的存储区内下载的。
[0027]lb、云存储服务器根据所述第一文件的标识,确定所述第一文件位于所述第一客户端的存储区内,并从所述第一客户端的存储区内获取所述第一文件的当前版本信息。
[0028]lc、如果所述云存储服务器根据所述第一文件的本地版本信息和所述第一文件的当前版本信息确定所述第一文件在所述第二客户端上的版本比所述第一文件在所述第一客户端的存储区内的版本低,生成所述第一文件的第一下载地址,并将所述第一下载地址发送给所述第二客户端,以供所述第二客户端根据所述第一下载地址从所述第一客户端的存储区内下载当前版本的所述第一文件。
[0029]在本实施例中,云存储系统中所有的文件基于用户进行分块存储,每块存储空间即为一个客户端的存储区。第一客户端预先将自己的文件上传至第一客户端的存储区内。
[0030]本实施例提供的方法主要是针对共享文件的处理,本实施例将第二客户端共享第一客户端的文件为例进行说明,并且为便于描述,将所共享的文件称为第一文件,所述第一文件可以是第一客户端允许共享的任何文件。
[0031]在本实施例中,第一客户端预先将第一文件上传至第一客户端的存储区内,并允许第一文件被其他客户端共享。第二客户端预先从第一客户端的存储区内下载第一文件到本地,实现对第一文件的共享。关于第一客户端上传第一文件和第二客户端下载第一文件的过程,在后续部分进行描述。之后,第二客户端可能需要对第一文件进行同步,于是向云存储服务器发送更新请求消息,并在所述更新请求消息中携带请求更新的第一文件的标识和第一文件的本地版本信息。其中,第一文件的标识用于标识第一文件,而第一文件的本地版本信息用于标识第二客户端下载到的第一文件的版本。相应的,云存储服务器接收第二客户端发送的更新请求消息,从中获取第一文件的标识和第一文件的本地版本信息。
[0032]之后,云存储服务器根据第一文件的标识,确定第一文件的存储位置。当根据第一文件的标识确定第一文件位于第一客户端的存储区内时,从第一客户端的存储区内获取第一文件的当前版本信息。在此说明,第一客户端在上传第一文件至第一客户端的存储区后,可以随时对第一文件进行更新。其中,第一客户端对第一文件进行更新的过程与现有技术相类似,主要是上传新的第一文件并用新的第一文件覆盖原来的第一文件,同时修改第一文件对应的版本信息。
[0033]当云存储服务器获取到第一文件的当前版本信息后,可以将第二客户端提供的第一文件的本地版本信息和所获取的第一文件的当前版本信息进行比较,确定第一文件在第一客户端上的版本是否低于第一文件在第一客户端的存储区内的版本,如果确定结果为是,则云存储服务器生成第一文件的第一下载地址,并将第一下载地址提供给第二客户端;第二客户端根据第一下载地址从第一客户端的存储区内获取当前版本的第一文件,实现对第一文件的更新。
[0034]在此说明,为便于区分,将对第一文件进行更新使用的下载地址称为第一下载地址,并将后续出现的对第一文件进行初始下载使用的下载地址称为第二下载地址。其中,由于第一文件发生了变化,所以第一下载地址和第二下载地址不同。
[0035]在本实施例中,第二客户端通过更新请求消息将请求更新的第一文件的标识和第一文件的本地版本信息发送给云存储服务器,云存储服务器基于第一文件的标识确定第一文件位于第一客户端的存储区内,进而从第一客户端的存储区内获取第一文件的当前版本信息,通过将第一文件的本地版本信息和当前版本信息进行比较,确定该第一文件在第二客户端上的版本是否低于在第一客户端的存储区内的版本,如果是,则生成更新第一文件使用的下载地址,并提供给第二客户端,使得第二客户端可以基于该下载地址下载当前版本的文件,实现共享文件的更新。
[0036]图1B为本发明实施例提供的另一种共享文件的处理方法的流程图。如图1B所示,所述方法包括:
[0037]110、云存储服务器接收第二客户端发送的更新请求消息,所述更新请求消息包括请求更新的第一文件的标识和所述第一文件的本地版本信息,所述第一文件是所述第二客户端从第一客户端的存储区内下载的。
[0038]112、云存储服务器根据所述第一文件的标识从所述第二客户端的存储区中确定所述第一文件对应的虚拟文件,所述虚拟文件是所述云存储服务器在所述第二客户端下载所述第一文件的过程中,根据共享目录中所述第一文件的索引生成的,所述第一文件的索引指向所述第一文件,所述虚拟文件和所述第一文件的索引分别包括所述第一文件的标识,所述共享目录中存储有允许共享的文件的索引。
[0039]114、云存储服务器根据所述虚拟文件从所述共享目录中获取所述第一文件的索弓丨,根据所述第一文件的索引确定所述第一文件位于所述第一客户端的存储区内,并从所述第一客户端的存储区内获取所述第一文件的当前版本信息。
[0040]116、如果所述云存储服务器根据所述第一文件的本地版本信息和所述第一文件的当前版本信息确定所述第一文件在所述第二客户端上的版本比所述第一文件在所述第一客户端的存储区内的版本低,生成所述第一文件的第一下载地址,并将所述第一下载地址发送给所述第二客户端,以供所述第二客户端根据所述第一下载地址从所述第一客户端的存储区内下载当前版本的所述第一文件。
[0041]在此说明,本实施例中步骤112和步骤114可以作为图1A所示实施例中步骤Ib的一种【具体实施方式】,但不限于此。
[0042]在本实施例中,云存储系统中所有的文件基于用户进行分块存储,每块存储空间即为一个客户端的存储区。第一客户端预先将自己的文件上传至第一客户端的存储区内。云存储服务器设置共享目录,用于存储整个云存储系统中允许共享的文件的索引。每个文件的索引指向该文件,并且每个文件的索引包括该文件的标识(ID)。例如,文件的索引除了包括文件的标识之外,还可以包括文件的名称、文件的存储地址、文件的大小等信息。
[0043]本实施例提供的方法主要是针对共享文件的处理,本实施例将第二客户端共享第一客户端的文件为例进行说明,并且为便于描述,将所共享的文件称为第一文件,所述第一文件可以是第一客户端允许共享的任何文件。
[0044]在本实施例中,第一客户端预先将第一文件上传至第一客户端的存储区内,并允许第一文件被其他客户端共享。第二客户端预先从第一客户端的存储区内下载第一文件到本地,实现对第一文件的共享。关于第一客户端上传第一文件和第二客户端下载第一文件的过程,在后续部分进行描述。之后,第二客户端可能需要对第一文件进行同步,于是向云存储服务器发送更新请求消息,并在所述更新请求消息中携带请求更新的第一文件的标识和第一文件的本地版本信息。其中,第一文件的标识用于标识第一文件,而第一文件的本地版本信息用于标识第二客户端下载到的第一文件的版本。相应的,云存储服务器接收第二客户端发送的更新请求消息,从中获取第一文件的标识和第一文件的本地版本信息。
[0045]之后,云存储服务器根据第一文件的标识,从第二客户端的存储区中确定第一文件对应的虚拟文件。其中,云存储服务器会在第二客户端下载第一文件的过程中,根据共享目录中第一文件的索引生成第一文件对应的虚拟文件,该虚拟文件和第一文件的索引分别包括第一文件的标识。其中,第一文件对应的虚拟文件的主要作用是供云存储服务器从共享目录中找到第一文件的索引。
[0046]当确定第一文件对应的虚拟文件之后,可以根据该虚拟文件从共享目录中获取第一文件的索引,在获取第一文件的索引后,由于第一文件的索引指向第一文件,于是根据第一文件的索引就可以确定第一文件的存储位置。当根据第一文件的索引确定第一文件位于第一客户端的存储区内时,从第一客户端的存储区内获取第一文件的当前版本信息。在此说明,第一客户端在上传第一文件至第一客户端的存储区后,可以随时对第一文件进行更新。其中,第一客户端对第一文件进行更新的过程与现有技术相类似,主要是上传新的第一文件并用新的第一文件覆盖原来的第一文件,同时修改第一文件对应的版本信息。
[0047]当云存储服务器获取到第一文件的当前版本信息后,可以将第二客户端提供的第一文件的本地版本信息和所获取的第一文件的当前版本信息进行比较,确定第一文件在第一客户端上的版本是否低于第一文件在第一客户端的存储区内的版本,如果确定结果为是,则云存储服务器生成第一文件的第一下载地址,并将第一下载地址提供给第二客户端;第二客户端根据第一下载地址从第一客户端的存储区内获取当前版本的第一文件,实现对第一文件的更新。
[0048]在此说明,为便于区分,将对第一文件进行更新使用的下载地址称为第一下载地址,并将后续出现的对第一文件进行初始下载使用的下载地址称为第二下载地址。其中,由于第一文件发生了变化,所以第一下载地址和第二下载地址不同。
[0049]在本实施例中,第二客户端通过更新请求消息将请求更新的第一文件的标识和第一文件的本地版本信息发送给云存储服务器,云存储服务器基于第一文件的标识从该第二客户端的存储区中确定第一文件对应的虚拟文件,根据该虚拟文件从存储允许共享的文件的索引的共享目录中找到第一文件的索引,进而基于该索引确定第一文件位于第一客户端的存储区内,进而从第一客户端的存储区内获取第一文件的当前版本信息,通过将第一文件的本地版本信息和当前版本信息进行比较,确定该第一文件在第二客户端上的版本是否低于在第一客户端的存储区内的版本,如果是,则生成更新第一文件使用的下载地址,并提供给第二客户端,使得第二客户端可以基于该下载地址下载当前版本的文件,实现共享文件的更新。
[0050]进一步,本实施例提供的方法,第二客户端将请求更新的第一文件的本地版本信息提供云存储服务器,而云存储服务器通过比较第一文件的本地版本信息和当前版本信息,只有在两个版本信息不一致的情况下才会生成更新第一文件使用的下载地址并提供给第二客户端,第二客户端直接根据该下载地址下载最新版本的第一文件,第二客户端不需要每次都将第一文件重新下载到本地再与之前下载的第一文件进行比较,可以减轻第二客户端的处理负担,有利于提高对第一文件的更新效率。
[0051]第二客户端在请求更新第一文件之前,需要从第一客户端的存储区内下载第一文件。第二客户端从第一客户端的存储区内下载第一文件的流程如图2中的步骤104-108所示。如图2所示,所述方法在步骤110之前,包括:
[0052]104、云存储服务器接收第二客户端发送的下载请求消息,所述下载请求消息包括请求下载的第一文件的标识。
[0053]106、云存储服务器根据所述第一文件的标识,从共享目录中获取所述第一文件的索引,根据所述第一文件的索引确定所述第一文件位于第一客户端的存储区内,并生成所述第一文件的第二下载地址。
[0054]108、云存储服务器将所述第一文件的第二下载地址发送给所述第二客户端,以供所述第二客户端根据所述第二下载地址从所述第一客户端的存储区内下载所述第一文件。
[0055]在本实施例中,第二客户端在请求更新第一文件之前,向云存储服务器发送下载请求消息,并在所述下载请求消息中携带请求下载的第一文件的标识。而云存储服务器接收第二客户端发送的下载请求消息,从中获取第一文件的标识,之后根据第一文件的标识,从共享目录中获取第一文件的索引,接下来根据第一文件的索引确定第一文件的存储位置。当根据第一文件的索引确定第一文件位于第一客户端的存储区内时,生成第一文件的第二下载地址,这里的第二下载地址是指初始下载第一文件时使用的下载地址。
[0056]接下来,云存储服务器将该第二下载地址提供给第二客户端,第二客户端就可以根据该第二下载地址从第一客户端的存储区内下载第一文件到本地。
[0057]进一步,第二客户端从第一客户端的存储区内下载第一文件之前,第一客户端需要将第一文件上传至第一客户端的存储区并设置第一文件为共享文件。例如,第一客户端上传第一文件至第一客户端的存储区的一种实施过程如图3中的步骤100-103所示。如图3所示,所述方法在步骤104之前,还包括:
[0058]100、云存储服务器接收第一客户端发送的上传请求消息,所述上传请求消息包括所述第一文件。
[0059]101、云存储服务器将所述第一文件存储到所述第一客户端的存储区内。
[0060]102、云存储服务器接收所述第一客户端发送的共享请求消息,所述共享请求消息包括所述第一文件的标识。
[0061]103、云存储服务器根据所述第一文件的标识,为所述第一客户端的存储区内的所述第一文件设置共享标记,并在共享目录中增加所述第一文件的索引。
[0062]在本实施例中,第二客户端请求下载第一文件之前,第一客户端向云存储服务器发送上传请求消息,并将第一文件携带在上传请求消息中发送给云存储服务器。云存储服务器接收第一客户端发送的上传请求消息,从中获取第一文件,并将第一文件存储到第一客户端的存储区内。在此说明,第一客户端上传任何类型的文件均可以采用该流程。
[0063]第一客户端将第一文件上传至第一客户端的存储区后,如果第一客户端确定第一文件为共享文件,则向云存储服务器发送共享请求消息,并在共享请求消息中携带第一文件的标识,从而使云存储服务器获知第一文件需要设置为共享文件。云存储服务器接收第一客户端发送的共享请求消息,从中获取第一文件的标识,根据第一文件的标识确定第一文件需要共享,于是为第一客户端的存储区内的第一文件设置共享标记,用于标识第一文件为共享文件,从而与非共享文件进行区分。同时,云存储服务器在共享目录中添加第一文件的索引,为后续其他客户端,例如第二客户端下载第一文件提供条件。
[0064]图4为本发明实施例提供的又一种共享文件的处理方法的流程图。如图4所示,所述方法包括:
[0065]401、云存储服务器接收第一客户端发送的上传请求消息,所述上传请求消息包括第一文件。
[0066]402、云存储服务器将所述第一文件存储到所述第一客户端的存储区内。
[0067]403、云存储服务器接收所述第一客户端发送的共享请求消息,所述共享请求消息包括所述第一文件的标识。
[0068]404、云存储服务器根据所述第一文件的标识,为所述第一客户端的存储区内的所述第一文件设置共享标记,并在共享目录中增加所述第一文件的索引。
[0069]上述步骤401-404可参见步骤100-103,在此不再赘述。
[0070]405、云存储服务器接收第二客户端发送的下载请求消息,所述下载请求消息包括请求下载的所述第一文件的标识。
[0071]406、云存储服务器根据所述第一文件的标识,从所述共享目录中获取所述第一文件的索引。
[0072]407、云存储服务器根据所述第一文件的索引生成所述第一文件对应的虚拟文件,将所述虚拟文件存储到第二客户端的存储区中。
[0073]408、云存储服务器根据所述第一文件的索引确定所述第一文件位于所述第一客户端的存储区内,将所述第一文件对应的引用计数加1,并生成所述第一文件的第二下载地址。
[0074]409、云存储服务器将所述第一文件的第二下载地址发送给所述第二客户端,以供所述第二客户端根据所述第二下载地址从所述第一客户端的存储区内下载所述第一文件。
[0075]在本实施例中,云存储服务器根据第一文件的标识,从共享目录中获取所述第一文件的索引之后,还会根据所述第一文件的索引生成所述第一文件对应的虚拟文件,将所述虚拟文件存储到第二客户端的存储区中,为第二客户端对第一文件进行更新打下基础。另外,云存储服务器根据第一文件的索引确定所述第一文件位于第一客户端的存储区内之后,还将第一文件对应的引用计数加1,对共享第一文件的客户端进行计数,为后续删除第一文件的操作打基础。
[0076]关于步骤405-步骤409的其它描述可参见步骤104-108,在此不再赘述。
[0077]410、云存储服务器接收第二客户端发送的更新请求消息,所述更新请求消息包括请求更新的第一文件的标识和所述第一文件的本地版本信息。
[0078]411、云存储服务器根据所述第一文件的标识从所述第二客户端的存储区中确定所述第一文件对应的虚拟文件。
[0079]412、云存储服务器根据所述虚拟文件从所述共享目录中获取所述第一文件的索弓丨,根据所述第一文件的索引确定所述第一文件位于所述第一客户端的存储区内,并从所述第一客户端的存储区内获取所述第一文件的当前版本信息。
[0080]413、如果所述云存储服务器根据所述第一文件的本地版本信息和所述第一文件的当前版本信息确定所述第一文件在所述第二客户端上的版本比所述第一文件在所述第一客户端的存储区内的版本低,生成所述第一文件的第一下载地址,并将所述第一下载地址发送给所述第二客户端,以供所述第二客户端根据所述第一下载地址从所述第一客户端的存储区内下载当前版本的所述第一文件。
[0081]上述步骤410-413可参见步骤110-116的描述,在此不再赘述。
[0082]在本实施例中,云存储服务器在第一客户端上传第一文件的过程中在共享目录中添加第一文件的索引,在第二客户端下载第一文件的过程中,根据第一文件的索引生成第一文件对应的虚拟文件并存储到第二文件的存储区内,之后第二客户端通过更新请求消息将请求更新的第一文件的标识和第一文件的本地版本信息发送给云存储服务器,云存储服务器基于第一文件的标识从该第二客户端的存储区中确定第一文件对应的虚拟文件,根据该虚拟文件从存储允许共享的文件的索引的共享目录中找到第一文件的索引,进而基于该索引确定第一文件位于第一客户端的存储区内,进而从第一客户端的存储区内获取第一文件的当前版本信息,通过将第一文件的本地版本信息和当前版本信息进行比较,确定该第一文件在第二客户端上的版本是否低于在第一客户端的存储区内的版本,如果是,则生成更新第一文件使用的下载地址,并提供给第二客户端,使得第二客户端可以基于该下载地址下载当前版本的文件,实现共享文件的更新。
[0083]本发明实施例提供的共享文件的处理方法除了包括对第一文件的上传、下载和更新操作之外,还包括对第一文件的删除操作。其中,上传第一文件的第一客户端可以删除第一文件,共享第一文件的第二客户端也可以删除第一文件,但具体删除流程并不相同。第一客户端删除第一文件的流程如图5所示,该流程位于第一客户端上传第一文件的流程之后,和第二客户端下载和更新第一文件的流程没有先后顺序。第二客户端删除第一文件的流程如图6所示,该流程位于第二客户端下载第一文件的流程之后,但与第二客户端更新第一文件的流程没有先后顺序。
[0084]如图5所示,第一客户端删除第一文件的流程包括:
[0085]501、云存储服务器接收第一客户端发送的第一删除请求消息,所述第一删除请求消息包括所述第一文件的标识。
[0086]502、云存储服务器根据所述第一文件的标识,获取所述第一文件对应的引用计数,并判断所述引用计数是否为O。如果判断结果为是,即所述引用计数为0,执行步骤503 ;如果判断结果为否,即所述引用计数大于0,执行步骤504。
[0087]503、云存储服务器直接将所述第一文件从第一客户端的存储区内删除,并删除共享目录中所述第一文件的索引。
[0088]如果第一文件对应的引用计数为0,说明没有其他客户端共享该第一文件,于是可以直接将第一文件删除,并删除共享目录中第一文件的索引。
[0089]504、云存储服务器将所述第一文件从第一客户端的存储区移到公共文件存储区,并修改所述共享目录中所述第一文件的索引,以使修改后的索引指向所述公共文件存储区内的所述第一文件。
[0090]如果第一文件对应的引用计数大于0,说明还其他客户端共享该第一文件,则云存储服务器不能直接将第一文件删除,于是云存储服务器设置公共文件存储区,并将需要删除的第一文件从第一客户端的存储区移到公共文件存储区内,用于临时存储第一文件。同时,云存储服务器修改共享目录中第一文件的索引,使得修改后的索引仍然指向第一文件,此时具体指向公共文件存储区内的第一文件,以便于其他引用第一文件的客户端,例如第二客户端可以基于修改后的索引对第一文件进行删除操作。
[0091]如图6所示,第二客户端删除第一文件的流程包括:
[0092]601、云存储服务器接收第二客户端发送的第二删除请求消息,所述第二删除请求消息包括所述第一文件的标识。
[0093]602、云存储服务器根据所述第一文件的标识从第二客户端的存储区中确定所述第一文件对应的虚拟文件,并根据所述虚拟文件从共享目录中获取所述第一文件的索引,根据所述第一文件的索引确定所述第一文件的存储位置和所述第一文件对应的引用计数。
[0094]603、云存储服务器判断第一文件对应的引用计数是否为I ;如果判断结果为是,执行步骤604 ;如果判断结果为否,即第一文件对应的引用计数大于1,则执行步骤606。
[0095]604、云存储服务器判断根据所述第一文件的索引是否确定出第一文件位于公共文件存储区内,如果判断结果为是,执行步骤605 ;如果判断结果为否,即根据第一文件的索引确定出第一文件位于所述第一客户端的存储区内,则执行步骤606。
[0096]605、云存储服务器将所述虚拟文件从所述第二客户端的存储区中删除,将所述第一文件从所述公共文件存储区中删除,并将所述第一文件对应的引用计数置为O。
[0097]如果第一文件对应的引用计数为1,说明只有第二客户端共享第一文件,如果第二客户端删除第一文件,就没有任何一个客户端共享第一文件,于是云存储服务器需要将第一文件对应的引用计数置为O。另外,根据第一文件的索引确定出第一文件位于公共文件存储区内,说明第一客户端已经将第一文件删除,只是因为第一文件还被第二客户端共享,所以第一文件被临时存储在公共文件存储区内,当第二客户端也删除第一文件时,第一文件就没有存在的必要了,因此,云存储服务器可以直接将第一文件从公共文件存储区内删除,同时将第一文件对应的虚拟文件从第二客户端的存储区内删除。
[0098]606、云存储服务器将所述虚拟文件从所述第二客户端的存储区中删除,并将所述第一文件对应的引用计数减I。
[0099]如果第一文件对应的引用计数大于1,说明除了第二客户端共享第一文件之外,还有其他客户端也共享第一文件,那么此时虽然第二客户端删除第一文件,但是为了保证其他共享第一文件的客户端仍能够正确共享第一文件,无论第一文件此时是位于公共文件存储区还是位于第一客户端的存储区内,云存储服务器仅将第一文件对应的虚拟文件从第二客户端的存储区中删除,并将第一文件对应的引用计数减1,并不删除第一文件。
[0100]或者,当根据第一文件的索引确定出第一文件位于第一客户端的存储区内时,说明第一客户端并未删除第一文件,那么无论此时第一文件对应的引用计数是I还是大于1,云存储服务器仅将第一文件对应的虚拟文件从第二客户端的存储区中删除,并将第一文件对应的引用计数减1,并不删除第一文件。
[0101]本发明上述各实施例不仅给出了共享文件的更新流程,而且给出了共享文件的上传、下载、删除等流程,提供了关于共享文件的完整处理流程,有利于云存储系统中文件的共享。
[0102]图7为本发明实施例提供的一种云存储服务器的结构示意图。如图7所示,所述云存储服务器包括:第一接收模块71、第一获取模块73、第一生成模块74和第一发送模块75。
[0103]第一接收模块71,用于接收第二客户端发送的更新请求消息,所述更新请求消息包括请求更新的第一文件的标识和所述第一文件的本地版本信息,所述第一文件是所述第二客户端从第一客户端的存储区内下载的。
[0104]第一获取模块73,第一接收模块71连接,用于根据第一接收模块71接收的所述第一文件的标识,确定所述第一文件位于所述第一客户端的存储区内,并从所述第一客户端的存储区内获取所述第一文件的当前版本信息。
[0105]第一生成模块74,与第一接收模块71和第一获取模块73连接,用于如果根据第一接收模块71接收的所述第一文件的本地版本信息和第一获取模块73获取的所述第一文件的当前版本信息确定所述第一文件在所述第二客户端上的版本比所述第一文件在所述第一客户端的存储区内的版本低,生成所述第一文件的第一下载地址。
[0106]第一发送模块75,与第一生成模块74连接,用于将第一生成模块74生成的所述第一下载地址发送给所述第二客户端,以供所述第二客户端根据所述第一下载地址从所述第一客户端的存储区内下载当前版本的所述第一文件。
[0107]可选的,第一获取模块73用于根据所述第一接收模块接收的所述第一文件的标识,确定所述第一文件位于所述第一客户端的存储区内包括:第一获取模块73具体用于根据第一接收模块71接收的所述第一文件的标识从所述第二客户端的存储区中确定所述第一文件对应的虚拟文件,根据所述虚拟文件从共享目录中获取所述第一文件的索引,根据所述第一文件的索引确定所述第一文件位于所述第一客户端的存储区内。其中,所述虚拟文件是所述云存储服务器在所述第二客户端下载所述第一文件的过程中,根据所述共享目录中所述第一文件的索引生成的,所述第一文件的索引指向所述第一文件,所述虚拟文件和所述第一文件的索引分别包括所述第一文件的标识,所述共享目录中存储有允许共享的文件的索引。
[0108]进一步,如图8所示,所述云存储服务器还可以包括:第二接收模块81、第二获取模块82、第二生成模块83和第二发送模块84。
[0109]第二接收模块81,用于在第一接收模块71接收所述更新请求消息之前,接收所述第二客户端发送的下载请求消息,所述下载请求消息包括请求下载的所述第一文件的标识。可选的,第二接收模块81与第一接收模块71连接。
[0110]第二获取模块82,与第二接收模块81连接,用于根据第二接收模块81接收的所述第一文件的标识,从所述共享目录中获取所述第一文件的索引。
[0111]第二生成模块83,与第二获取模块82连接,用于根据第二获取模块82获取的所述第一文件的索引确定所述第一文件位于所述第一客户端的存储区内,并生成所述第一文件的第二下载地址。
[0112]第二发送模块84,与第二生成模块83连接,用于将第二生成模块83生成的所述第一文件的第二下载地址发送给所述第二客户端,以供所述第二客户端根据所述第二下载地址从所述第一客户端的存储区内下载所述第一文件。
[0113]更进一步,如图8所示,所述云存储服务器还包括:第三生成模块85、第一存储模块86和计数模块87。
[0114]第三生成模块85,与第二获取模块82连接,用于在第二获取模块82获取所述第一文件的索引之后,根据第二获取模块82获取的所述第一文件的索引生成所述第一文件对应的所述虚拟文件。
[0115]第一存储模块86,与第三生成模块85连接,用于将第三生成模块85生成的所述虚拟文件存储到所述第二客户端的存储区中。
[0116]计数模块87,与第二生成模块83连接,用于在第二生成模块83确定所述第一文件位于所述第一客户端的存储区内之后,将所述第一文件对应的引用计数加I。
[0117]更进一步,如图9所示,所述云存储服务器还包括:第三接收模块91、第二存储模块92、第四接收模块93和设置添加模块94。
[0118]第三接收模块91,用于在第二接收模块81接收所述下载请求消息之前,接收所述第一客户端发送的上传请求消息,所述上传请求消息包括所述第一文件。可选的,第三接收模块91与第二接收模块81连接。
[0119]第二存储模块92,与第三接收模块91连接,用于将第三接收模块91接收的所述第一文件存储到所述第一客户端的存储区内。
[0120]第四接收模块93,与第二存储模块92连接,用于在第二存储模块92将第一文件存储到所述第一客户端的存储区内之后,接收所述第一客户端发送的共享请求消息,所述共享请求消息包括所述第一文件的标识。
[0121]设置添加模块94,用于根据第四接收模块93接收的所述第一文件的标识,为所述第一客户端的存储区内的所述第一文件设置共享标记,并在所述共享目录中增加所述第一文件的索引。
[0122]更进一步,如图9所示,所述云存储服务器还包括:第五接收模块95、第三获取模块96和第一删除处理模块97。
[0123]第五接收模块95,用于接收所述第一客户端发送的第一删除请求消息,所述第一删除请求消息包括所述第一文件的标识。
[0124]第三获取模块96,与第五接收模块95连接,用于根据第五接收模块95接收的所述第一文件的标识,获取所述第一文件对应的引用计数。可选的,第三获取模块96与计数模块87连接。
[0125]第一删除处理模块97,与第三获取模块96连接,用于如果第三获取模块96获取的所述引用计数为0,直接将所述第一文件从所述第一客户端的存储区内删除,并删除所述共享目录中所述第一文件的索引;如果第三获取模块96获取的所述引用计数大于0,将所述第一文件从所述第一客户端的存储区移到公共文件存储区,并修改所述共享目录中所述第一文件的索引,以使修改后的索引指向所述公共文件存储区内的所述第一文件。
[0126]更进一步,如图9所示,所述云存储服务器还包括:第六接收模块98、确定模块99和第二删除处理模块90。
[0127]第六接收模块98,用于接收所述第二客户端发送的第二删除请求消息,所述第二删除请求消息包括所述第一文件的标识。
[0128]确定模块99,与第六接收模块98连接,用于根据第六接收模块98接收的所述第一文件的标识从所述第二客户端的存储区中确定所述第一文件对应的所述虚拟文件,并根据所述虚拟文件从所述共享目录中获取所述第一文件的索引,根据所述第一文件的索引确定所述第一文件的存储位置和所述第一文件对应的引用计数。可选的,确定模块99与计数模块87连接。
[0129]第二删除处理模块90,与确定模块99连接,用于如果确定模块99确定的所述第一文件对应的引用计数为1,并且确定模块99根据所述第一文件的索引确定所述第一文件位于公共文件存储区内,将所述虚拟文件从所述第二客户端的存储区中删除,将所述第一文件从所述公共文件存储区中删除,并将所述第一文件对应的引用计数置为O ;如果确定模块99确定的所述第一文件对应的引用计数大于1,或者确定模块99根据所述第一文件的索引确定所述第一文件位于所述第一客户端的存储区内,将所述虚拟文件从所述第二客户端的存储区中删除,并将所述第一文件对应的引用计数减I。
[0130]本实施例提供的云存储服务器的各功能模块可用于执行图1A-图6所示方法实施例的流程,其具体工作原理不再赘述,详见方法实施例的流程。
[0131]本实施例提供的云存储服务器,接收第二客户端发送的携带有请求更新的第一文件的标识和第一文件的本地版本信息的更新请求消息,然后基于第一文件的标识确定第一文件位于第一客户端的存储区内,进而从第一客户端的存储区内获取第一文件的当前版本信息,通过将第一文件的本地版本信息和当前版本信息进行比较,确定该第一文件在第二客户端上的版本是否低于在第一客户端的存储区内的版本,如果是,则生成更新第一文件使用的下载地址,并提供给第二客户端,使得第二客户端可以基于该下载地址下载当前版本的文件,实现共享文件的更新。
[0132]本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0133]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种共享文件的处理方法,其特征在于,包括: 云存储服务器接收第二客户端发送的更新请求消息,所述更新请求消息包括请求更新的第一文件的标识和所述第一文件的本地版本信息,所述第一文件是所述第二客户端从第一客户端的存储区内下载的; 所述云存储服务器根据所述第一文件的标识,确定所述第一文件位于所述第一客户端的存储区内,并从所述第一客户端的存储区内获取所述第一文件的当前版本信息; 如果所述云存储服务器根据所述第一文件的本地版本信息和所述第一文件的当前版本信息确定所述第一文件在所述第二客户端上的版本比所述第一文件在所述第一客户端的存储区内的版本低,生成所述第一文件的第一下载地址,并将所述第一下载地址发送给所述第二客户端,以供所述第二客户端根据所述第一下载地址从所述第一客户端的存储区内下载当前版本的所述第一文件。
2.根据权利要求1所述的方法,其特征在于,所述云存储服务器根据所述第一文件的标识,确定所述第一文件位于所述第一客户端的存储区内,包括: 所述云存储服务器根据所述第一文件的标识从所述第二客户端的存储区中确定所述第一文件对应的虚拟文件,所述虚拟文件是所述云存储服务器在所述第二客户端下载所述第一文件的过程中,根据共享目录中所述第一文件的索引生成的,所述第一文件的索引指向所述第一文件,所述虚拟文件和所述第一文件的索引分别包括所述第一文件的标识,所述共享目录中存储有允许共享的文件的索引; 所述云存储服务器根据所述虚拟文件从所述共享目录中获取所述第一文件的索引,根据所述第一文件的索引确定所述第一文件位于所述第一客户端的存储区内。
3.根据权利要求2所述的方法,其特征在于,所述云存储服务器接收第二客户端发送的更新请求消息之前,还包括: 所述云存储服务器接收所述第二客户端发送的下载请求消息,所述下载请求消息包括请求下载的所述第一文件的标识; 所述云存储服务器根据所述第一文件的标识,从所述共享目录中获取所述第一文件的索引,根据所述第一文件的索引确定所述第一文件位于所述第一客户端的存储区内,并生成所述第一文件的第二下载地址; 所述云存储服务器将所述第一文件的第二下载地址发送给所述第二客户端,以供所述第二客户端根据所述第二下载地址从所述第一客户端的存储区内下载所述第一文件。
4.根据权利要求3所述的方法,其特征在于,所述云存储服务器根据所述第一文件的标识,从所述共享目录中获取所述第一文件的索引之后,还包括: 所述云存储服务器根据所述第一文件的索引生成所述第一文件对应的所述虚拟文件,将所述虚拟文件存储到所述第二客户端的存储区中; 所述云存储服务器根据所述第一文件的索引确定所述第一文件位于所述第一客户端的存储区内之后,还包括: 所述云存储服务器将所述第一文件对应的引用计数加1。
5.根据权利要求3或4所述的方法,其特征在于,所述云存储服务器接收所述第二客户端发送的下载请求消息之前,还包括: 所述云存储服务器接收所述第一客户端发送的上传请求消息,所述上传请求消息包括所述第一文件; 所述云存储服务器将所述第一文件存储到所述第一客户端的存储区内; 所述云存储服务器接收所述第一客户端发送的共享请求消息,所述共享请求消息包括所述第一文件的标识; 所述云存储服务器根据所述第一文件的标识,为所述第一客户端的存储区内的所述第一文件设置共享标记,并在所述共享目录中增加所述第一文件的索引。
6.根据权利要求4所述的方法,其特征在于,还包括: 所述云存储服务器接收所述第一客户端发送的第一删除请求消息,所述第一删除请求消息包括所述第一文件的标识; 所述云存储服务器根据所述第一文件的标识,获取所述第一文件对应的引用计数;如果所述引用计数为0,所述云存储服务器直接将所述第一文件从所述第一客户端的存储区内删除并删除所述共享目录中所述第一文件的索引; 如果所述引用计数大于0,所述云存储服务器将所述第一文件从所述第一客户端的存储区移到公共文件存储区,并修改所述共享目录中所述第一文件的索引,以使修改后的索引指向所述公共文件存储区内的所述第一文件。
7.根据权利要求4或6所述的方法,其特征在于,还包括: 所述云存储服务器接收所述第二客户端发送的第二删除请求消息,所述第二删除请求消息包括所述第一文件的标识; 所述云存储服务器根据所述第一文件的标识从所述第二客户端的存储区中确定所述第一文件对应的所述虚拟文件,并根据所述虚拟文件从所述共享目录中获取所述第一文件的索引,根据所述第一文件的索引确定所述第一文件的存储位置和所述第一文件对应的引用计数; 如果所述第一文件对应的引用计数为1,并且根据所述第一文件的索引确定所述第一文件位于公共文件存储区内,所述云存储服务器将所述虚拟文件从所述第二客户端的存储区中删除,将所述第一文件从所述公共文件存储区中删除,并将所述第一文件对应的引用计数置为0 ; 如果所述第一文件对应的引用计数大于1,或者根据所述第一文件的索引确定所述第一文件位于所述第一客户端的存储区内,所述云存储服务器将所述虚拟文件从所述第二客户端的存储区中删除,并将所述第一文件对应的引用计数减1。
8.—种云存储服务器,其特征在于,包括: 第一接收模块,用于接收第二客户端发送的更新请求消息,所述更新请求消息包括请求更新的第一文件的标识和所述第一文件的本地版本信息,所述第一文件是所述第二客户端从第一客户端的存储区内下载的; 第一获取模块,用于根据所述第一接收模块接收的所述第一文件的标识,确定所述第一文件位于所述第一客户端的存储区内,并从所述第一客户端的存储区内获取所述第一文件的当前版本信息; 第一生成模块,用于如果根据所述第一接收模块接收的所述第一文件的本地版本信息和所述第一获取模块获取的所述第一文件的当前版本信息确定所述第一文件在所述第二客户端上的版本比所述第一文件在所述第一客户端的存储区内的版本低,生成所述第一文件的第一下载地址; 第一发送模块,用于将所述第一生成模块生成的所述第一下载地址发送给所述第二客户端,以供所述第二客户端根据所述第一下载地址从所述第一客户端的存储区内下载当前版本的所述第一文件。
9.根据权利要求8所述的云存储服务器,其特征在于,所述第一获取模块用于根据所述第一接收模块接收的所述第一文件的标识,确定所述第一文件位于所述第一客户端的存储区内包括: 所述第一获取模块具体用于根据所述第一接收模块接收的所述第一文件的标识从所述第二客户端的存储区中确定所述第一文件对应的虚拟文件,根据所述虚拟文件从共享目录中获取所述第一文件的索引,根据所述第一文件的索引确定所述第一文件位于所述第一客户端的存储区内;其中,所述虚拟文件是所述云存储服务器在所述第二客户端下载所述第一文件的过程中,根据所述共享目录中所述第一文件的索引生成的,所述第一文件的索引指向所述第一文件,所述虚拟文件和所述第一文件的索引分别包括所述第一文件的标识,所述共享目录中存储有允许共享的文件的索引。
10.根据权利要求9所述的云存储服务器,其特征在于,还包括: 第二接收模块,用于在所述第一接收模块接收所述更新请求消息之前,接收所述第二客户端发送的下载请求消息,所述下载请求消息包括请求下载的所述第一文件的标识; 第二获取模块,用于根据所述第二接收模块接收的所述第一文件的标识,从所述共享目录中获取所述第一文件的索引; 第二生成模块,用于根据所述第二获取模块获取的所述第一文件的索引确定所述第一文件位于所述第一客户端的存储区内,并生成所述第一文件的第二下载地址; 第二发送模块,用于将所述第二生成模块生成的所述第一文件的第二下载地址发送给所述第二客户端,以供所述第二客户端根据所述第二下载地址从所述第一客户端的存储区内下载所述第一文件。
11.根据权利要求10所述的云存储服务器,其特征在于,还包括: 第三生成模块,用于在所述第二获取模块获取所述第一文件的索引之后,根据所述第二获取模块获取的所述第一文件的索引生成所述第一文件对应的所述虚拟文件; 第一存储模块,用于将所述第三生成模块生成的所述虚拟文件存储到所述第二客户端的存储区中; 计数模块,用于在所述第二生成模块确定所述第一文件位于所述第一客户端的存储区内之后,将所述第一文件对应的引用计数加I。
12.根据权利要求10或11所述的云存储服务器,其特征在于,还包括: 第三接收模块,用于在所述第二接收模块接收所述下载请求消息之前,接收所述第一客户端发送的上传请求消息,所述上传请求消息包括所述第一文件; 第二存储模块,用于将所述第三接收模块接收的所述第一文件存储到所述第一客户端的存储区内; 第四接收模块,用于接收所述第一客户端发送的共享请求消息,所述共享请求消息包括所述第一文件的标识; 设置添加模块,用于根据所述第四接收模块接收的所述第一文件的标识,为所述第一客户端的存储区内的所述第一文件设置共享标记,并在所述共享目录中增加所述第一文件的索引。
13.根据权利要求11所述的云存储服务器,其特征在于,还包括: 第五接收模块,用于接收所述第一客户端发送的第一删除请求消息,所述第一删除请求消息包括所述第一文件的标识; 第三获取模块,用于根据所述第五接收模块接收的所述第一文件的标识,获取所述第一文件对应的引用计数; 第一删除处理模块,用于如果所述第三获取模块获取的所述引用计数为0,直接将所述第一文件从所述第一客户端的存储区内删除,并删除所述共享目录中所述第一文件的索引;如果所述第三获取模块获取的所述引用计数大于0,将所述第一文件从所述第一客户端的存储区移到公共文件存储区,并修改所述共享目录中所述第一文件的索引,以使修改后的索引指向所述公共文件存储区内的所述第一文件。
14.根据权利要求11或13所述的云存储服务器,其特征在于,还包括: 第六接收模块,用于接收所述第二客户端发送的第二删除请求消息,所述第二删除请求消息包括所述第一文件的标识; 确定模块,用于根据所述第六接收模块接收的所述第一文件的标识从所述第二客户端的存储区中确定所述第一文件对应的所述虚拟文件,并根据所述虚拟文件从所述共享目录中获取所述第一文件的索引,根据所述第一文件的索引确定所述第一文件的存储位置和所述第一文件对应的引用计数; 第二删除处理模块,用于如果所述确定模块确定的所述第一文件对应的引用计数为1,并且所述确定模块根据所述第一文件的索引确定所述第一文件位于公共文件存储区内,将所述虚拟文件从所述第二客户端的存储区中删除,将所述第一文件从所述公共文件存储区中删除,并将所述第一文件对应的引用计数置为0 ;如果所述确定模块确定的所述第一文件对应的引用计数大于1,或者所述确定模块根据所述第一文件的索引确定所述第一文件位于所述第一客户端的存储区内,将所述虚拟文件从所述第二客户端的存储区中删除,并将所述第一文件对应的引用计数减1。
【文档编号】H04L29/08GK104426955SQ201310382164
【公开日】2015年3月18日 申请日期:2013年8月28日 优先权日:2013年8月28日
【发明者】汤寿麟, 李文博 申请人:北大方正集团有限公司, 北京北大方正电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1