CN111666257B - 一种文件分片存储的方法、装置、设备和存储介质 - Google Patents

一种文件分片存储的方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN111666257B
CN111666257B CN202010494105.2A CN202010494105A CN111666257B CN 111666257 B CN111666257 B CN 111666257B CN 202010494105 A CN202010494105 A CN 202010494105A CN 111666257 B CN111666257 B CN 111666257B
Authority
CN
China
Prior art keywords
file
stored
storage
under
character
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.)
Active
Application number
CN202010494105.2A
Other languages
English (en)
Other versions
CN111666257A (zh
Inventor
黄志敏
吕蓉
李屹秦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Construction Bank Corp
Original Assignee
China Construction Bank Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Construction Bank Corp filed Critical China Construction Bank Corp
Priority to CN202010494105.2A priority Critical patent/CN111666257B/zh
Publication of CN111666257A publication Critical patent/CN111666257A/zh
Application granted granted Critical
Publication of CN111666257B publication Critical patent/CN111666257B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种文件分片存储的方法、装置、设备和存储介质。其中,该方法包括:生成待存储文件在预设存储上限对应的指定进制下的字符编码,所述字符编码下的每一位字符表示所述待存储文件的存储路径中在该字符位对应的目录级下的存储目录;按照所述预设存储上限以及所述存储路径下各子目录中的已存储分片数量,将待存储文件的文件分片存储在所述存储路径下的对应子目录中。本发明实施例提供的技术方案,实现了待存储文件的分片存储,能够保证待存储文件的存储路径中每一目录级下的存储目录数量不会超过预设存储上限,不需要额外保存文件分片的存储路径和文件标识的关系,避免待存储文件的存储路径的泄露,提高了文件存储的安全性。

Description

一种文件分片存储的方法、装置、设备和存储介质
技术领域
本发明实施例涉及文件存储技术,尤其涉及一种文件分片存储的方法、装置、设备和存储介质。
背景技术
文件传输平台是实现文件的分片上传、存储和合并以及提供文件的分片下载的平台,但是由于linux操作系统下的单个文件夹有文件数量限制,因此文件传输平台需要解决的一个核心问题就是大量文件分片如何有效存储。
常见的解决方法是按照上传时间存储文件分片,通过评估文件分片数量决定文件夹的细分粒度,文件存储后将文件标识(如文件名或文件编号)与对应的文件路径之间的映射关系保存到额外设置的数据库中,保证后续读取文件时,能够根据该文件标识索引对应的文件路径,或者对于不同类型的文件按照对应的业务规则存储在指定的分区中,并在分区存储时通过业务规则控制文件夹的文件数量小于可存储的最大文件数量。
但是上述方法都需要考虑文件分片存储的数量问题,容易造成单个文件夹下文件数量达到上限,导致文件读取效率低,并且需要单独保存文件路径和文件标识的映射关系,增加了额外的存储负担;同时,单独保存文件标识和文件路径之间的映射关系,或按业务规则直接指定对应的存储分区,均容易导致文件路径的泄露,使得文件存储安全性较低。
发明内容
本发明实施例提供一种文件分片存储的方法、装置、设备和存储介质,以实现文件分片的存储,避免额外保存文件分片的存储路径和文件标识的关系,提高了文件存储的安全性。
第一方面,本发明实施例提供了一种文件分片存储的方法,该方法包括:
生成待存储文件在预设存储上限对应的指定进制下的字符编码,所述字符编码下的每一位字符表示所述待存储文件的存储路径中在该字符位对应的目录级下的存储目录;
按照所述预设存储上限以及所述存储路径下各子目录中的已存储分片数量,将待存储文件的文件分片存储在所述存储路径下的对应子目录中。
第二方面,本发明实施例提供了一种文件分片存储的装置,该装置包括:
字符编码生成模块,用于生成待存储文件在预设存储上限对应的指定进制下的字符编码,所述字符编码下的每一位字符表示所述待存储文件的存储路径中在该字符位对应的目录级下的存储目录;
文件分片存储模块,用于按照所述预设存储上限以及所述存储路径下各子目录中的已存储分片数量,将待存储文件的文件分片存储在所述存储路径下的对应子目录中。
第三方面,本发明实施例提供了一种设备,该设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所述的文件分片存储的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例所述的文件分片存储的方法。
本发明实施例提供了一种文件分片存储的方法、装置、设备和存储介质,首先生成待存储文件在预设存储上限对应的指定进制下的字符编码,使得该字符编码下的每一位字符表示所述待存储文件的存储路径中在该字符位对应的目录级下的存储目录,然后按照所述预设存储上限以及所述存储路径下各子目录中的已存储分片数量,将待存储文件的文件分片存储在所述存储路径下的对应子目录中,从而实现了待存储文件的分片存储,此时预设存储上限对应的指定进制下的字符编码下的每一位字符表示待存储文件的存储路径中在该字符位对应的目录级下的存储目录,能够保证待存储文件的存储路径中每一目录级下的存储目录数量不会超过预设存储上限,而字符编码代表了待存储文件的存储路径,就不需要额外保存文件分片的存储路径和文件标识的关系,避免待存储文件的存储路径的泄露,提高了文件存储的安全性。
附图说明
图1为本发明实施例一提供的一种文件分片存储的方法的流程图;
图2为本发明实施例二提供的一种文件分片存储的方法的流程图;
图3为本发明实施例三提供的一种文件分片存储的方法的流程图;
图4为本发明实施例四提供的一种文件分片存储的装置的结构示意图;
图5为本发明实施例五提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种文件分片存储的方法的流程图,本实施例可适用于对任一文件进行分片存储的情况,本实施例提供的一种文件分片存储的方法可以由本发明实施例提供的一种文件分片存储的装置来执行,该装置可以通过软件和/或硬件的方式实现,并集成在执行本方法的设备中。
具体的,参考图1,该方法具体包括如下步骤:
S110,生成待存储文件在预设存储上限对应的指定进制下的字符编码,所述字符编码下的每一位字符表示所述待存储文件的存储路径中在该字符位对应的目录级下的存储目录。
其中,待存储文件可以为数据量较大的文件,基于文件存储过程中,要把文件上传成功后才能进行存储,而文件数据量较大时,上传花费时间较长的原因,通常采用将文件划分为文件分片,然后对文件分片进行存储的方法,对待存储文件进行分片上传和存储,此时考虑到单个文件夹下对文件分片的数量有最大限值要求,以及文件分片存储的安全性问题,该最大限值为本实施例中的预设存储上限,首先根据单个文件夹下文件数量的预设存储上限,生成待存储文件在该预设存储上限对应的指定进制下的字符编码,由于不同进制下的每一进制位的字符均存在该进制位具体大小所对应的这么多种可能,例如二进制下的每一位均存在0和1两种可能,从而限制了每一进制位最多只能有这么多种可能性,因此本实施例针对单个文件夹下文件分片存储数量的预设存储上限的限制,可以根据预设存储上限选择相应的指定进制来对待存储文件进行命名,此时通过指定进制为待存储文件生成的字符编码,在指定进制下的每一进制位上均可以用预设存储上限的不同字符表示,用来表征待存储文件的存储过程中,单个文件夹下文件分片的数量不会超过预设存储上限,从而使待存储文件在预设存储上限对应的指定进制下的字符编码和待存储文件的存储路径是对应关系,该字符编码下的每一位字符都可以表示待存储文件的存储路径中在该字符位对应的目录级下的存储目录,将生成的字符编码作为待存储文件的存储路径,既保证了文件分片的数量不会超过最大限值要求,也避免了再额外保存文件分片的存储路径和文件标识的关系,不会导致存储路径的泄露。此时,单个文件夹下文件分片数量的预设存储上限可以是系统对单个文件夹中可以存储的文件数量的要求,单个文件夹下最多只能存放该预设存储上限的文件数量。
可选的,单个文件夹下文件分片数量的预设存储上限可以是不同的。以linux系统为例,linux系统下单个文件夹下的文件数量的预设存储上限为1024,按照该预设存储上限也就是1024,生成待存储文件在1024进制下的字符编码,该字符编码下的每一位字符代表待存储文件的存储路径中在该字符位对应的目录级下的存储目录。例如:假设某一个待存储文件的1024进制下的字符编码有7位字符,那么该待存储文件的存储目录共有7级,这7位字符也代表了该待存储文件的存储路径,从最高位到最低位开始第1位字符代表该待存储文件在该存储路径对应的第1级目录下的存储目录,第2位字符代表该待存储文件在该存储路径对应的的第2级目录下的存储目录,以此类推,第7位字符也就代表该待存储文件在该存储路径对应的第7级目录下的存储目录。这样设置的好处是,不需要额外保存文件分片的存储路径和文件标识之间的关系,不会增加存储负担,并且用待存储文件的字符编码代表待存储文件的存储路径,不容易被识别和破解,提高了文件存储的安全性。待存储文件的存储路径确定好之后,可以保证后续文件分片存储过程的顺利进行。
S120,按照所述预设存储上限以及所述存储路径下各子目录中的已存储分片数量,将待存储文件的文件分片存储在所述存储路径下的对应子目录中。
其中,由于待存储文件的数据量较大,那么在对待存储文件进行存储时,通常会预先在终端将待存储文件拆分成多个文件分片,然后将多个文件分片上传至服务器端,例如将待存储文件中的每个文件拆分成1兆字节(Megabyte,简称MB)的多个文件分片,这样拆分的好处是由于每个文件分片的数据量较小,在上传时可以同时多线程并发写入,提高传输的效率,节省时间。此时,将待存储文件的多个文件分片上传至服务器端后,需要对每一文件分片进行存储,具体的,由于文件分片的数量较多,如果直接将文件分片存储在待存储文件的存储路径下,会导致文件夹下的文件分片数量超出预设存储上限,从而出现存储失败的情况,因此要将每一文件分片存储在存储路径下的各子目录中。
具体的,存储路径下各子目录可以为在待存储文件的存储路径中最后一级目录级下的存储目录中新建的子目录,命名方式可以为00,01,…。此时,由于存储路径下各子目录中可以存储的文件数量有预设存储上限,超过该预设存储上限之后就不能存储在该存储路径下的当前子目录中,且该存储路径下各子目录中可能已经存储了一些文件分片,那么就需要根据预设存储上限和存储路径下各子目录中的已存储分片数量,将待存储文件的文件分片存储在存储路径下的对应子目录中。
可选的,针对所述待存储文件的每一文件分片,如果所述待存储文件的存储路径下的当前子目录的已存储分片数量小于所述预设存储上限,则将该文件分片存储在所述当前子目录中,否则,将所述待存储文件的存储路径下的下一子目录作为新的当前子目录,并将该文件分片存储在所述新的当前子目录中。
具体的,如果待存储文件的存储路径下的当前子目录的已存储分片数量小于预设存储上限,代表当前子目录中还没有存满预预设存储上限的文件分片,还可以进行文件分片的存储,那么就将该文件分片存储在当前子目录中;如果待存储文件的存储路径下的当前子目录的已存储分片数量等于预设存储上限,代表当前子目录中已经存满预预设存储上限的文件分片,当前子目录中不能进行文件分片的存储,那么就将待存储文件的存储路径下的下一子目录作为新的当前子目录,并将该文件分片存储在新的当前子目录中。将待存储文件的存储路径下的下一子目录作为新的当前子目录,是对当前子目录的更新,这样做的好处是,在存储文件分片的过程中,不需要对前面已经存满文件分片的子目录一一进行判断,避免时间的浪费。
示例性的,在文件分片存储过程中,预设存储上限可以是1024,也可以是其他数值。当预设存储上限是1024时,如果待存储文件的存储路径下的当前子目录的已存储分片数量小于1024,就将该文件分片存储在当前子目录中,如果待存储文件的存储路径下的当前子目录的已存储分片数量等于1024,代表当前子目录中已存储的文件分片的数量达到了预设存储上限,因此就将待存储文件的存储路径下的下一子目录作为新的当前子目录,并将该文件分片存储在新的当前子目录中。例如,假设当前子目录是待存储文件的存储路径中新建的子目录00,如果当前子目录00中已存储的文件分片的数量达到了预设存储上限1024,就将待存储文件的存储路径下的下一子目录01作为新的当前子目录。这样设置可以方便后续文件分片的存储,由于存储路径下各子目录中可以存储的文件数量不大于预设存储上限,保证了单个文件夹下存储的文件分片数量不会超过上限,提高了文件的读取效率。
此外,还可以通过对文件分片序号除以预设存储上限得到的结果取整,进而确定该文件分片应该存储在存储路径下的哪一个子目录。
具体的,文件分片序号可以是预先定义好的文件分片编号,例如0,1,2,3,4,…2000,…。例如,当预设存储上限是1024时,通过对文件分片序号/1024的结果进行取整,将得到的数值作为文件分片应该存储的存储路径下的子目录编号。
示例性的,假设文件分片序号是1025,预设存储上限是1024,将1025/1024的结果进行取整得到的数字是1,也就代表了文件分片序号是1025的文件分片应该存储在存储路径下的01子目录中。
本实施例提供的技术方案,首先生成待存储文件在预设存储上限对应的指定进制下的字符编码,使得该字符编码下的每一位字符表示所述待存储文件的存储路径中在该字符位对应的目录级下的存储目录,然后按照所述预设存储上限以及所述存储路径下各子目录中的已存储分片数量,将待存储文件的文件分片存储在所述存储路径下的对应子目录中,从而实现了待存储文件的分片存储,此时预设存储上限对应的指定进制下的字符编码下的每一位字符表示待存储文件的存储路径中在该字符位对应的目录级下的存储目录,能够保证待存储文件的存储路径中每一目录级下的存储目录数量不会超过预设存储上限,而字符编码代表了待存储文件的存储路径,就不需要额外保存文件分片的存储路径和文件标识的关系,避免待存储文件的存储路径的泄露,提高了文件存储的安全性。
实施例二
图2为本发明实施例二提供的一种文件分片存储的方法的流程图,本发明实施例是在上述实施例的基础上进行优化。可选的,本实施例对生成待存储文件在预设存储上限对应的指定进制下的字符编码的过程进行详细的解释说明。
具体的,参见图2,本实施例的方法具体可以包括:
S210,获取待存储文件的初始编号。
其中,待存储文件的初始编号可以为根据雪花算法生成的身份标识码(Identity,简称ID),该ID可以是64位的整数,每一位数字用0或1表示。
具体的,根据雪花算法生成的64位的初始编号中,第1位最高位固定为0;第2-42位共41位用来记录时间戳;第43-52位共10位用来记录工作机器的身份标识码;第53-64位共12位用来记录同毫秒内产生的不同身份标识码。通过雪花算法生成待存储文件的初始编号,可以保证:所有生成的各个待存储文件的初始编号按时间趋势递增且整个系统内不会产生重复的待存储文件的初始编号。
示例性的,待存储文件的初始编号可以为64位的数字,通过该64位的数字可以表示一亿亿的文件,满足了有些文件的数据量较大的要求,基本上可以满足现有的文件的需求。
S220,对待存储文件的初始编号执行预设存储上限对应的指定进制下的进制转换,得到待存储文件在所述指定进制下的字符编码,所述字符编码下的每一位字符表示所述待存储文件的存储路径中在该字符位对应的目录级下的存储目录。
具体的,在生成待存储文件在预设存储上限对应的指定进制下的字符编码的过程中,由于待存储文件的初始编号代表了待存储文件,所以要在获取到待存储文件的初始编号后,才能对初始编号进行预设存储上限对应的指定进制下的进制转换,从而能够得到待存储文件在指定进制下的字符编码,其中,该字符编码下的每一位字符表示待存储文件的存储路径中在该字符位对应的目录级下的存储目录。
示例性的,如果预设存储上限是1024,在获取待存储文件的初始编号后,对该初始编号进行1024进制下的进制转换,而待存储文件的初始编号是64位的整数,相应的,对该64位的整数进行1024进制下的进制转换后也就得到了7位的字符编码,此时该7位字符编码可以代表待存储文件的存储路径,且每一位字符表示待存储文件的存储路径中在该字符位对应的目录级下的存储目录。
可选的,由于指定进制表示每一进制位上需要存在预设存储上限的不同字符来分别表示该进制位的具体大小,此时如果指定进制过大,则可能不存在那么多的不同字符来表示每一进制位的内容,因此本实施例对待存储文件的初始编号执行预设存储上限对应的指定进制下的进制转换时,首先需要考虑能否存在相应的不同字符来对指定进制下的每一进制位进行表示,也就是对待存储文件的初始编号执行预设存储上限对应的指定进制下的进制转换,得到待存储文件在所述指定进制下的字符编码,可以具体包括:如果预设字符命名规则无法支持所述指定进制下的字符编码,则采用所述预设字符命名规则支持,且与所述指定进制匹配的目标进制对待存储文件的初始编号进行进制转换,得到待存储文件在所述目标进制下的字符编码;根据所述指定进制与所述目标进制之间的匹配关系,确定所述指定进制下的字符编码中每一位字符在所述目标进制下的字符编码中的映射位字符。
具体的,如果预设字符命名规则无法支持指定进制下的字符编码,也就是说指定进制下的字符编码无法用现有的预设字符命名规则来表示,例如现有的字符命名规则中,无法用1024个不同字符来表示1024进制下的字符编码,那么就采用预设字符命名规则支持,且与指定进制匹配的目标进制对待存储文件的初始编号进行进制转换,得到待存储文件在目标进制下的字符编码,此时目标进制与指定进制匹配,代表目标进制和指定进制之间可以相互转换,且转换得到的结果是唯一的,然后根据指定进制与目标进制之间的匹配关系,确定指定进制下的字符编码中每一位字符在目标进制下的字符编码中的映射位字符,映射位字符是指目标进制下的字符编码的每一位字符在制定进制下的字符编码中都有字符与之进行对应。
示例性的,如果预设上限是1024,得到的7位字符编码就是1024进制下的7位数字,也就意味着要用1024个字符来表征这7位字符编码,而常用的预设字符命名规则也就是利用字母和数字来进行命名,而现有的数字0-9,大写字母A-Z和小写字母a-z无法支持1024进制下的字符编码表示,因此要选用预设字符命名规则支持,且与1024进制匹配的目标进制对待存储文件的初始编号也就是64位的整数进行进制转换,得到待存储文件在目标进制下的字符编码。
可选的,目标进制可以为能够对指定进制下的每一进制位进行不同字符数量下的完整替换的其他进制,例如2进制和32进制等,此时如果指定进制为1024进制,那么1024进制下的每一进制位上的字符均可以由10个2进制位的字符表示,也可以由2个32进制位的字符表示。优选的,本实施例以32进制为目标进制,来对待存储文件的初始编号进行进制转换,得到待存储文件在目标进制下也就是32进制下的字符编码。
示例性的,得到待存储文件在32进制下的字符编码的过程如下所示:
1)对待存储文件的初始编号进行1024进制转换,也就是将64位的整数进行1024进制转换,由于预设字符命名规则不支持1024进制的字符表示,所以1024进制转换不成功,无法得到7位1024进制下的数;
2)对待存储文件的初始编号进行2进制转换,得到了70位2进制数,其中每10位的2进制数代表1024进制中的一位数,这10位2进制数又可以分为高5位2进制数和低5位2进制数;
3)对每10位2进制数的高5位和低5位分别进行32进制转换,并采用0-9、A-V共32个字符进行比表示,其中A代表32进制中的10,B代表32进制中的11,…,V代表32进制中的31,最后得到了32进制下的14位字符,按照高位在前,低位在后的原则,组成14位字符编码,例如CG/B2/AF/DE/C0/G1/01。
进一步的,在得到待存储文件在目标进制下即32进制下的字符编码之后,根据指定进制即1024进制与目标进制即32进制之间的匹配关系,1024进制下的字符编码中每一位字符在32进制下的字符编码中的映射位字符是2位字符,例如CG/B2/AF/DE/C0/G1/01中,1024进制下的字符编码中第一位字符在32进制下的字符编码中的映射位字符是CG。由于指定进制下的字符编码代表了待存储文件的存储路径,同样的目标进制下的字符编码也能够代表待存储文件的存储路径,不同的是指定进制下的字符编码每一位代表待存储文件的一级存储目录,而目标进制下的字符编码每两位代表待存储文件的一级存储目录,且指定进制下的字符编码与目标进制下的字符编码是一一对应的关系。通过这一过程,最终得到的待存储文件的目标进制下的字符编码不仅与待存储文件的指定进制匹配,而且能够用预设字符来命名目标进制下的字符编码。
本实施例通过对待存储文件的文件路径进行设置,保证了后续文件分片存储过程的顺利进行。
S230,按照所述预设存储上限以及所述存储路径下各子目录中的已存储分片数量,将待存储文件的文件分片存储在所述存储路径下的对应子目录中。
本实施例提供的技术方案,首先获取待存储文件的初始编号,然后对待存储文件的初始编号执行预设存储上限对应的指定进制下的进制转换,得到待存储文件在所述指定进制下的字符编码,使得该字符编码下的每一位字符表示所述待存储文件的存储路径中在该字符位对应的目录级下的存储目录,最后按照所述预设存储上限以及所述存储路径下各子目录中的已存储分片数量,将待存储文件的文件分片存储在所述存储路径下的对应子目录中,从而实现了待存储文件的分片存储,此时预设存储上限对应的指定进制下的字符编码下的每一位字符表示待存储文件的存储路径中在该字符位对应的目录级下的存储目录,能够保证待存储文件的存储路径中每一目录级下的存储目录数量不会超过预设存储上限,而字符编码代表了待存储文件的存储路径,就不需要额外保存文件分片的存储路径和文件标识的关系,避免待存储文件的存储路径的泄露,提高了文件存储的安全性。
实施例三
图3为本发明实施例三提供的一种文件分片存储的方法的流程图,本发明实施例是在上述实施例的基础上进行优化。可选的,本实施例对待存储文件的文件分片的合并过程进行详细的解释说明。
具体的,参见图3,本实施例的方法具体可以包括:
S310,生成待存储文件在预设存储上限对应的指定进制下的字符编码,所述字符编码下的每一位字符表示所述待存储文件的存储路径中在该字符位对应的目录级下的存储目录。
S320,按照所述预设存储上限以及所述存储路径下各子目录中的已存储分片数量,将待存储文件的文件分片存储在所述存储路径下的对应子目录中。
S330,当检测到所述待存储文件的文件分片全部存储成功时,对所述待存储文件的文件分片进行合并。
其中,所述待存储文件的文件分片全部存储成功,是指待存储文件的最后一个文件分片存储在存储路径下的对应子目录中。
具体的,在收到待存储文件的最后一个文件分片存储成功后,就形成文件分片合并的触发动作,对待存储文件的文件分片进行合并。
可选的,对待存储文件的文件分片进行合并,可以为先将存储路径下所有子目录中的文件分片进行合并得到每个子目录下合并后的文件,然后按照子目录的顺序将每个子目录下合并后的文件再进行合并,最终得到一个完整的文件,也就是待存储文件。
示例性的,假设将待存储文件拆分成102400个文件分片,将这102400个文件分片分别存储在存储路径下的100个子目录中,子目录的名称分别为00,01,…,99。每个子目录中分别存储1024个文件分片,那么在最后一个文件分片存储在100这个子目录中之后,就形成了文件分片合并的触发动作,接着要对待存储文件的文件分片进行合并,那么首先将100个子目录下的文件分片进行合并得到100个子目录下合并后的文件,然后按照子目录的顺序把00,01,…,99这100个子目录下合并后的文件再进行合并,最终就得按到了待存储文件。对待存储文件的文件分片进行合并的好处是,提供一个完整的文件,方便后续对文件进行查看。
需要说明的是,在对待存储文件的文件分片进行合并的过程中,还可以两两合并相邻子目录下的文件分片,或者按照每四个相邻子目录进行一次合并的方法进行合并,本实施例对此不做限制。
可选的,在对待存储文件的文件分片进行合并之后,还可以判断是否需要对文件分片进行清理。
示例性的,如果是文件分片合并完成即开始清理,就是在文件分片合并成原始的待存储文件后立刻删除所有的文件分片,这样设置的好处是可以释放内存,便于存储更多的文件。而如果是保留文件分片,就在文件分片合并成原始的待存储文件后保留所有的文件分片。
本实施例提供的技术方案,首先生成待存储文件在预设存储上限对应的指定进制下的字符编码,使得该字符编码下的每一位字符表示所述待存储文件的存储路径中在该字符位对应的目录级下的存储目录,接着按照所述预设存储上限以及所述存储路径下各子目录中的已存储分片数量,将待存储文件的文件分片存储在所述存储路径下的对应子目录中,最后当检测到所述待存储文件的文件分片全部存储成功时,对所述待存储文件的文件分片进行合并,从而实现了待存储文件的分片存储,此时预设存储上限对应的指定进制下的字符编码下的每一位字符表示待存储文件的存储路径中在该字符位对应的目录级下的存储目录,能够保证待存储文件的存储路径中每一目录级下的存储目录数量不会超过预设存储上限,而字符编码代表了待存储文件的存储路径,就不需要额外保存文件分片的存储路径和文件标识的关系,避免待存储文件的存储路径的泄露,提高了文件存储的安全性。
实施例四
图4为本发明实施例四提供的一种文件分片存储的装置的结构示意图,如图4所示,该装置可以包括:
字符编码生成模块410,用于生成待存储文件在预设存储上限对应的指定进制下的字符编码,所述字符编码下的每一位字符表示所述待存储文件的存储路径中在该字符位对应的目录级下的存储目录;
文件分片存储模块420,用于按照所述预设存储上限以及所述存储路径下各子目录中的已存储分片数量,将待存储文件的文件分片存储在所述存储路径下的对应子目录中。
本实施例提供的技术方案,首先生成待存储文件在预设存储上限对应的指定进制下的字符编码,使得该字符编码下的每一位字符表示所述待存储文件的存储路径中在该字符位对应的目录级下的存储目录,然后按照所述预设存储上限以及所述存储路径下各子目录中的已存储分片数量,将待存储文件的文件分片存储在所述存储路径下的对应子目录中,从而实现了待存储文件的分片存储,此时预设存储上限对应的指定进制下的字符编码下的每一位字符表示待存储文件的存储路径中在该字符位对应的目录级下的存储目录,能够保证待存储文件的存储路径中每一目录级下的存储目录数量不会超过预设存储上限,而字符编码代表了待存储文件的存储路径,就不需要额外保存文件分片的存储路径和文件标识的关系,避免待存储文件的存储路径的泄露,提高了文件存储的安全性。
进一步的,上述文件分片存储模块420,可以具体用于:
针对所述待存储文件的每一文件分片,如果所述待存储文件的存储路径下的当前子目录的已存储分片数量小于所述预设存储上限,则将该文件分片存储在所述当前子目录中,否则,将所述待存储文件的存储路径下的下一子目录作为新的当前子目录,并将该文件分片存储在所述新的当前子目录中。
进一步的,上述字符编码生成模块410,可以具体用于:
获取待存储文件的初始编号;
对待存储文件的初始编号执行预设存储上限对应的指定进制下的进制转换,得到待存储文件在所述指定进制下的字符编码。
进一步的,上述字符编码生成模块410,还可以具体用于:
如果预设字符命名规则无法支持所述指定进制下的字符编码,则采用所述预设字符命名规则支持,且与所述指定进制匹配的目标进制对待存储文件的初始编号进行进制转换,得到待存储文件在所述目标进制下的字符编码;
根据所述指定进制与所述目标进制之间的匹配关系,确定所述指定进制下的字符编码中每一位字符在所述目标进制下的字符编码中的映射位字符。
进一步的,上述文件分片存储的装置,还可以包括:
文件分片合并模块,用于当检测到所述待存储文件的文件分片全部存储成功时,对所述待存储文件的文件分片进行合并。
本发明实施例提供的文件分片存储的装置可执行本发明任意实施例所提供的文件分片存储的方法,具备相应的功能和有益效果。
实施例五
图5为本发明实施例五提供的一种设备的结构示意图,如图5所示,该设备包括处理器510、存储装置520和通信装置530;设备中处理器510的数量可以是一个或多个,图5中以一个处理器510为例;设备中的处理器510、存储装置520和通信装置530可以通过总线或其他方式连接,图5中以通过总线连接为例。
存储装置520作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的文件分片存储的方法对应的模块(例如,字符编码生成模块410和文件分片存储模块420)。处理器510通过运行存储在存储装置520中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的文件分片存储的方法。
存储装置520可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储装置520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置520可进一步包括相对于处理器510远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
通信装置530,用于实现服务器之间的网络连接或者移动数据连接。
本实施例提供的一种设备可用于执行上述任意实施例提供的文件分片存储的方法,具备相应的功能和有益效果。
实施例六
本发明实施例六还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种文件分片存储的方法,该方法包括:
生成待存储文件在预设存储上限对应的指定进制下的字符编码,所述字符编码下的每一位字符表示所述待存储文件的存储路径中在该字符位对应的目录级下的存储目录;
按照所述预设存储上限以及所述存储路径下各子目录中的已存储分片数量,将待存储文件的文件分片存储在所述存储路径下的对应子目录中。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的文件分片存储的方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述文件分片存储的装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (4)

