文件移动方法、装置及存储介质转让专利

申请号 : CN201910561910.X

文献号 : CN110275863A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 高宇陈二奇申航

申请人 : 北京达佳互联信息技术有限公司

摘要 :

本公开是关于一种文件移动方法、装置及存储介质,属于互联网技术领域。方法包括:检测文件存储系统中至少一个文件的元数据,文件中记录有文件所属目录的目录标识;当检测到指定文件的元数据异常时,获取指定文件中记录的指定目录标识;将指定文件移动至预设目录中的指定目录下,指定目录以指定目录标识命名。本公开实施例提供的方法,当文件的元数据发生异常而导致文件的存储路径无法确定时,通过在预设目录中创建指定目录,将文件移动至该指定目录下,实现了文件的区分存储,避免了将多个文件均存储于预设目录下的问题,无需花费较长的时间即可查找到要处理的文件,缩短了耗时,降低了文件的处理难度,避免了目录无法恢复的问题。

权利要求 :

1.一种文件移动方法,其特征在于,所述方法包括:

检测文件存储系统中至少一个文件的元数据,所述文件中记录有所述文件所属目录的目录标识;

当检测到指定文件的元数据异常时,获取所述指定文件中记录的指定目录标识,所述指定文件为所述文件存储系统中的任一个文件;

将所述指定文件移动至预设目录中的指定目录下,所述指定目录以所述指定目录标识命名,所述预设目录用于存储元数据异常的文件。

2.根据权利要求1所述的方法,其特征在于,所述文件中还包括用于唯一确定所述文件的文件标识;所述方法还包括:当检测到所述指定文件的元数据异常时,将所述指定文件的文件名称重命名为所述指定文件中的文件标识。

3.根据权利要求1所述的方法,其特征在于,所述检测文件存储系统中至少一个文件的元数据之前,所述方法还包括:在所述文件存储系统中存储任一文件时,获取所述文件所属目录的指定目录标识,添加至所述文件中。

4.根据权利要求1所述的方法,其特征在于,所述指定文件中包括多级目录标识,所述多级目录标识中,任一目录标识对应的目录位于上一级目录标识对应的目录下,且最后一级目录标识为所述指定目录标识;

所述将所述指定文件移动至预设目录中的指定目录下,包括:在所述预设目录下,确定以所述多级目录标识中第一级目录标识命名的目录;

在当前确定的目录下,继续确定以下一级目录标识命名的目录,直至确定以所述指定目录标识命名的指定目录;

将所述指定文件移动至所述指定目录下。

5.根据权利要求4所述的方法,其特征在于,所述当检测到指定文件的元数据异常时,获取所述指定文件中包括的指定目录标识之前,所述方法还包括:在所述文件存储系统中存储所述指定文件时,确定所述指定文件所属的多级目录对应的所述多级目录标识,添加至所述指定文件中。

6.根据权利要求1所述的方法,其特征在于,所述将所述指定文件移动至预设目录中的指定目录下,包括:当所述预设目录中包括以所述指定目录标识命名的指定目录时,将所述指定文件移动至所述指定目录下;或者,当所述预设目录中不包括以所述指定目录标识命名的目录时,在所述预设目录中创建以所述指定目录标识命名的指定目录,将所述指定文件移动至所述指定目录下。

7.根据权利要求1所述的方法,其特征在于,所述文件存储系统中每个文件具有预设数量的元数据副本,所述预设数量为大于1的整数;所述检测文件存储系统中至少一个文件的元数据,包括:对于所述至少一个文件中的每个文件,检测所述文件的每个元数据副本是否异常,所述文件的每个元数据副本为相同的元数据;

当所述文件的所述预设数量的元数据副本均异常时,确定所述文件的元数据异常。

8.一种文件移动装置,其特征在于,所述装置包括:

检测单元,被配置为检测文件存储系统中至少一个文件的元数据,所述文件中记录有所述文件所属目录的目录标识;

获取单元,被配置为当检测到指定文件的元数据异常时,获取所述指定文件中记录的指定目录标识,所述指定文件为所述文件存储系统中的任一个文件;

移动单元,被配置为将所述指定文件移动至预设目录中的指定目录下,所述指定目录以所述指定目录标识命名,所述预设目录用于存储元数据异常的文件。

9.一种文件移动装置,其特征在于,所述装置包括:

处理器;

用于存储所述处理器可执行命令的存储器;

其中,所述处理器被配置为执行如权利要求1-8任一项权利要求所述的文件移动方法。

10.一种存储介质,其特征在于,当所述存储介质中的指令由文件存储系统的处理器执行时,使得文件存储系统能够执行如权利要求1-7任一项权利要求所述的文件移动方法。

说明书 :

文件移动方法、装置及存储介质

技术领域

[0001] 本公开涉及互联网技术领域,尤其涉及一种文件移动方法、装置及存储介质。

背景技术

