CN110297812A - 文件存储方法、文件同步的方法、计算机设备及存储介质 - Google Patents
文件存储方法、文件同步的方法、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN110297812A CN110297812A CN201910510966.2A CN201910510966A CN110297812A CN 110297812 A CN110297812 A CN 110297812A CN 201910510966 A CN201910510966 A CN 201910510966A CN 110297812 A CN110297812 A CN 110297812A
- Authority
- CN
- China
- Prior art keywords
- data block
- data
- file
- server
- map file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
一种文件存储方法、文件同步的方法、文件存储装置、文件同步的装置、计算机设备以及计算机可读存储介质,一个实施例的文件存储方法包括:获取待存储文件;根据预定数据量大小,对所述待存储文件进行切分,将所述待存储文件切分为各数据块;将各数据块分散存储在底层服务器磁盘;记录各数据块的相关信息,所述相关信息包括所述数据块的起始内容、结尾内容以及数据块摘要;生成并维护所述待存储文件的MAP文件,所述MAP文件中包括:所述待存储文件的文件名,各所述数据块所在的逻辑存储区,以及各所述数据块的所述相关信息。本实施例提高了数据同步的效率,节约了网络带宽,提高了文件上传下载的效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种文件存储方法、文件同步的方法、文件存储装置、文件同步的装置、计算机设备以及计算机可读存储介质。
背景技术
随着计算机技术的发展与进步,产生的数据越来越多,单个数据的数据量也越来越大,因此数据的传输效率变得非常重要。现有文件传输方式,都是基于服务端-客户端模式,如果某个大文件的小块被更新,即使更新只有几B(字节)或者几KB(千字节),用户也必须重新下载完整的大文件才能使用,更新效率特别低下。如传统的视频在线编辑,编辑人员对某个字幕或某个区块进行更新后,如果想要将更新后的视频上传至云端,整个文件也必须重新上传,效率非常低且浪费网络带宽。
发明内容
基于此,有必要提供一种文件存储方法、文件同步的方法、文件存储装置、文件同步的装置、计算机设备以及计算机可读存储介质,以提高文件上传下载的效率。
一个实施例中的文件存储方法,包括:
获取待存储文件;
根据预定数据量大小,对所述待存储文件进行切分,将所述待存储文件切分为各数据块;
将各数据块分散存储在底层服务器磁盘;
记录各数据块的相关信息,所述相关信息包括所述数据块的起始内容、结尾内容以及数据块摘要;
生成并维护所述待存储文件的MAP文件,所述MAP文件中包括:所述待存储文件的文件名,各所述数据块所在的逻辑存储区,以及各所述数据块的所述相关信息。
一些实施例中,切分后的每个数据块的数据量大小为所述预定数据量大小,或者,切分后的各数据块中,其中一个数据块的数据量大小小于所述预定数据量大小,其他数据块的数据量大小为所述预定数据量大小。
一些实施例中,所述底层服务器磁盘的一个逻辑存储区,存储有一个或者多个所述数据块。
一些实施例中,所述数据块摘要为所述数据块的SHA256值。
一些实施例中,所述起始内容、所述结尾内容的数据量大小均为1KB。
一些实施例中,所述预定数据量大小为64MB。
一个实施例中的文件同步的方法,包括:
接收终端发送的MAP文件获取请求,所述MAP文件获取请求携带文件名信息;
获取与所述文件名信息对应的服务端MAP文件,并将该服务端MAP文件返回给所述终端;
接收所述终端发送的数据块传输指令,所述数据块传输指令携带数据块标识,所述数据块标识为所述终端将所述服务端MAP文件与客户端MAP文件比对后,所述服务端MAP文件与客户端MAP文件存在差异的数据块的数据块标识;
基于所述数据块传输指令,进行所述数据块标识对应的数据块在服务端与所述终端之间的同步。
一些实施例中,基于所述数据块传输指令,进行所述数据块标识对应的数据块在服务端与所述终端之间的同步,包括:
在所述数据块传输指令为数据块上传指令时,获取所述终端上传的与所述数据块标识对应的数据内容;
根据预定数据量大小将所述数据内容切分为各数据块,基于所述数据块标识将各所述数据块分散存储在底层服务器磁盘;
记录各所述数据块的相关信息,所述相关信息包括所述数据块的起始内容、结尾内容以及数据块摘要,并更新所述服务端MAP文件。
一些实施例中,基于所述数据块传输指令,进行所述数据块标识对应的数据块在服务端与所述终端之间的同步,包括:
在所述数据块传输指令为数据块下载指令时,从底层服务器磁盘获取与各所述数据块标识对应的数据块,并将各数据块传输给所述终端。
一个实施例中的文件同步的方法,包括:
向服务端发送MAP文件获取请求,所述MAP文件获取请求携带文件名信息;
接收所述服务端返回的与所述文件名信息对应的服务端MAP文件;
将所述服务端MAP文件与客户端MAP文件比对,确定所述服务端MAP文件与客户端MAP文件存在差异的数据块的数据块标识;
向所述服务端发送数据块传输指令,所述数据块传输指令携带所述数据块标识
基于所述数据块传输指令,进行所述数据块标识对应的数据块在服务端与所述终端之间的同步。
一些实施例中,所述数据块传输指令为数据块上传指令;基于所述数据块传输指令,进行所述数据块标识对应的数据块在服务端与所述终端之间的同步,包括:
将与所述数据块标识对应的数据内容上传至所述服务端,由所述服务端根据预定数据量大小将所述数据内容切分为各数据块,基于所述数据块标识将各所述数据块分散存储在底层服务器磁盘,记录各所述数据块的相关信息,所述相关信息包括所述数据块的起始内容、结尾内容以及数据块摘要,并更新所述服务端MAP文件。
一些实施例中,所述数据块传输指令为数据块下载指令;基于所述数据块传输指令,进行所述数据块标识对应的数据块在服务端与所述终端之间的同步,包括:
接收所述服务器返回的与各所述数据块标识对应的数据块;
合并各所述数据块,并更新所述客户端MAP文件。
一个实施例中的文件存储装置,包括:
文件获取模块,用于获取待存储文件;
切分模块,用于根据预定数据量大小,对所述待存储文件进行切分,将所述待存储文件切分为各数据块;
分散存储模块,用于将各数据块分散存储在底层服务器磁盘;
记录模块,用于记录各数据块的相关信息,所述相关信息包括所述数据块的起始内容、结尾内容以及数据块摘要;
服务端MAP文件生成模块,用于生成并维护所述待存储文件的MAP文件,所述MAP文件中包括:所述待存储文件的文件名,各所述数据块所在的逻辑存储区,以及各所述数据块的所述相关信息。
一些实施例中,切分后的每个数据块的数据量大小为所述预定数据量大小,或者,切分后的各数据块中,其中一个数据块的数据量大小小于所述预定数据量大小,其他数据块的数据量大小为所述预定数据量大小。
一些实施例中,所述底层服务器磁盘的一个逻辑存储区,存储有一个或者多个所述数据块。
一些实施例中,所述数据块摘要为所述数据块的SHA256值。
一些实施例中,所述起始内容、所述结尾内容的数据量大小均为1KB。
一些实施例中,所述预定数据量大小为64MB。
一个实施例中的文件同步的装置,包括:
请求接收模块,用于接收终端发送的MAP文件获取请求,所述MAP文件获取请求携带文件名信息;
文件获取模块,用于获取与所述文件名信息对应的服务端MAP文件,并将该服务端MAP文件返回给所述终端;
传输指令接收模块,用于接收所述终端发送的数据块传输指令,所述数据块传输指令携带数据块标识,所述数据块标识为所述终端将所述服务端MAP文件与客户端MAP文件比对后,所述服务端MAP文件与客户端MAP文件存在差异的数据块的数据块标识;
服务端同步模块,用于基于所述数据块传输指令,进行所述数据块标识对应的数据块在服务端与所述终端之间的同步。
一些实施例中,所述服务端同步模块,包括服务端上传同步模块与服务端下载同步模块中的至少一个。
其中,所述服务端上传同步模块,用于在所述数据块传输指令为数据块上传指令时,获取所述终端上传的与所述数据块标识对应的数据内容;根据预定数据量大小将所述数据内容切分为各数据块,基于所述数据块标识将各所述数据块分散存储在底层服务器磁盘;记录各所述数据块的相关信息,所述相关信息包括所述数据块的起始内容、结尾内容以及数据块摘要,并更新所述服务端MAP文件。
所述服务端下载同步模块,用于在所述数据块传输指令为数据块下载指令时,从底层服务器磁盘获取与各所述数据块标识对应的数据块,并将各数据块传输给所述终端。
一个实施例中的文件同步的装置,包括:
请求发送模块,用于向服务端发送MAP文件获取请求,所述MAP文件获取请求携带文件名信息;
文件接收模块,用于接收所述服务端返回的与所述文件名信息对应的服务端MAP文件;
文件比对模块,用于将所述服务端MAP文件与客户端MAP文件比对,确定所述服务端MAP文件与客户端MAP文件存在差异的数据块的数据块标识;
传输指令发送模块,用于向所述服务端发送数据块传输指令,所述数据块传输指令携带所述数据块标识
终端同步模块,用于基于所述数据块传输指令,进行所述数据块标识对应的数据块在服务端与所述终端之间的同步。
一些实施例中,所述终端同步模块,包括终端上传同步模块与终端下载同步模块中的至少一个。
其中,所述终端上传同步模块,用于在所述数据块传输指令为数据块上传指令时,将与所述数据块标识对应的数据内容上传至所述服务端,由所述服务端根据预定数据量大小将所述数据内容切分为各数据块,基于所述数据块标识将各所述数据块分散存储在底层服务器磁盘,记录各所述数据块的相关信息,所述相关信息包括所述数据块的起始内容、结尾内容以及数据块摘要,并更新所述服务端MAP文件。
所述终端下载同步模块,用于在所述数据块传输指令为数据块下载指令时,接收所述服务器返回的与各所述数据块标识对应的数据块;合并各所述数据块,并更新所述客户端MAP文件。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现控制执行如上所述方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现控制执行如上所述的方法的步骤。
基于如上所述的实施例方案,通过将文件且分为预定数据量大小的各数据块之后,将各数据块分布式存储在底层服务器磁盘,并记录各数据块的相关信息,生成和维护文件的MAP文件,从而在需要实现服务器与终端之间的文件同步时,通过服务器与终端之间的MAP文件的对比,即可找到存在差异的数据块,并将差异数据块在服务器与终端之间进行同步,从而在同步时只需同步存在差异的数据块即可,提高了数据同步的效率,节约了网络带宽,提高了文件上传下载的效率。
附图说明
图1为一个实施例中的应用场景示意图;
图2为一个实施例中的文件存储方法的流程示意图;
图3为一个实施例中的文件同步方法的流程示意图;
图4为另一个实施例中的文件同步方法的流程示意图;
图5是一个应用示例的通过文件上传进行同步的原理示意图;
图6是一个实施例中的文件存储装置的模块结构示意图;
图7为一个实施例中的文件同步装置的模块结构示意图;
图8为另一个实施例中的文件同步装置的模块结构示意图;
图9为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的方案,涉及如图1所示的包含终端110和服务器120的应用场景。其中,服务器120中存储有文件,服务器120中存储的文件可能是由终端110上传的文件,也可能是通过其他方式获得的文件。在有需要时,终端110将其自身存储的文件上传至服务器120,实现文件的上传,也可能从服务器120下载服务器120中存储的文件,实现文件的下载。其中,上传和下载的文件可能是整个文件,在服务器120和终端110均存储有该文件的相关内容的情况下,上传和下载的仅仅只是该文件有差异的相关数据块。终端110可以是但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,只要能够实现与服务器120的通信,能够向服务器120上传文件以及从服务器120下载文件即可,上述服务器120可以通过独立的服务器来实现,也可以通过服务器集群来实现。
参考图2和图5所示,一个实施例中的文件存储方法,应用于上述服务器120,该方法包括下述步骤S201至步骤S205。
步骤S201:获取待存储文件。
其中,待存储文件,是指要存储在服务器120上的文件。在一些实施例中,该待存储文件,可以是指某个文件的全部文件内容,也可以是该文件的部分文件内容。例如在服务器120中已经存储某个文件的内容的情况下,该文件的文件内容做了更新,服务器120获得了该文件的更新内容,从而可以仅将该更新内容相关的内容作为该待存储文件。
服务器120可以通过各种可能的方式获得该待存储文件,例如,由终端110上传,或者由其他的相关服务器提供等。本申请实施例不对服务器120获得待存储文件的来源进行限定。
步骤S202:根据预定数据量大小,对所述待存储文件进行切分,将所述待存储文件切分为各数据块。
其中,预定数据量大小的具体数值,可以结合实际技术需要进行设定,一些实施例中可以将该预定数据量大小为64MB。
在基于预定数据量大小对待存储文件进行切分后,切分后的每个数据块的数据量大小,均可以为预定数据量大小,从而可以将待存储文件切分为大小相同的各数据块。在一些实施例中,切分后的各数据块中,其中一个数据块的数据量大小小于所述预定数据量大小,其他数据块的数据量大小为所述预定数据量大小。从而,在待存储文件无法进行均分切分的情况下,最后得到的数据块的数据量大小可以小于预定数据量大小,以满足对各种数据量大小的文件进行存储的需求。
步骤S203:将各数据块分散存储在底层服务器磁盘。
在将上述切分获得的各数据块进行存储时,可以通过分布式存储的方式,将各数据块分散存储在底层服务器磁盘,实现待存储文件的分布式存储。便于在需要获取该待存储文件的部分内容时,通过分布式存储系统,直接提取相关部分的数据块即可,高效便捷。
其中,在将各数据块分布式存储在底层服务器磁盘时,可以通过各种可能的分布式文件系统来实现,例如HDFS(Hadoop Distributed File System)、Ceph等等。通过分布式文件系统进行分布式存储,待存储文件以固定大小的块进行切分,切分后分散于底层服务器磁盘上,这样的一个数据块,对上层数据仓库来说,可以理解为一个单一文件系统挂载点,可以提供数据存储所需要的横向扩展能力,而且可以对数据接口层提供数据下载能力。
以预定数据量大小为64MB为例,底层服务器磁盘分布式存储每个64MB块,底层服务器磁盘的一个逻辑存储区,存储有一个或者多个所述数据块。存放于此系统中的文件,都由一个或多个逻辑存储区组成。
步骤S204:记录各数据块的相关信息,所述相关信息包括所述数据块的起始内容、结尾内容以及数据块摘要。
通过记录各数据块的相关信息,可以便于查找和了解每个数据块具体存储的是哪部分相关内容。起始内容可以便于了解数据块的起始信息,结尾内容可以便于了解数据块的结尾信息,可以结合实际技术需要确定需要记录到达数据量的起始内容和结尾内容。在一些实施例中,可以是选取记录1K数据量的起始内容和结尾内容,即记录每个数据块的起始1K内容、结尾1K内容。数据块摘要是一个唯一对应该数据块的固定长度的值,在将数据块发送给其他设备时,接收者接收到该数据块后,通过计算该数据块的数据块摘要,并比较与该数据块原来的数据块摘要的一致性,可以知晓该数据块是否被改变,因而可以通过数据块摘要保证数据块内容的完整性。在一些实施例中,可以将该数据块的SHA256值(SHA表示哈希算法,SHA 256表示哈希值的大小为256位),作为该数据块的数据块摘要。
步骤S205:生成并维护所述待存储文件的MAP文件,所述MAP文件中包括:所述待存储文件的文件名,各所述数据块所在的逻辑存储区,以及各所述数据块的所述相关信息。
MAP文件是用以描述该待存储文件以及该待存储文件的相关数据块的相关信息。生成MAP文件的方式可以采用任何可能的方式生成,本申请实施例中不做具体限定。
上述存储的数据或者说文件,可以通过数据接口以各种协议对外发布,如HTTP(Hyper Text Transfer Protocol)、FTP(File Transfer Protocol)等,以将相关的文件数据提供给请求端。同时,同时它也提供文件上传功能,以接收请求端上传的文件并按照如上所述的方式进行存储。
据此,本申请的相关实施例还提供终端与服务器之间进行文件同步的方法。
参考图3所示,一个实施例中的文件同步的方法,应用于上述服务器120,该方法包括下述步骤S301至步骤S304。
步骤S301:接收终端发送的MAP文件获取请求,所述MAP文件获取请求携带文件名信息。
终端在需要从服务器获得相关文件时,可以向服务器发送该MAP文件获取请求。终端可以在任何需要与服务器进行文件同步的时刻,向服务器发送给MAP文件获取请求,例如终端在需要从服务器获得一个新的文件时,此时,终端可以通过服务器发布的文件名或者通过其他的方式获得该文件名信息。再例如服务器与终端均已经存储某个文件,但是服务器或者终端可能会对该终端进行更新,终端需要从服务器获得更新后的文件内容,或者终端需要将更新后的文件内容同步至服务器。此时,终端可以定时或者在自身对文件内容进行更新之后,向服务器发送MAP文件获取请求。可以理解,终端也可以在其他的时刻发送该MAP文件获取请求。
步骤S302:获取与所述文件名信息对应的服务端MAP文件,并将该服务端MAP文件返回给所述终端。
基于文件名信息,服务器可查询获得与该文件名信息对应的服务端MAP文件。查询获得的MAP文件,即上述文件存储方法的实施例中的方法中,由服务器生成的MAP文件。
步骤S303:接收所述终端发送的数据块传输指令,所述数据块传输指令携带数据块标识,所述数据块标识为所述终端将所述服务端MAP文件与客户端MAP文件比对后,所述服务端MAP文件与客户端MAP文件存在差异的数据块的数据块标识。
终端在接收到服务器返回的服务端MAP文件之后,将自身生成的客户端MAP文件与服务端MAP文件进行比较,获得服务端MAP文件与客户端MAP文件之间存在差异的数据块的信息。其中,终端可以在将服务端MAP文件与客户端MAP文件进行比较之前的任何时刻,采用与上述文件存储方法的实施例中的方法中生成MAP文件同样的方式,生成客户端MAP文件。为了能够获得更准确的终端与服务器之间存在差异的数据块的信息,终端可以在发送MAP文件获取请求之后、将服务端MAP文件与客户端MAP文件进行比较之前,或者是在收到服务器返回的服务端MAP文件之后、将服务端MAP文件与客户端MAP文件进行比较之前,生成客户端MAP文件。
终端通过将服务端MAP文件与客户端MAP文件进行比较,在比较结果为服务端MAP文件与客户端MAP文件之间存在差异时,可以获得服务端MAP文件与客户端MAP文件之间存在差异的数据块的数据块标识,进而向服务器发送数据块传输指令,该数据块传输指令携带存在差异的数据块的数据块标识,据此实现终端与服务器之间的数据块的同步。
步骤S304:基于所述数据块传输指令,进行所述数据块标识对应的数据块在服务端与所述终端之间的同步。
在服务端MAP文件与客户端MAP文件之间存在差异时,可能是终端具有的某些数据块标识在服务器中并不存在,此时,需要将终端的数据块同步至服务器,因此上述数据块传输指令可以是数据块上传指令。另一方面,在服务端MAP文件与客户端MAP文件之间存在差异时,也可能是终端不具有服务器具有的某些数据块标识,此时,终端需要从服务器下载相关数据块,因此,上述数据块传输指令可以是数据块下载指令。
其中,在上述数据块传输指令为数据块上传指令时,基于所述数据块传输指令,进行所述数据块标识对应的数据块在服务端与所述终端之间的同步,具体可以包括:
获取所述终端上传的与所述数据块标识对应的数据内容;
根据预定数据量大小将所述数据内容切分为各数据块,基于所述数据块标识将各所述数据块分散存储在底层服务器磁盘;
记录各所述数据块的相关信息,所述相关信息包括所述数据块的起始内容、结尾内容以及数据块摘要,并更新所述服务端MAP文件。
其中,在获得终端上传的数据内容之后,将数据内容切分为数据块、分散存储、记录数据块的相关信息以及更新MAP文件的方式与上述文件存储方法的实施例中的方式相同。
其中,在上述数据块传输指令为数据块下载指令时,基于所述数据块传输指令,进行所述数据块标识对应的数据块在服务端与所述终端之间的同步,具体可以包括:
从底层服务器磁盘获取与各所述数据块标识对应的数据块,并将各数据块传输给所述终端。
从而,在将各数据块传输给终端之后,终端接收到服务器发送的数据块,实现终端与服务器之间的文件同步。
参考图4所示,一个实施例中的文件同步的方法,应用于上述终端110,该方法包括下述步骤S401至步骤S405。
步骤S401:向服务端发送MAP文件获取请求,所述MAP文件获取请求携带文件名信息。
终端在需要从服务器获得相关文件时,可以向服务器发送该MAP文件获取请求。终端可以在任何需要与服务器进行文件同步的时刻,向服务器发送给MAP文件获取请求。例如终端在需要从服务器获得一个新的文件时,此时,终端可以通过服务器发布的文件名或者通过其他的方式获得该文件名信息。再例如服务器与终端均已经存储某个文件,但是服务器或者终端可能会对该终端进行更新,终端需要从服务器获得更新后的文件内容,或者终端需要将更新后的文件内容同步至服务器。此时,终端可以定时或者在自身对文件内容进行更新之后,向服务器发送MAP文件获取请求。可以理解,终端也可以在其他的时刻发送该MAP文件获取请求。
步骤S402:接收所述服务端返回的与所述文件名信息对应的服务端MAP文件。
基于文件名信息,服务器可查询获得与该文件名信息对应的服务端MAP文件。查询获得的MAP文件,即上述文件存储方法的实施例中的方法中,由服务器生成的MAP文件。
步骤S403:将所述服务端MAP文件与客户端MAP文件比对,确定所述服务端MAP文件与客户端MAP文件存在差异的数据块的数据块标识。
终端在接收到服务器返回的服务端MAP文件之后,将自身生成的客户端MAP文件与服务端MAP文件进行比较,获得服务端MAP文件与客户端MAP文件之间存在差异的数据块的信息。其中,终端可以在将服务端MAP文件与客户端MAP文件进行比较之前的任何时刻,采用与上述文件存储方法的实施例中的方法中生成MAP文件同样的方式,生成客户端MAP文件。为了能够获得更准确的终端与服务器之间存在差异的数据块的信息,终端可以在发送MAP文件获取请求之后、将服务端MAP文件与客户端MAP文件进行比较之前,或者是在收到服务器返回的服务端MAP文件之后、将服务端MAP文件与客户端MAP文件进行比较之前,生成客户端MAP文件。
终端通过将服务端MAP文件与客户端MAP文件进行比较,在比较结果为服务端MAP文件与客户端MAP文件之间存在差异时,可以获得服务端MAP文件与客户端MAP文件之间存在差异的数据块的数据块标识,进而向服务器发送数据块传输指令,该数据块传输指令携带存在差异的数据块的数据块标识,据此实现终端与服务器之间的数据块的同步。
步骤S404:向所述服务端发送数据块传输指令,所述数据块传输指令携带所述数据块标识。
在服务端MAP文件与客户端MAP文件之间存在差异时,可能是终端具有的某些数据块标识在服务器中并不存在,此时,需要将终端的数据块同步至服务器,因此上述数据块传输指令可以是数据块上传指令。另一方面,在服务端MAP文件与客户端MAP文件之间存在差异时,也可能是终端不具有服务器具有的某些数据块标识,此时,终端需要从服务器下载相关数据块,因此,上述数据块传输指令可以是数据块下载指令。
步骤S405:基于所述数据块传输指令,进行所述数据块标识对应的数据块在服务端与所述终端之间的同步。
其中,在上述数据块传输指令为数据块上传指令时,基于所述数据块传输指令,进行所述数据块标识对应的数据块在服务端与所述终端之间的同步,包括:
将与所述数据块标识对应的数据内容上传至所述服务端,由所述服务端根据预定数据量大小将所述数据内容切分为各数据块,基于所述数据块标识将各所述数据块分散存储在底层服务器磁盘,记录各所述数据块的相关信息,所述相关信息包括所述数据块的起始内容、结尾内容以及数据块摘要,并更新所述服务端MAP文件。
其中,服务器将数据内容切分为数据块、分散存储、记录数据块的相关信息以及更新MAP文件的方式,与上述文件存储方法的实施例中的方式相同。
其中,在上述数据块传输指令为数据块下载指令时,基于所述数据块传输指令,进行所述数据块标识对应的数据块在服务端与所述终端之间的同步,具体可以包括:
接收所述服务器返回的与各所述数据块标识对应的数据块;
合并各所述数据块,并更新所述客户端MAP文件。
终端在接收到服务器返回的数据块之后,可将各数据块进行合并,从而在终端获得的完整的文件。在更新客户端MAP文件时,可以基于上述各实施例中相同的生成MAP文件的方式,生成新的客户端MAP文件,从而完成对客户端MAP文件的更新,便于后续过程中对终端与服务器之间的文件同步。
基于与上述方法同样的思想,本申请实施例还提供一种文件存储装置,该文件存储装置可设置于图1所示的服务器120。
如图6所示,一个实施例中的文件存储装置包括:
文件获取模块601,用于获取待存储文件;
切分模块602,用于根据预定数据量大小,对所述待存储文件进行切分,将所述待存储文件切分为各数据块;
分散存储模块603,用于将各数据块分散存储在底层服务器磁盘;
记录模块604,用于记录各数据块的相关信息,所述相关信息包括所述数据块的起始内容、结尾内容以及数据块摘要;
服务端MAP文件生成模块605,用于生成并维护所述待存储文件的MAP文件,所述MAP文件中包括:所述待存储文件的文件名,各所述数据块所在的逻辑存储区,以及各所述数据块的所述相关信息。
其中,在一些实施例中,切分后的每个数据块的数据量大小为所述预定数据量大小。在一些实施例中,切分后的各数据块中,其中一个数据块的数据量大小小于所述预定数据量大小,其他数据块的数据量大小为所述预定数据量大小。
在一些实施例中,所述底层服务器磁盘的一个逻辑存储区,存储有一个或者多个所述数据块。
在一些实施例中,所述数据块摘要为所述数据块的SHA256值;所述起始内容、所述结尾内容的数据量大小均为1KB;所述预定数据量大小为64MB。
本申请实施例还提供一种文件同步的装置,该文件同步的装置可设置于图1所示的服务器120。
如图7所示,一个实施例中的文件同步的装置包括:
请求接收模块701,用于接收终端发送的MAP文件获取请求,所述MAP文件获取请求携带文件名信息;
文件获取模块702,用于获取与所述文件名信息对应的服务端MAP文件,并将该服务端MAP文件返回给所述终端;
传输指令接收模块703,用于接收所述终端发送的数据块传输指令,所述数据块传输指令携带数据块标识,所述数据块标识为所述终端将所述服务端MAP文件与客户端MAP文件比对后,所述服务端MAP文件与客户端MAP文件存在差异的数据块的数据块标识;
服务端同步模块704,用于基于所述数据块传输指令,进行所述数据块标识对应的数据块在服务端与所述终端之间的同步。
在一些实施例中,服务端同步模块704,可以包括服务端上传同步模块与服务端下载同步模块中的至少一个。
其中,服务端上传同步模块,用于在所述数据块传输指令为数据块上传指令时,获取所述终端上传的与所述数据块标识对应的数据内容;根据预定数据量大小将所述数据内容切分为各数据块,基于所述数据块标识将各所述数据块分散存储在底层服务器磁盘;记录各所述数据块的相关信息,所述相关信息包括所述数据块的起始内容、结尾内容以及数据块摘要,并更新所述服务端MAP文件。
其中,服务端下载同步模块,用于在所述数据块传输指令为数据块下载指令时,从底层服务器磁盘获取与各所述数据块标识对应的数据块,并将各数据块传输给所述终端。
本申请实施例还提供一种文件同步的装置,该文件同步的装置可设置于图1所示的终端110。
如图8所示,一个实施例中的文件同步的装置包括:
请求发送模块801,用于向服务端发送MAP文件获取请求,所述MAP文件获取请求携带文件名信息;
文件接收模块802,用于接收所述服务端返回的与所述文件名信息对应的服务端MAP文件;
文件比对模块803,用于将所述服务端MAP文件与客户端MAP文件比对,确定所述服务端MAP文件与客户端MAP文件存在差异的数据块的数据块标识;
传输指令发送模块804,用于向所述服务端发送数据块传输指令,所述数据块传输指令携带所述数据块标识
终端同步模块805,用于基于所述数据块传输指令,进行所述数据块标识对应的数据块在服务端与所述终端之间的同步。
在一些实施例中,终端同步模块805,可以包括终端上传同步模块与终端下载同步模块中的至少一个。
其中,终端上传同步模块,用于在所述数据块传输指令为数据块上传指令时,将与所述数据块标识对应的数据内容上传至所述服务端,由所述服务端根据预定数据量大小将所述数据内容切分为各数据块,基于所述数据块标识将各所述数据块分散存储在底层服务器磁盘,记录各所述数据块的相关信息,所述相关信息包括所述数据块的起始内容、结尾内容以及数据块摘要,并更新所述服务端MAP文件。
终端下载同步模块,用于在所述数据块传输指令为数据块下载指令时,接收所述服务器返回的与各所述数据块标识对应的数据块;合并各所述数据块,并更新所述客户端MAP文件。
本领域普通技术人员可以理解,上述实施例中涉及的控制系统的控制过程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可实现如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
因此,在一个实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上所述的方法的步骤。
相应地,本申请实施例还提供一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现如上所述的任意实施例中的方法的步骤。
一个实施例中的计算机设备的内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器,还可以包括通过系统总线连接的网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现如上所述的控制方法。该计算机设备具体可以是如图1所示的终端110,也可以是如图1中所示的服务器120。在该计算机设备是终端时,该计算机设备还可以包括显示屏和输入装置,该显示屏用于将计算机设备需要显示给用户进行查看的相关信息进行显示,该输入装置可用于与用户进行交互,以获得用户输入的相关信息。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种文件存储方法,所述方法包括:
获取待存储文件;
根据预定数据量大小,对所述待存储文件进行切分,将所述待存储文件切分为各数据块;
将各数据块分散存储在底层服务器磁盘;
记录各数据块的相关信息,所述相关信息包括所述数据块的起始内容、结尾内容以及数据块摘要;
生成并维护所述待存储文件的MAP文件,所述MAP文件中包括:所述待存储文件的文件名,各所述数据块所在的逻辑存储区,以及各所述数据块的所述相关信息。
2.根据权利要求1所述的方法,其特征在于,切分后的每个数据块的数据量大小为所述预定数据量大小,或者,切分后的各数据块中,其中一个数据块的数据量大小小于所述预定数据量大小,其他数据块的数据量大小为所述预定数据量大小。
3.根据权利要求1所述的方法,其特征在于,所述底层服务器磁盘的一个逻辑存储区,存储有一个或者多个所述数据块。
4.根据权利要求1至3任意一项所述的方法,其特征在于,包括下述各项中的至少一项:
所述数据块摘要为所述数据块的SHA256值;
所述起始内容、所述结尾内容的数据量大小均为1KB;
所述预定数据量大小为64MB。
5.一种文件同步的方法,所述方法包括:
接收终端发送的MAP文件获取请求,所述MAP文件获取请求携带文件名信息;
获取与所述文件名信息对应的服务端MAP文件,并将该服务端MAP文件返回给所述终端;
接收所述终端发送的数据块传输指令,所述数据块传输指令携带数据块标识,所述数据块标识为所述终端将所述服务端MAP文件与客户端MAP文件比对后,所述服务端MAP文件与客户端MAP文件存在差异的数据块的数据块标识;
基于所述数据块传输指令,进行所述数据块标识对应的数据块在服务端与所述终端之间的同步。
6.根据权利要求5所述的方法,其特征在于,基于所述数据块传输指令,进行所述数据块标识对应的数据块在服务端与所述终端之间的同步,包括下述两项中的至少一项:
第一项:
在所述数据块传输指令为数据块上传指令时,获取所述终端上传的与所述数据块标识对应的数据内容;
根据预定数据量大小将所述数据内容切分为各数据块,基于所述数据块标识将各所述数据块分散存储在底层服务器磁盘;
记录各所述数据块的相关信息,所述相关信息包括所述数据块的起始内容、结尾内容以及数据块摘要,并更新所述服务端MAP文件;
第二项:
在所述数据块传输指令为数据块下载指令时,从底层服务器磁盘获取与各所述数据块标识对应的数据块,并将各数据块传输给所述终端。
7.一种文件同步的方法,所述方法包括:
向服务端发送MAP文件获取请求,所述MAP文件获取请求携带文件名信息;
接收所述服务端返回的与所述文件名信息对应的服务端MAP文件;
将所述服务端MAP文件与客户端MAP文件比对,确定所述服务端MAP文件与客户端MAP文件存在差异的数据块的数据块标识;
向所述服务端发送数据块传输指令,所述数据块传输指令携带所述数据块标识;
基于所述数据块传输指令,进行所述数据块标识对应的数据块在服务端与所述终端之间的同步。
8.根据权利要求7所述的方法,其特征在于,包括下述两项中的至少一项:
第一项:
所述数据块传输指令为数据块上传指令;基于所述数据块传输指令,进行所述数据块标识对应的数据块在服务端与所述终端之间的同步,包括:
将与所述数据块标识对应的数据内容上传至所述服务端,由所述服务端根据预定数据量大小将所述数据内容切分为各数据块,基于所述数据块标识将各所述数据块分散存储在底层服务器磁盘,记录各所述数据块的相关信息,所述相关信息包括所述数据块的起始内容、结尾内容以及数据块摘要,并更新所述服务端MAP文件;
第二项:
所述数据块传输指令为数据块下载指令;基于所述数据块传输指令,进行所述数据块标识对应的数据块在服务端与所述终端之间的同步,包括:
接收所述服务器返回的与各所述数据块标识对应的数据块;
合并各所述数据块,并更新所述客户端MAP文件。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时,实现控制执行权利要求1至8中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现控制执行权利要求1至8中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910510966.2A CN110297812A (zh) | 2019-06-13 | 2019-06-13 | 文件存储方法、文件同步的方法、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910510966.2A CN110297812A (zh) | 2019-06-13 | 2019-06-13 | 文件存储方法、文件同步的方法、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110297812A true CN110297812A (zh) | 2019-10-01 |
Family
ID=68027997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910510966.2A Pending CN110297812A (zh) | 2019-06-13 | 2019-06-13 | 文件存储方法、文件同步的方法、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110297812A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111913919A (zh) * | 2020-08-12 | 2020-11-10 | 湖北南邦创电科技有限公司 | 一种文件存储管理方法及存储介质 |
CN112000622A (zh) * | 2020-08-05 | 2020-11-27 | 天翼电子商务有限公司 | 离线文件局部更新的方法、系统、介质、客户端及服务器 |
CN112835972A (zh) * | 2019-11-22 | 2021-05-25 | 北京中电普华信息技术有限公司 | 非结构化数据的同步方法及系统 |
CN114647379A (zh) * | 2022-02-17 | 2022-06-21 | 北京京东振世信息技术有限公司 | 文件存储方法、装置、电子设备和计算机可读介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103166992A (zh) * | 2011-12-14 | 2013-06-19 | 中国电信股份有限公司 | 应用于云存储的快速文件更新方法及系统 |
CN103414759A (zh) * | 2013-07-22 | 2013-11-27 | 华为技术有限公司 | 网盘文件传输方法和装置 |
CN105721526A (zh) * | 2014-12-04 | 2016-06-29 | 清华大学 | 一种终端、服务器文件同步的方法及装置 |
CN107066205A (zh) * | 2016-12-30 | 2017-08-18 | 曙光信息产业(北京)有限公司 | 一种数据存储系统 |
CN107360254A (zh) * | 2017-08-22 | 2017-11-17 | 北京奇艺世纪科技有限公司 | 一种文件下载方法、装置、服务器及终端 |
CN108287669A (zh) * | 2018-01-26 | 2018-07-17 | 平安科技(深圳)有限公司 | 数据存储方法、装置及存储介质 |
CN109634932A (zh) * | 2018-11-30 | 2019-04-16 | 北京瑞卓喜投科技发展有限公司 | 一种智能合约存储方法及存储系统 |
-
2019
- 2019-06-13 CN CN201910510966.2A patent/CN110297812A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103166992A (zh) * | 2011-12-14 | 2013-06-19 | 中国电信股份有限公司 | 应用于云存储的快速文件更新方法及系统 |
CN103414759A (zh) * | 2013-07-22 | 2013-11-27 | 华为技术有限公司 | 网盘文件传输方法和装置 |
CN105721526A (zh) * | 2014-12-04 | 2016-06-29 | 清华大学 | 一种终端、服务器文件同步的方法及装置 |
CN107066205A (zh) * | 2016-12-30 | 2017-08-18 | 曙光信息产业(北京)有限公司 | 一种数据存储系统 |
CN107360254A (zh) * | 2017-08-22 | 2017-11-17 | 北京奇艺世纪科技有限公司 | 一种文件下载方法、装置、服务器及终端 |
CN108287669A (zh) * | 2018-01-26 | 2018-07-17 | 平安科技(深圳)有限公司 | 数据存储方法、装置及存储介质 |
CN109634932A (zh) * | 2018-11-30 | 2019-04-16 | 北京瑞卓喜投科技发展有限公司 | 一种智能合约存储方法及存储系统 |
Non-Patent Citations (3)
Title |
---|
侯莉莎: "《云计算与物联网技术》", 31 May 2017 * |
杨晓元: "《计算机密码学》", 31 March 2007 * |
石磊玉: "《日臻完善 软件调试与优化典型应用》", 31 January 2010 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112835972A (zh) * | 2019-11-22 | 2021-05-25 | 北京中电普华信息技术有限公司 | 非结构化数据的同步方法及系统 |
CN112835972B (zh) * | 2019-11-22 | 2024-04-16 | 北京中电普华信息技术有限公司 | 非结构化数据的同步方法及系统 |
CN112000622A (zh) * | 2020-08-05 | 2020-11-27 | 天翼电子商务有限公司 | 离线文件局部更新的方法、系统、介质、客户端及服务器 |
CN111913919A (zh) * | 2020-08-12 | 2020-11-10 | 湖北南邦创电科技有限公司 | 一种文件存储管理方法及存储介质 |
CN111913919B (zh) * | 2020-08-12 | 2024-08-06 | 湖北南邦创电科技有限公司 | 一种文件存储管理方法及存储介质 |
CN114647379A (zh) * | 2022-02-17 | 2022-06-21 | 北京京东振世信息技术有限公司 | 文件存储方法、装置、电子设备和计算机可读介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6621543B2 (ja) | ハイブリッドアプリケーションの自動更新 | |
CN110297812A (zh) | 文件存储方法、文件同步的方法、计算机设备及存储介质 | |
US10951702B2 (en) | Synchronized content library | |
CN109522330B (zh) | 基于区块链的云平台数据处理方法、装置、设备及介质 | |
CN104731516B (zh) | 一种存取文件的方法、装置及分布式存储系统 | |
US9697225B2 (en) | Method for synchronizing file | |
JP6947919B2 (ja) | ビデオ情報処理方法、コンピュータデバイス及び記憶媒体 | |
CN108549673A (zh) | 网页资源的预加载方法、客户端、服务器及网络系统 | |
CN107077483A (zh) | 共享文件夹和文件的同步 | |
CN107045530A (zh) | 一种将对象存储系统实现为本地文件系统的方法 | |
CN110401724A (zh) | 文件管理方法、文件传输协议服务器及存储介质 | |
CN104426955A (zh) | 共享文件的处理方法及云存储服务器 | |
US20140304384A1 (en) | Uploading large content items | |
CN108694331B (zh) | 一种数据存储方法、装置、系统及计算机可读存储介质 | |
KR20100067976A (ko) | 분산 저장된 컨텐츠 파일의 동기화 방법 | |
CN109525622B (zh) | 分片资源id的生成方法、资源分享方法,装置及电子设备 | |
CN105812469A (zh) | 一种通讯录同步方法及装置 | |
US20150163326A1 (en) | Approaches for remotely unzipping content | |
US20240289273A1 (en) | Nft systems, methods, and structures | |
CN109213955B (zh) | 数据处理方法及相关设备 | |
CN107613016A (zh) | 文件批量下载方法、客户端、分发服务器及系统 | |
US20220318201A1 (en) | Accessing network based content items by a mobile device while offline | |
CN114238240B (zh) | 一种分布式多集群的数据存储方法、装置及存储介质 | |
US20230125637A1 (en) | Enhanced co-authoring and file syncing | |
CN110636092B (zh) | 一种内容访问系统、方法及内容服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191001 |
|
RJ01 | Rejection of invention patent application after publication |