1.一种文件分片存储的方法,其特征在于,包括:
生成待存储文件在预设存储上限对应的指定进制下的字符编码,所述字符编码下的每一位字符表示所述待存储文件的存储路径中在该字符位对应的目录级下的存储目录;其中,所述预设存储上限为单个文件夹下文件分片数量的预设存储上限;其中,所述单个文件夹下文件分片数量的预设存储上限不同;
按照所述预设存储上限以及所述存储路径下各子目录中的已存储分片数量,将待存储文件的文件分片存储在所述存储路径下的对应子目录中;
其中,所述按照所述预设存储上限以及所述存储路径下各子目录中的已存储分片数量,将待存储文件的文件分片存储在所述存储路径下的对应子目录中,包括:
针对所述待存储文件的每一文件分片,如果所述待存储文件的存储路径下的当前子目录的已存储分片数量小于所述预设存储上限,则将该文件分片存储在所述当前子目录中,否则,将所述待存储文件的存储路径下的下一子目录作为新的当前子目录,并将该文件分片存储在所述新的当前子目录中;其中,所述将所述待存储文件的存储路径下的下一子目录作为新的当前子目录,是对当前子目录的更新;
当检测到所述待存储文件的文件分片全部存储成功时,对所述待存储文件的文件分片进行合并;
其中,所述对所述待存储文件的文件分片进行合并,包括:
将存储路径下所有子目录中的文件分片进行合并得到每个子目录下合并后的文件;
按照子目录的顺序将每个子目录下合并后的文件再进行合并,得到待存储文件;
其中,所述生成待存储文件在预设存储上限对应的指定进制下的字符编码,包括:
获取待存储文件的初始编号;
对待存储文件的初始编号执行预设存储上限对应的指定进制下的进制转换,得到待存储文件在所述指定进制下的字符编码;
其中,所述对待存储文件的初始编号执行预设存储上限对应的指定进制下的进制转换,得到待存储文件在所述指定进制下的字符编码,包括:
如果预设字符命名规则无法支持所述指定进制下的字符编码,则采用所述预设字符命名规则支持,且与所述指定进制匹配的目标进制对待存储文件的初始编号进行进制转换,得到待存储文件在所述目标进制下的字符编码;其中,所述预设字符命名规则是指利用字母和数字进行命名;
根据所述指定进制与所述目标进制之间的匹配关系,确定所述指定进制下的字符编码中每一位字符在所述目标进制下的字符编码中的映射位字符。
2.一种文件分片存储的装置,其特征在于,包括:
字符编码生成模块,用于生成待存储文件在预设存储上限对应的指定进制下的字符编码,所述字符编码下的每一位字符表示所述待存储文件的存储路径中在该字符位对应的目录级下的存储目录;其中,所述预设存储上限为单个文件夹下文件分片数量的预设存储上限;其中,所述单个文件夹下文件分片数量的预设存储上限不同;
文件分片存储模块,用于按照所述预设存储上限以及所述存储路径下各子目录中的已存储分片数量,将待存储文件的文件分片存储在所述存储路径下的对应子目录中;
其中,所述文件分片存储模块,具体用于:
针对所述待存储文件的每一文件分片,如果所述待存储文件的存储路径下的当前子目录的已存储分片数量小于所述预设存储上限,则将该文件分片存储在所述当前子目录中,否则,将所述待存储文件的存储路径下的下一子目录作为新的当前子目录,并将该文件分片存储在所述新的当前子目录中;其中,所述将所述待存储文件的存储路径下的下一子目录作为新的当前子目录,是对当前子目录的更新;
文件合并模块,用于当检测到所述待存储文件的文件分片全部存储成功时,对所述待存储文件的文件分片进行合并;
其中,所述文件合并模块,具体用于:
将存储路径下所有子目录中的文件分片进行合并得到每个子目录下合并后的文件;
按照子目录的顺序将每个子目录下合并后的文件再进行合并,得到待存储文件;
其中,所述字符编码生成模块,具体用于:
获取待存储文件的初始编号;
对待存储文件的初始编号执行预设存储上限对应的指定进制下的进制转换,得到待存储文件在所述指定进制下的字符编码;
其中,所述字符编码生成模块,还可以具体用于:
如果预设字符命名规则无法支持所述指定进制下的字符编码,则采用所述预设字符命名规则支持,且与所述指定进制匹配的目标进制对待存储文件的初始编号进行进制转换,得到待存储文件在所述目标进制下的字符编码;其中,所述预设字符命名规则是指利用字母和数字进行命名;
根据所述指定进制与所述目标进制之间的匹配关系,确定所述指定进制下的字符编码中每一位字符在所述目标进制下的字符编码中的映射位字符。
3.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1所述的文件分片存储的方法。
4.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1所述的文件分片存储的方法。
CN202010494105.2A 2020-06-03 2020-06-03 一种文件分片存储的方法、装置、设备和存储介质 Active CN111666257B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010494105.2A CN111666257B (zh) 2020-06-03 2020-06-03 一种文件分片存储的方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010494105.2A CN111666257B (zh) 2020-06-03 2020-06-03 一种文件分片存储的方法、装置、设备和存储介质