[0002] 随着互联网技术的发展,文件存储系统得到了广泛普及,通过文件存储系统可以存储大量文件。通常文件存储系统会为文件生成用于描述文件的元数据,包括文件大小、存储路径和生成时间等。一旦文件存储系统发生故障而导致文件的元数据丢失时,将无法确定文件的存储路径,此时可以通过移动文件的方式重新确定文件的存储路径。
[0003] 相关技术中提供了一种文件移动方法,在文件存储系统中创建预设目录,该预设目录用于存储已丢失元数据的文件。并且,对文件存储系统中的文件及对应的元数据进行分析,确定已丢失元数据的至少一个文件,将该至少一个文件移动至该预设目录下,该至少一个文件的存储路径即为该预设目录。
[0004] 如果存在已丢失元数据的多个文件,该多个文件均存储于该预设目录下,需要花费较长的时间才能查找到要处理的文件,耗时过长,增加了文件的处理难度,并且丢失了文件所属的目录,导致文件所属的目录无法恢复。

发明内容

[0005] 本公开提供了一种文件移动方法、装置及存储介质,可以克服相关技术中存在的增加了文件的处理难度,导致文件所属的目录无法恢复的问题。
[0006] 根据本公开实施例的第一方面,提供一种文件移动方法,所述方法包括:
[0007] 检测文件存储系统中至少一个文件的元数据,所述文件中记录有所述文件所属目录的目录标识;
[0008] 当检测到指定文件的元数据异常时,获取所述指定文件中记录的指定目录标识,所述指定文件为所述文件存储系统中的任一个文件;
[0009] 将所述指定文件移动至预设目录中的指定目录下,所述指定目录以所述指定目录标识命名,所述预设目录用于存储元数据异常的文件。
[0010] 在一种可能实现的方式中,所述文件中还包括用于唯一确定所述文件的文件标识;所述方法还包括:
[0011] 当检测到所述指定文件的元数据异常时,将所述指定文件的文件名称重命名为所述指定文件中的文件标识。
[0012] 在另一种可能实现的方式中,所述检测文件存储系统中至少一个文件的元数据之前,所述方法还包括:
[0013] 在所述文件存储系统中存储任一文件时,获取所述文件所属目录的指定目录标识,添加至所述文件中。
[0014] 在另一种可能实现的方式中,所述指定文件中包括多级目录标识,所述多级目录标识中,任一目录标识对应的目录位于上一级目录标识对应的目录下,且最后一级目录标识为所述指定目录标识;
[0015] 所述将所述指定文件移动至预设目录中的指定目录下,包括:
[0016] 在所述预设目录下,确定以所述多级目录标识中第一级目录标识命名的目录;
[0017] 在当前确定的目录下,继续确定以下一级目录标识命名的目录,直至确定以所述指定目录标识命名的指定目录;
[0018] 将所述指定文件移动至所述指定目录下。
[0019] 在另一种可能实现的方式中,所述当检测到指定文件的元数据异常时,获取所述指定文件中包括的指定目录标识之前,所述方法还包括:
[0020] 在所述文件存储系统中存储所述指定文件时,确定所述指定文件所属的多级目录对应的所述多级目录标识,添加至所述指定文件中。
[0021] 在另一种可能实现的方式中,所述将所述指定文件移动至预设目录中的指定目录下,包括:
[0022] 当所述预设目录中包括以所述指定目录标识命名的指定目录时,将所述指定文件移动至所述指定目录下;或者,
[0023] 当所述预设目录中不包括以所述指定目录标识命名的目录时,在所述预设目录中创建以所述指定目录标识命名的指定目录,将所述指定文件移动至所述指定目录下。
[0024] 在另一种可能实现的方式中,所述文件存储系统中每个文件具有预设数量的元数据副本,所述预设数量为大于1的整数;所述检测文件存储系统中至少一个文件的元数据,包括:
[0025] 对于所述至少一个文件中的每个文件,检测所述文件的每个元数据副本是否异常,所述文件的每个元数据副本为相同的元数据;
[0026] 当所述文件的所述预设数量的元数据副本均异常时,确定所述文件的元数据异常。
[0027] 在另一种可能实现的方式中,所述检测所述文件的每个元数据副本是否异常之后,所述方法还包括:
[0028] 当所述文件的第一元数据副本异常且第二元数据副本正常时,将所述第二元数据副本进行复制,将复制得到的元数据副本移动至所述第一元数据副本所属的目录下,替换所述第一元数据副本;
[0029] 其中,所述第一元数据副本和所述第二元数据副本为所述文件的任两个元数据副本。
[0030] 根据本公开实施例的第二方面,提供一种文件移动装置,所述装置包括:
[0031] 检测单元,被配置为检测文件存储系统中至少一个文件的元数据,所述文件中记录有所述文件所属目录的目录标识;
[0032] 获取单元,被配置为当检测到指定文件的元数据异常时,获取所述指定文件中记录的指定目录标识,所述指定文件为所述文件存储系统中的任一个文件;
[0033] 移动单元,被配置为将所述指定文件移动至预设目录中的指定目录下,所述指定目录以所述指定目录标识命名,所述预设目录用于存储元数据异常的文件。
[0034] 在一种可能实现的方式中,所述文件中还包括用于唯一确定所述文件的文件标识,所述获取单元包括:
[0035] 重命名子单元,被配置为当检测到所述指定文件的元数据异常时,将所述指定文件的文件名称重命名为所述指定文件中的文件标识。
[0036] 在另一种可能实现的方式中,所述装置还包括:
[0037] 第一添加单元,被配置为在所述文件存储系统中存储任一文件时,获取所述文件所属目录的指定目录标识,添加至所述文件中。
[0038] 在另一种可能实现的方式中,所述指定文件中包括多级目录标识,所述多级目录标识中,任一目录标识对应的目录位于上一级目录标识对应的目录下,且最后一级目录标识为所述指定目录标识;所述移动单元包括:
[0039] 第一确定子单元,被配置为在所述预设目录下,确定以所述多级目录标识中第一级目录标识命名的目录;在当前确定的目录下,继续确定以下一级目录标识命名的目录,直至确定以所述指定目录标识命名的指定目录;
[0040] 移动子单元,被配置为将所述指定文件移动至所述指定目录下。
[0041] 在另一种可能实现的方式中,所述装置还包括:
[0042] 第二添加单元,被配置为在所述文件存储系统中存储所述指定文件时,确定所述指定文件所属的多级目录对应的所述多级目录标识,添加至所述指定文件中。
[0043] 在另一种可能实现的方式中,所述移动单元还被配置为:
[0044] 当所述预设目录中包括以所述指定目录标识命名的指定目录时,将所述指定文件移动至所述指定目录下;
[0045] 当所述预设目录中不包括以所述指定目录标识命名的目录时,在所述预设目录中创建以所述指定目录标识命名的指定目录,将所述指定文件移动至所述指定目录下。
[0046] 在另一种可能实现的方式中,所述文件存储系统中每个文件具有预设数量的元数据副本,所述预设数量为大于1的整数;所述检测单元包括:
[0047] 检测子单元,被配置为对于所述至少一个文件中的每个文件,检测所述文件的每个元数据副本是否异常,所述文件的每个元数据副本为相同的元数据;
[0048] 第二确定子单元,被配置为当所述文件的所述预设数量的元数据副本均异常时,确定所述文件的元数据异常。
[0049] 在另一种可能实现的方式中,所述装置还包括:
[0050] 恢复单元,被配置为当所述文件的第一元数据副本异常且第二元数据副本正常时,将所述第二元数据副本进行复制,将复制得到的元数据副本移动至所述第一元数据副本所属的目录下,替换所述第一元数据副本;
[0051] 其中,所述第一元数据副本和所述第二元数据副本为所述文件的任两个元数据副本。
[0052] 根据本公开实施例的第三方面,提供一种文件移动装置,所述装置包括:
[0053] 处理器;
[0054] 用于存储所述处理器可执行命令的存储器;
[0055] 其中,所述处理器被配置为执行第一方面所述的文件移动方法。
[0056] 根据本公开实施例提供的第四方面,提供一种存储介质,当所述存储介质中的指令文件存储系统的处理器执行时,使得文件存储系统能够执行第一方面所述的文件移动方法。
[0057] 根据本公开实施例的第五方面,提供一种计算机程序产品,当所述计算机程序产品中的指令由文件存储系统的处理器执行时,使得文件存储系统能够执行第一方面所述的文件移动方法。
[0058] 本公开的实施例提供的技术方案可以包括以下有益效果:
[0059] 本公开实施例提供的方法、装置及存储介质,检测文件存储系统中至少一个文件的元数据,当检测到指定文件的元数据异常时,获取指定文件中记录的指定目录标识,将指定文件移动至预设目录中的指定目录下。通过在文件中记录所属目录的目录标识,当指定文件的元数据发生异常而导致指定文件的存储路径无法确定时,通过在预设目录中创建以指定目录标识命名的指定目录,能够将指定文件移动至该指定目录下,而不会直接移动至预设目录下。即使存储元数据异常的多个文件,也能够将每个文件存储于预设目录中文件所属的目录下,在预设目录中实现了文件的区分存储,提高了条理性,避免了将多个文件均存储于预设目录下的问题,无需花费较长的时间即可查找到要处理的文件,缩短了耗时,降低了文件的处理难度,并且保留了文件所属的目录,避免了目录无法恢复的问题。
[0060] 应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

[0061] 此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
[0062] 图1是根据一示例性实施例示出的一种实施环境的框图;
[0063] 图2是根据一示例性实施例示出的一种文件移动方法的流程图;
[0064] 图3是根据一示例性实施例示出的另一种文件移动方法的流程图;
[0065] 图4是根据一示例性实施例示出的一种目录的示意图;
[0066] 图5是根据一示例性实施例示出的另一种目录的示意图;
[0067] 图6是根据一示例性实施例示出的一种文件移动装置的框图;
[0068] 图7是根据一示例性实施例示出的另一种文件移动装置的框图;
[0069] 图8是根据一示例性实施例示出的一种服务器的结构示意图。

具体实施方式

[0070] 这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
[0071] 图1是根据一示例性实施例示出的一种实施环境的框图,如图1所示,该实施环境包括客户端101和文件存储系统102,客户端101与文件存储系统102连接。
[0072] 其中,文件存储系统102用于存储文件和文件的元数据,元数据用于对文件存储系统102中存储的文件进行描述,可以包括文件类型、存储时间、存储路径等一项或多项信息。
[0073] 上述文件存储系统102可以是为一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算服务中心等。
[0074] 例如,文件存储系统102为分布式文件系统,由多个服务器通过计算机网络相连,构成分布式文件系统,每个服务器上可以存储文件,且不同服务器上存储的文件同步。
[0075] 另外,客户端101可以是手机、笔记本电脑、平板电脑等终端或者服务器,客户端101可通过与文件存储系统102之间的连接,访问文件存储系统102中存储的文件,或者删除文件存储系统102中存储的文件,或者对文件存储系统102中的文件进行其他操作。
[0076] 图2是根据一示例性实施例示出的一种文件移动方法的流程图,如图2所示,该方法包括:
[0077] 在步骤201中,检测文件存储系统中至少一个文件的元数据,文件中记录有文件所属目录的目录标识。
[0078] 在步骤202中,当检测到指定文件的元数据异常时,获取指定文件中记录的指定目录标识,指定文件为文件存储系统中的任一个文件。
[0079] 在步骤203中,将指定文件移动至预设目录中的指定目录下,指定目录以指定目录标识命名,预设目录用于存储元数据异常的文件。
[0080] 本公开实施例提供的方法,检测文件存储系统中至少一个文件的元数据,当检测到指定文件的元数据异常时,获取指定文件中记录的指定目录标识,将指定文件移动至预设目录中的指定目录下。通过在文件中记录所属目录的目录标识,当指定文件的元数据发生异常而导致指定文件的存储路径无法确定时,通过在预设目录中创建以指定目录标识命名的指定目录,能够将指定文件移动至该指定目录下,而不会直接移动至预设目录下。即使存储元数据异常的多个文件,也能够将每个文件存储于预设目录中文件所属的目录下,在预设目录中实现了文件的区分存储,提高了条理性,避免了将多个文件均存储于预设目录下的问题,无需花费较长的时间即可查找到要处理的文件,缩短了耗时,降低了文件的处理难度,并且保留了文件所属的目录,避免了目录无法恢复的问题。
[0081] 在一种可能实现方式中,文件中还包括用于唯一确定文件的文件标识;方法还包括:
[0082] 当检测到指定文件的元数据异常时,将指定文件的文件名称重命名为指定文件中的文件标识。
[0083] 在另一种可能实现方式中,检测文件存储系统中至少一个文件的元数据之前,方法还包括:
[0084] 在文件存储系统中存储任一文件时,获取文件所属目录的指定目录标识,添加至指定文件中。
[0085] 在另一种可能实现方式中,指定文件中包括多级目录标识,多级目录标识中,任一目录标识对应的目录位于上一级目录标识对应的目录下,且最后一级目录标识为指定目录标识;
[0086] 将指定文件移动至预设目录中的指定目录下,包括:
[0087] 在预设目录下,确定以多级目录标识中第一级目录标识命名的目录;
[0088] 在当前确定的目录下,继续确定以下一级目录标识命名的目录,直至确定以指定目录标识命名的指定目录;
[0089] 将指定文件移动至指定目录下。
[0090] 在另一种可能实现方式中,当检测到指定文件的元数据异常时,获取指定文件中包括的指定目录标识之前,方法还包括:
[0091] 在文件存储系统中存储指定文件时,确定指定文件所属的多级目录对应的多级目录标识,添加至指定文件中。
[0092] 在另一种可能实现方式中,将指定文件移动至预设目录中的指定目录下,包括:
[0093] 当预设目录中包括以指定目录标识命名的指定目录时,将指定文件移动至指定目录下;或者,
[0094] 当预设目录中不包括以指定目录标识命名的目录时,在预设目录中创建以指定目录标识命名的指定目录,将指定文件移动至指定目录下。
[0095] 在另一种可能实现方式中,文件存储系统中每个文件具有预设数量的元数据副本,预设数量为大于1的整数;检测文件存储系统中至少一个文件的元数据,包括:
[0096] 对于至少一个文件中的每个文件,检测指定文件的每个元数据副本是否异常,文件的每个元数据副本为相同的元数据;
[0097] 当指定文件的预设数量的元数据副本均异常时,确定指定文件的元数据异常。
[0098] 在另一种可能实现方式中,检测指定文件的每个元数据副本是否异常之后,方法还包括:
[0099] 当指定文件的第一元数据副本异常且第二元数据副本正常时,将第二元数据副本进行复制,将复制得到的元数据副本移动至第一元数据副本所属的目录下,替换第一元数据副本;
[0100] 其中,第一元数据副本和第二元数据副本为文件的任两个元数据副本。
[0101] 图3是根据一示例性实施例示出的另一种文件移动方法的流程图,如图3所示,本公开实施例的交互主体包括客户端和文件存储系统,包括以下步骤:
[0102] 在步骤301中,客户端向文件存储系统发送文件。
[0103] 在步骤302中,文件存储系统接收到该文件时,存储该文件和该文件的元数据。
[0104] 其中,文件存储系统用于存储文件,如音频文件、视频文件、图片文件、文本文件或者其他类型的文件。
[0105] 文件具有文件名称和文件标识,不同文件的文件名称可以相同,也可以不同。文件标识存储于文件中,用于确定唯一对应的文件,具有唯一性,不同文件的文件标识不同。文件标识可以是为文件分配的inodeID(索引节点序列号)或者文件编号等。
[0106] 文件存储于一个目录下,该目录即为文件所属的目录。文件存储系统中可以创建一个根目录,还可以在根目录中创建一个或多个目录,每个目录下均可存储文件,且每个目录具有目录标识,目录标识用于确定唯一对应的目录,可以为目录的名称或编号等。
[0107] 多个目录之间可以具有层级关系,下一级目录存储于上一级目录下。对于一个特定目录来说,该特定目录中可以包括一级或多级目录,该特定目录中的目录是指该特定目录下的任一级目录。
[0108] 则对于文件来说,文件的存储路径可以包括至少一级目录,存储路径中最后一级目录即为该文件所属的目录,可以称为该文件的父目录。例如,如图4所示,文件存储于目录3下,存储路径为“根目录/…/目录1/目录2/目录3”。
[0109] 客户端与文件存储系统连接,通过该连接,可以访问文件存储系统存储的文件,从而查看文件的内容,或者还可以向文件存储系统发送文件,由文件存储系统进行存储,或者还可以对文件存储系统中存储的文件进行其他处理操作。
[0110] 在一种可能实现方式中,客户端可以显示文件存储系统提供的显示界面,该显示界面中可以包括文件存储系统中存储的文件,用户可以查看任一文件,通过客户端触发对任一文件的处理操作,客户端检测到该处理操作时,获取该文件中包含的文件标识,向文件存储系统发送与该处理操作对应的处理请求,该处理请求中携带该文件标识,则文件存储系统接收到该处理请求时,对该文件标识对应的文件进行处理操作。
[0111] 本公开实施例中以在文件存储系统上存储文件的过程为例,客户端获取到待存储的文件,向文件存储系统发送该文件,由文件存储系统存储该文件。
[0112] 在一种可能实现方式中,客户端可以显示文件存储系统提供的显示界面,该显示界面中可以包括文件存储系统中存储的文件以及用于存储文件的一个或多个目录,用户可以选择任一目录,通过客户端触发在该目录下存储文件的操作,客户端检测到该操作时,获取待存储的文件和所选择目录的目录标识,向文件存储系统发送文件存储请求,该文件存储请求携带该文件和该目录标识,则文件存储系统接收到该文件存储请求时,将该文件存储于该目录标识对应的目录下。
[0113] 其中,用户选择的目录可以为文件存储系统已经创建的目录,或者还可以为用户通过客户端新创建的目录。
[0114] 在另一种可能实现方式中,文件存储系统接收到客户端发送的文件时,确定为该客户端分配的目录,将该文件存储于该目录下。例如,客户端基于用户标识登录文件存储系统,文件存储系统为该客户端分配一个目录,并以该用户标识命名,可以将客户端上传至文件存储系统的文件存储于该目录下。
[0115] 当文件存储系统存储文件时,还会生成该文件的元数据,存储该元数据。元数据用于对文件存储系统中存储的文件进行描述,可以包括文件名称、文件类型、存储时间、存储路径等一项或多项信息。并且,该文件的元数据中包含该文件的文件标识,根据该文件标识可以确定元数据属于哪一个文件。
[0116] 例如,元数据包括存储路径,当文件存储系统发生故障而导致文件的存储路径发生变动,可根据该文件的元数据中的存储路径,将该文件移动至该存储路径下,从而恢复文件的存储路径。另外,元数据包括文件的修改时间,当对文件进行修改时,文件存储系统获取文件的修改时间,将该修改时间存储于该文件的元数据中。
[0117] 为了提高可靠性,避免文件和元数据同时丢失的情况,文件存储系统可以将文件和元数据分开存储,如元数据的存储路径与文件的存储路径不同,或者,当该文件存储系统包括多个服务器时,可将元数据和文件存储于不同的服务器中。
[0118] 需要说明的是,上述步骤301和302为可选步骤,可以执行,也可以不执行。在另一实施例中,文件存储系统可以采用其他方式获取文件后存储,如文件存储系统与管理设备连接,管理设备用于管理文件存储系统,可以由文件存储系统的管理设备将文件发送至文件存储系统,或者文件存储系统的操作人员将文件存储于文件存储系统。
[0119] 在步骤303中,文件存储系统获取文件所属目录的目录标识,添加至该文件中。
[0120] 本公开实施例中,为了在元数据丢失时也能获知文件所属的目录,当文件存储系统存储文件时,获取文件所属目录的目录标识,添加至该文件中,则根据该文件中的目录标识即可确定该文件所属的目录。例如,将目录标识记录在文件的数据头或数据体中,或者记录在文件的其他位置。
[0121] 在一种可能实现方式中,步骤303包括步骤3031:在文件存储系统中存储文件时,确定该文件所属的多级目录对应的多级目录标识,添加至该文件中。
[0122] 其中,多级目录标识中,任一目录标识对应的目录位于上一级目录标识对应的目录下,且最后一级目录标识为该文件所属目录的目录标识。
[0123] 例如,当文件存储系统确定文件所属的多级目录为三级目录时,第一级目录下包括第二级目录,第二级目录下包括第三级目录,文件存储在第三级目录下,将三级目录中每一级目录的目录标识按照顺序添加至该文件中。
[0124] 在步骤304中,文件存储系统检测文件存储系统中至少一个文件的元数据。
[0125] 文件存储系统中存储多个文件和每个文件的元数据,在文件存储系统的运行过程中,如果文件存储系统发生故障,可能会导致任一元数据发生异常,包括元数据丢失、元数据损坏导致无法读取元数据的内容,或者元数据内的文件标识丢失导致无法确定元数据所属的文件等。一旦元数据发生异常,会导致该元数据对应的文件的存储路径无法确定。
[0126] 因此,文件存储系统会检测所存储的至少一个文件的元数据,以便及时发现元数据异常的情况。
[0127] 关于检测时机,文件存储系统可以实时地进行检测,或者也可以周期性地进行检测,或者也可以在接收到检测指令时进行检测,该检测指令可以由文件存储系统的操作人员触发。
[0128] 关于检测对象,文件存储系统可以对存储的每个文件的元数据进行检测,或者还可以确定需要检测的至少一个文件,仅对确定的至少一个文件进行检测,而不再对其他文件进行检测。
[0129] 关于检测方式,对于待检测的每个文件,文件存储系统查找该文件的元数据,例如获取该文件中包含的文件标识,查找包含相同文件标识的元数据。如果未查找到该文件的元数据,则确定元数据已丢失,如果查找到该文件的元数据,则确定元数据未丢失,此时可以确定元数据未发生异常,或者还可以继续检测该元数据是否损坏,当该元数据未损坏时,确定该元数据未发生异常。
[0130] 在一种可能实现方式中,文件存储系统中每个文件具有预设数量的元数据副本,该预设数量为大于1的整数,则对于待检测的每个文件,检测文件的每个元数据副本是否异常,文件的每个元数据副本为相同的元数据;当文件的预设数量的元数据副本均异常时,确定文件的元数据异常。
[0131] 例如,文件存储系统中每个文件具有三个元数据副本,当文件系统检测文件时,检测该文件的三个元数据副本是否异常,当该三个元数据副本均异常时,确定该文件的元数据异常。
[0132] 而当文件的第一元数据副本异常且第二元数据副本正常时,将第二元数据副本进行复制,将复制得到的第二元数据副本移动至第一元数据副本所属的目录下,替换第一元数据副本。其中,第一元数据副本和第二元数据副本可以为文件的任两个元数据副本。
[0133] 在步骤305中,当检测到指定文件的元数据异常时,获取指定文件中记录的指定目录标识。
[0134] 在文件存储系统中,预先设置一个预设目录,该预设目录用于存储元数据异常的文件,当文件存储系统中的文件的元数据异常而导致指定文件的存储路径无法确定时,可以将该文件移动至该预设目录下,该文件的存储路径即为该预设目录。其中,该预设目录可以为根目录的下一级目录,例如可以为lost+found(丢失+查找)目录。或者,该预设目录还可以为根目录的下一级目录中的任一级目录。
[0135] 如果将元数据异常的文件直接存储于预设目录下,会导致预设目录下存储多个文件,当需要对某个文件进行处理时,需要在众多的文件中查找到需要处理的文件,增加了文件的处理难度。
[0136] 为了降低文件的处理难度,当检测到元数据异常的文件时,不再将文件直接存储于预设目录下,而是根据文件中记录的目录标识,创建以该目录标识命名的目录,将文件移动至创建的目录下。
[0137] 本公开实施例以指定文件为例,指定文件为文件存储系统中的任一个文件。当通过检测确定指定文件的元数据异常时,无法确定指定文件的存储路径,需要将指定文件存储于某一个目录下,以便重新确定指定文件的存储路径。
[0138] 因此,将指定文件中记录的所属目录的目录标识称为指定目录标识,文件存储系统检测到指定文件的元数据异常时,对该指定文件进行分析,获取该指定文件中记录的指定目录标识,以便后续能够将该指定文件移动至以该指定目录标识命名的指定目录下。
[0139] 在步骤306中,确定预设目录中以指定目录标识命名的指定目录,将指定文件移动至指定目录下。
[0140] 获取到指定目录标识之后,根据指定目录标识,在预设目录中确定以指定目录标识命名的指定目录,将指定文件移动至指定目录下。
[0141] 例如,如图4所示,在文件存储系统中,根目录下包括目录1,目录1下包括目录2,目录2下包括目录3,文件存储于目录3下,且该文件中包括“目录3”。当检测到该文件的元数据异常时,根据该文件中包括的“目录3”,在预设目录下创建以“目录3”命名的目录,将该文件移动至“目录3”下,如图5所示。
[0142] 在一种可能实现方式中,当预设目录中包括以指定目录标识命名的指定目录时,将指定文件移动至指定目录下;或者,当预设目录下不包括以指定目录标识命名的目录时,在预设目录下创建以指定目录标识命名的指定目录,再将指定文件移动至指定目录下。
[0143] 例如,在文件存储系统中的某一目录下存储了多个文件,该多个文件所属目录相同,因此该多个文件中包含的目录标识也相同。当该多个文件中的第一个文件的元数据异常时,先在预设目录下创建以该目录标识命名的目录,将第一个文件移动至该目录下,之后当该多个文件中的第二个文件的元数据异常时,由于预设目录下已经存储以该目录标识命名的目录,因此可以直接将第二个文件移动至该目录下。
[0144] 通过在文件中记录的所属目录的目录标识,在文件的元数据异常时,不会将文件直接移动至预设目录下,而是会将文件移动至预设目录下以该目录标识命名的目录下。如果存在元数据异常的多个文件,在预设目录中,该多个文件分别存储于自己所属的目录下,而不会直接存储于预设目录下,实现了区分存储,而且,在预设目录中,文件与目录的从属关系与元数据发生异常之前的从属关系保持一致,避免了将多个文件均存储于预设目录下的问题,无需花费较长的时间即可查找到要处理的文件,缩短了耗时,降低了文件的处理难度,并且保留了文件所属的目录,避免了目录无法恢复的问题。
[0145] 在另一种可能实现方式中,基于上述步骤3031的方案,指定文件中记录有多级目录标识,其中,在多级目录标识中,任一目录标识对应的目录位于上一级目录标识对应的目录下,且最后一级目录标识为指定目录标识。
[0146] 则步骤306可以包括步骤3061:在预设目录下,确定以多级目录标识中第一级目录标识命名的目录,在当前确定的目录下,继续确定以下一级目录标识命名的目录,直至确定以指定目录标识命名的指定目录。
[0147] 例如,指定文件中记录有三级目录标识,在预设目录下,确定以第一级目录标识命名的目录;在以第一级目录标识命名的目录下,确定以第二级目录标识命名的目录;在以第二级目录标识命名的目录下,确定以第三级目录标识命名的目录,将以第三级目录标识命名的目录确定为指定目录。
[0148] 其中,对于指定文件中包含的每一级目录标识,当预设目录中的上一级目录下包括以该级目录标识命名的目录时,确定该目录即可,而当预设目录中的上一级目录下不包括以该级目录标识命名的目录时,创建以该级目录标识命名的目录,并在新创建的目录下继续创建以下一级目录标识命名的目录,直至创建以最后一级目录标识命名的目录为止。
[0149] 在步骤307中,将指定文件的文件名称重命名为指定文件中的文件标识。
[0150] 由于在文件存储系统中,不同文件的文件名称可以相同,而文件标识不同。当将指定文件移动至预设目录中的指定目录下时,为了避免文件名称重复,便于文件的识别,将指定文件的文件名称以指定文件中的文件标识进行重命名。
[0151] 需要说明的是,本公开实施例仅是以步骤307在步骤306之后执行为例,在另一实施例中,步骤307也可以在步骤306之前执行。并且,步骤306为可选步骤,可以执行,也可以不执行。
[0152] 本公开实施例提供的方法,检测文件存储系统中至少一个文件的元数据,当检测到指定文件的元数据异常时,获取指定文件中记录的指定目录标识,将指定文件移动至预设目录中的指定目录下。通过在文件中记录所属目录的目录标识,当指定文件的元数据发生异常而导致指定文件的存储路径无法确定时,通过在预设目录中创建以指定目录标识命名的指定目录,能够将指定文件移动至该指定目录下,而不会直接移动至预设目录下。即使存储元数据异常的多个文件,也能够将每个文件存储于预设目录中文件所属的目录下,在预设目录中实现了文件的区分存储,提高了条理性,避免了将多个文件均存储于预设目录下的问题,无需花费较长的时间即可查找到要处理的文件,缩短了耗时,降低了文件的处理难度,并且保留了文件所属的目录,避免了目录无法恢复的问题。
[0153] 图6是根据一示例性实施例示出的一种文件移动装置的框图。如图6所示,该装置包括检测单元601、获取单元602和移动单元603。
[0154] 检测单元601,被配置为检测文件存储系统中至少一个文件的元数据,文件中记录有文件所属目录的目录标识;
[0155] 获取单元602,被配置为当检测到指定文件的元数据异常时,获取指定文件中记录的指定目录标识,指定文件为文件存储系统中的任一个文件;
[0156] 移动单元603,被配置为将指定文件移动至预设目录中的指定目录下,指定目录以指定目录标识命名,预设目录用于存储元数据异常的文件。
[0157] 本公开实施例提供的装置,检测文件存储系统中至少一个文件的元数据,当检测到指定文件的元数据异常时,获取指定文件中记录的指定目录标识,将指定文件移动至预设目录中的指定目录下。通过在文件中记录所属目录的目录标识,当指定文件的元数据发生异常而导致指定文件的存储路径无法确定时,通过在预设目录中创建以指定目录标识命名的指定目录,能够将指定文件移动至该指定目录下,而不会直接移动至预设目录下。即使存储元数据异常的多个文件,也能够将每个文件存储于预设目录中文件所属的目录下,在预设目录中实现了文件的区分存储,提高了条理性,避免了将多个文件均存储于预设目录下的问题,无需花费较长的时间即可查找到要处理的文件,缩短了耗时,降低了文件的处理难度,并且保留了文件所属的目录,避免了目录无法恢复的问题。
[0158] 在一种可能实现的方式中,如图7所示,文件中还包括用于唯一确定文件的文件标识,获取单元602包括::
[0159] 重命名子单元6021,被配置为当检测到指定文件的元数据异常时,将指定文件的文件名称重命名为指定文件中的文件标识。
[0160] 在另一种可能实现的方式中,如图7所示,装置还包括:
[0161] 第一添加单元604,被配置为在文件存储系统中存储任一文件时,获取文件所属目录的指定目录标识,添加至文件中。
[0162] 在另一种可能实现的方式中,如图7所示,指定文件中包括多级目录标识,多级目录标识中,任一目录标识对应的目录位于上一级目录标识对应的目录下,且最后一级目录标识为指定目录标识;移动单元603包括:
[0163] 第一确定子单元6031,被配置为在预设目录下,确定以多级目录标识中第一级目录标识命名的目录;在当前确定的目录下,继续确定以下一级目录标识命名的目录,直至确定以指定目录标识命名的指定目录;
[0164] 移动子单元6032,被配置为将指定文件移动至指定目录下。
[0165] 在另一种可能实现的方式中,如图7所示,装置还包括:
[0166] 第二添加单元605,被配置为在文件存储系统中存储指定文件时,确定指定文件所属的多级目录对应的多级目录标识,添加至指定文件中。
[0167] 在另一种可能实现的方式中,移动单元603还被配置为:
[0168] 当预设目录中包括以指定目录标识命名的指定目录时,将指定文件移动至指定目录下;
[0169] 当预设目录中不包括以指定目录标识命名的目录时,在预设目录中创建以指定目录标识命名的指定目录,将指定文件移动至指定目录下。
[0170] 在另一种可能实现的方式中,文件存储系统中每个文件具有预设数量的元数据副本,预设数量为大于1的整数;检测单元601包括:
[0171] 检测子单元6011,被配置为对于至少一个文件中的每个文件,检测文件的每个元数据副本是否异常,文件的每个元数据副本为相同的元数据;
[0172] 第二确定子单元6012,被配置为当文件的预设数量的元数据副本均异常时,确定文件的元数据异常。
[0173] 在另一种可能实现的方式中,装置还包括:
[0174] 恢复单元606,被配置为当文件的第一元数据副本异常且第二元数据副本正常时,将第二元数据副本进行复制,将复制得到的元数据副本移动至第一元数据副本所属的目录下,替换第一元数据副本;其中,第一元数据副本和第二元数据副本为文件的任两个元数据副本。
[0175] 关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,在此不再赘述。
[0176] 图8是根据一示例性实施例示出的一种服务器的结构示意图,该服务器800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processingunits,CPU)801和一个或一个以上的存储器802,其中,存储器802中存储有至少一条指令,至少一条指令由处理器801加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
[0177] 在示例性实施例中,还提供了一种存储介质,当存储介质中的指令由文件存储系统的处理器执行时,使得文件存储系统能够执行上述实施例所示的文件移动方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
[0178] 在示例性实施例中,还提供了一种计算机程序产品,当计算机程序产品中的指令由文件存储系统的处理器执行时,使得文件存储系统能够执行上述实施例所示的文件移动方法。
[0179] 需要说明的是,本公开涉及的用户信息(包括但不限于用户设备信息、用户个人信息等),均是经用户授权而采集并进行后续处理或分析的。
[0180] 本领域技术人员在考虑说明书及实践这里的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
[0181] 应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。