Publications (2)

Publication Number Publication Date
CN111666257A CN111666257A (zh) 2020-09-15
CN111666257B true CN111666257B (zh) 2024-03-19

Family

ID=72385722

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010494105.2A Active CN111666257B (zh) 2020-06-03 2020-06-03 一种文件分片存储的方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN111666257B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113609090B (zh) * 2021-08-06 2024-06-18 杭州网易云音乐科技有限公司 数据存储方法及装置、计算机可读存储介质、电子设备
CN114301779B (zh) * 2021-12-15 2024-03-19 迈普通信技术股份有限公司 一种镜像文件配置方法、装置,ap设备及网络系统

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1752976A (zh) * 2004-09-22 2006-03-29 精工爱普生株式会社 文件管理程序、数据结构及文件管理装置
CN105279258A (zh) * 2015-10-21 2016-01-27 Tcl集团股份有限公司 一种均衡分布的文件存储方法及系统
CN106547911A (zh) * 2016-11-25 2017-03-29 长城计算机软件与系统有限公司 一种海量小文件的存取方法和系统
CN106708822A (zh) * 2015-07-20 2017-05-24 方正国际软件(北京)有限公司 一种文件存储方法和装置
CN107315547A (zh) * 2017-07-18 2017-11-03 郑州云海信息技术有限公司 一种读取分布式元数据文件的方法及装置
CN109977077A (zh) * 2019-03-25 2019-07-05 腾讯科技(深圳)有限公司 模型文件存储方法、装置、可读存储介质和计算机设备
CN110377561A (zh) * 2019-07-19 2019-10-25 深圳前海微众银行股份有限公司 一种文件管理方法及装置
CN110389940A (zh) * 2019-07-19 2019-10-29 苏州浪潮智能科技有限公司 一种数据均衡方法、装置和计算机可读存储介质
CN111008185A (zh) * 2019-10-29 2020-04-14 厦门网宿有限公司 一种数据共享方法、系统及设备
CN111078653A (zh) * 2019-10-29 2020-04-28 厦门网宿有限公司 一种数据存储方法、系统及设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8738580B2 (en) * 2008-07-23 2014-05-27 Nvidia Corporation Copying files from one directory to another

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1752976A (zh) * 2004-09-22 2006-03-29 精工爱普生株式会社 文件管理程序、数据结构及文件管理装置
CN106708822A (zh) * 2015-07-20 2017-05-24 方正国际软件(北京)有限公司 一种文件存储方法和装置
CN105279258A (zh) * 2015-10-21 2016-01-27 Tcl集团股份有限公司 一种均衡分布的文件存储方法及系统
CN106547911A (zh) * 2016-11-25 2017-03-29 长城计算机软件与系统有限公司 一种海量小文件的存取方法和系统
CN107315547A (zh) * 2017-07-18 2017-11-03 郑州云海信息技术有限公司 一种读取分布式元数据文件的方法及装置
CN109977077A (zh) * 2019-03-25 2019-07-05 腾讯科技(深圳)有限公司 模型文件存储方法、装置、可读存储介质和计算机设备
CN110377561A (zh) * 2019-07-19 2019-10-25 深圳前海微众银行股份有限公司 一种文件管理方法及装置
CN110389940A (zh) * 2019-07-19 2019-10-29 苏州浪潮智能科技有限公司 一种数据均衡方法、装置和计算机可读存储介质
CN111008185A (zh) * 2019-10-29 2020-04-14 厦门网宿有限公司 一种数据共享方法、系统及设备
CN111078653A (zh) * 2019-10-29 2020-04-28 厦门网宿有限公司 一种数据存储方法、系统及设备

Also Published As

Publication number Publication date
CN111666257A (zh) 2020-09-15

Similar Documents

Publication Publication Date Title
CN111666257B (zh) 一种文件分片存储的方法、装置、设备和存储介质
US8140625B2 (en) Method for operating a fixed prefix peer to peer network
CN108376171B (zh) 大数据快速导入的方法、装置、终端设备及存储介质
CN106599111B (zh) 一种数据管理方法及存储系统
CN107862047B (zh) 基于多个数据源的自然人数据处理方法和系统
CN103077208B (zh) 统一资源定位符匹配处理方法及装置
CN104572727A (zh) 一种数据查询方法及装置
CN103942292A (zh) 虚拟机镜像文件处理方法、装置及系统
CN109409079B (zh) 弱口令核查方法及装置
EP2511834A1 (en) Method of encoding a data identifier
CN107748739B (zh) 一种短信文本模版的提取方法及相关装置
CN111061681A (zh) 一种基于大小写不敏感的目录分片方法、装置及存储介质
CN110930145A (zh) 冷钱包生成方法、交易信息处理方法、设备及存储介质
US10700934B2 (en) Communication control device, communication control method, and computer program product
CN116578746A (zh) 对象去重方法及装置
US10673624B2 (en) Communication control device, communication control method, and computer program product
CN115865843A (zh) 规则存储方法、报文处理方法、装置、电子设备及介质
CN111680303A (zh) 漏洞扫描方法、装置、存储介质及电子设备
CN108984780B (zh) 基于支持重复键值树数据结构管理磁盘数据的方法和装置
CN114385624A (zh) 编码方法、编码查找方法、装置、电子设备及存储介质
CA2934041C (en) Reconciling volumelets in volume cohorts
CN112579566A (zh) 分布式id的生成方法及装置
KR101893566B1 (ko) 순환 차족을 활용한 데이터 분산 저장 장치 및 방법
CN107688567B (zh) 一种索引存储方法及相关装置
CN111858609B (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
TA01 Transfer of patent application right

Effective date of registration: 20220920

Address after: 25 Financial Street, Xicheng District, Beijing 100033

Applicant after: CHINA CONSTRUCTION BANK Corp.

Address before: 25 Financial Street, Xicheng District, Beijing 100033

Applicant before: CHINA CONSTRUCTION BANK Corp.

Applicant before: Jianxin Financial Science and Technology Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant