CN107643959B - 镜像文件处理方法和装置 - Google Patents
镜像文件处理方法和装置 Download PDFInfo
- Publication number
- CN107643959B CN107643959B CN201610575760.4A CN201610575760A CN107643959B CN 107643959 B CN107643959 B CN 107643959B CN 201610575760 A CN201610575760 A CN 201610575760A CN 107643959 B CN107643959 B CN 107643959B
- Authority
- CN
- China
- Prior art keywords
- file
- directory record
- current
- block
- storage area
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了镜像文件处理方法和装置。本申请中,当向镜像文件内添加定制文件时,如果镜像文件对应的Directory Record结构存储区域中存在满足以下条件的空白区域:大小大于或等于定制文件对应的Directory Record的大小L,则不对镜像文件进行解压缩以及重新压缩,而是直接将定制文件添加至镜像文件内的设定位置,并基于该设定位置将定制文件对应的Directory Record记录至Directory Record结构存储区域中大小大于或等于L的空白区域。这相比于现有技术,能够快速向镜像文件添加文件,提高向镜像文件添加文件的效率。
Description
技术领域
本申请涉及数据处理技术,特别涉及镜像文件处理方法和装置。
背景技术
由于互联网大数据发展的趋势,往往需要对成百上千台服务器进行操作系统(OS:Operation System)的自动安装。在OS安装过程中,经常存在对安装的OS进行定制的需求,例如加入所需程序的安装包以方便在OS安装时就自动安装好所需的程序等。
但是,为实现上述定制需求,需要向OS中的镜像文件(也称ISO镜像文件)添加上述定制需求对应的文件。目前,向OS中的镜像文件添加文件的过程具体为:先将整个镜像文件解压缩,然后在镜像文件中加入需要添加的文件,再重新对镜像文件进行压缩。通常,一个镜像文件的大小至少为3GB或4GB,可以看出目前向镜像文件添加文件的过程费时且效率低。
发明内容
本申请提供了镜像文件处理方法和装置,以实现快速向镜像文件添加文件,提高向镜像文件添加文件的效率。
本申请提供的技术方案包括:
一种镜像文件处理方法,包括:
当向镜像文件内添加定制文件时,确定所述定制文件对应的目录记录DirectoryRecord的大小L;
判断所述镜像文件对应的Directory Record结构存储区域中是否存在大小大于或等于所述L的空白区域,所述Directory Record结构存储区域用于存储所述镜像文件的Directory Record结构;
在所述镜像文件对应的Directory Record结构存储区域中存在大小大于或等于所述L的空白区域时,将所述定制文件添加至所述镜像文件内的设定位置,并将所述定制文件对应的Directory Record记录至所述空白区域。
一种镜像文件处理装置,该装置包括:
确定模块,用于当向镜像文件内添加定制文件时,确定所述定制文件对应的目录记录Directory Record的大小L;
判断模块,用于判断所述镜像文件对应的Directory Record结构存储区域中是否存在大小大于或等于所述L的空白区域,所述Directory Record结构存储区域用于存储所述镜像文件的Directory Record结构;
处理模块,用于在所述判断模块判断出所述镜像文件对应的DirectoryRecord结构存储区域中存在大小大于或等于所述L的空白区域时,将所述定制文件添加至所述镜像文件内的设定位置,并将所述定制文件对应的Directory Record记录至所述空白区域。
由以上技术方案可以看出,本发明中,当向镜像文件内添加定制文件时,如果镜像文件对应的Directory Record结构存储区域中存在满足以下条件的空白区域:大小大于或等于定制文件对应的Directory Record的大小L,则不对镜像文件进行解压缩以及重新压缩,而是直接将定制文件添加至镜像文件内的设定位置,并基于该设定位置将定制文件对应的Directory Record记录至Directory Record结构存储区域中大小大于或等于L的空白区域。这相比于现有技术,能够快速向镜像文件添加文件,提高向镜像文件添加文件的效率。
附图说明
图1为本申请提供的方法流程图;
图2为本申请举例示出了一个ISO镜像文件的结构图;
图3为本申请举例示出了ISO镜像文件的Directory Record结构图;
图4为本申请提供的Directory Record结构存储区域被划分的LogicalBlock的示意图;
图5为本申请提供的Directory Record结构存储区域被划分的LogicalBlock的另一示意图;
图6为本申请举例示出的Directory Record的结构图;
图7为本申请提供的其中一个实施例流程图;
图8为本申请提供的其中一个实施例流程图;
图9为本申请提供的其中一个实施例流程图;
图10为本申请提供的装置结构图;
图11为本申请提供的图10所示装置的硬件结构图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
参见图1,图1为本申请提供的方法流程图。如图1所示,该方法包括:
步骤101,当向镜像文件内添加定制文件时,确定定制文件对应的目录记录(Directory Record)的大小L。
这里的定制文件包括但不限于预先配置的文件、以及针对需求定制的文件等。
下文会重点描述Directory Record的结构,这里暂不赘述。
步骤102,判断镜像文件对应的Directory Record结构存储区域中是否存在大小大于或等于L的空白区域,如果是,执行步骤103。
镜像文件,比如ISO镜像文件,实际上是一个压缩文件,其中可能包含着许多文件夹和文件。在本申请中,通过一个Directory Record结构来对镜像文件中的文件和文件夹进行管理,其中,Directory Record结构由镜像文件中的文件对应的Directory Record和镜像文件中的文件夹对应的DirectoryRecord组成。以ISO镜像文件为例,图2举例示出了一个ISO镜像文件的结构。图3举例示出了ISO镜像文件的Directory Record结构(需要说明的是,图3只是列举出了图2中的几个文件夹和文件对应的Directory Record,并没有列举出所有的文件夹和文件对应的Directory Record)。
在本申请中,会专门预留出一块区域来存放上述Directory Record结构,该区域简称Directory Record结构存储区域。至于上述大小大于或等于L的空白区域,其实质是大小大于或等于L的空闲空间。
作为一个实施例,当步骤102判断出镜像文件对应的Directory Record结构存储区域中不存在大小大于或等于L的空白区域,则按照现有向镜像文件添加文件的方法执行。
步骤103,将定制文件添加至镜像文件内的设定位置,并将定制文件对应的Directory Record记录至空白区域。
本步骤103是在步骤102判断出镜像文件对应的Directory Record结构存储区域中存在大小大于或等于L的空白区域的前提下执行的。在该前提下,直接将定制文件添加至镜像文件内的设定位置,并将定制文件对应的Directory Record记录至空白区域。其中,当定制文件添加至镜像文件内,就意味着定制文件是镜像文件中的文件。作为一个实施例,这里的设定位置为镜像文件的最末尾。
至此,完成图1所示的流程。
通过图1所示的流程可以看出,在本申请中,当向镜像文件内添加定制文件时,如果镜像文件对应的Directory Record结构存储区域中存在满足以下条件的空白区域:大小大于或等于定制文件对应的Directory Record的大小L,则不对镜像文件进行解压缩以及重新压缩,而是直接将定制文件添加至镜像文件内的设定位置,并基于该设定位置将定制文件对应的DirectoryRecord记录至Directory Record结构存储区域中大小大于或等于L的空白区域。这相比于现有技术,能够快速向镜像文件添加文件,提高向镜像文件添加文件的效率。
在本申请中,Directory Record结构存储区域被划分为逻辑块(LogicalBlock)。其中,当Directory Record结构存储区域被划分两个以上LogicalBlock时,划分的各LogicalBlock大小可以相等也可以不相等,在其中一个实施方式中,划分的LogicalBlock大小相等,比如为M个字节。图4示出了Directory Record结构存储区域被划分的LogicalBlock的示意图。在图4中,作为一个实施例,M取值为2048。
在本申请其中一个实施方式中,一个Directory Record禁止跨LogicalBlock存储。也就是说,对于一个LogicalBlock,如果该LogicalBlock当前的剩余空间不足以容纳一个Directory Record,则该LogicalBlock当前的剩余空间作为空白区域(其通过填充表示空白区域的值比如0来表示),而该待存储的Directory Record就会存储到其他LogicalBlock。以图3结合图4为例,当第一个LogicalBlock在存储完EFI对应的DirectoryRecord、isolinux对应的Directory Record、GPL文件对应的Directory Record后,再存储README文件对应的Directory Record时,发现此时第一个LogicalBlock剩余的空间不够存储README文件对应的Directory Record,则跳转至第二个LogicalBlock,在第二个LogicalBlock存储README文件对应的DirectoryRecord,具体见图5所示。
在本申请中,作为一个实施例,不管是上述定制文件对应的DirectoryRecord,还是上述镜像文件中的文件或者文件夹对应的Directory Record,其具有的结构如图6示。下面仅举例描述图6所示的其中4个字段:
Directory Record长度(Length of Directory Record),图6以DirectoryRecord的第1个字节表示Directory Record长度为例;
位置参数(LocExtent:Location of Extent),对于文件,LocExtent是指文件在镜像文件内的位置,而对于文件夹,LocExtent是指文件夹内排在最前面的文件或文件夹对应的Directory Record的起始位置,图6以DirectoryRecord的第3至第10个字节表示LocExtent为例;
长度参数(LenExtent:Data Length),对于文件,LenExtent是指文件的大小,而对于文件夹,LenExtent是指该文件夹中各文件对应的DirectoryRecord的大小与各文件夹对应的Directory Record的大小之和,图6以Directory Record的第11至第18个字节表示LenExtent为例;
文件名(File Identifier),用于记录该Directory Record对应的文件或文件夹的标识,图6以Directory Record的第34至第(33+文件名长度)个字节表示文件名为例。
在图6所示的结构中,只有文件名的长度不固定,而其他字段的长度都固定,这里可将图6所示结构中除文件名之外的字段统称为预设字段。基于此,上述步骤101中,确定定制文件对应的Directory Record的大小L具体为:确定定制文件的文件名长度,将确定的文件名长度加上预设字段的长度得到的结果即为定制文件对应的Directory Record的大小L。
下面以图6所示的Directory Record的第1个字节表示Directory Record长度为例,对图1所示流程进行描述:
参见图7,图7为本申请提供的其中一个实施方式流程图。当根据需求向镜像文件内添加定制的文件(以文件1)为例,则如图7所示,该流程可包括以下步骤:
步骤701,确定文件1对应的Directory Record(记为第一DirectoryRecord)的大小L。
如图6所示的Directory Record的结构,只有文件名的长度不固定,其他字段(也称预设字段)的长度都固定,基于此,在计算第一Directory Record的大小L时,先确定文件1的文件名长度,将该确定的长度加上其他字段的长度,得到的结果就为第一DirectoryRecord的大小L。需要说明的是,在实际使用中,ISO镜像文件中文件对应的DirectoryRecor中的system use会携带很多的扩展字段,而在本申请其中一个实施方式中,定制文件对应的Directory Record中的system use不携带扩展字段,所以,定制文件对应的Directory Record的大小L远小于镜像文件比如ISO镜像文件中文件对应的DirectoryRecord的大小。通常情况下,镜像文件比如ISO镜像文件中文件对应的Directory Record的大小一般为100~130字节(Bytes),而定制文件对应的Directory Record的大小L一般只占40字节左右。
步骤702,从Directory Record结构存储区域中被指定的LogicalBlock比如第一个LogicalBlock开始遍历。
步骤703,将该遍历到的Directory Record作为当前LogicalBlock。
步骤704,判断当前LogicalBlock是否存在大小大于或等于L的空白区域,如果是,执行步骤705,如果否,执行步骤706。
基于以图6所示的Directory Record的第1个字节表示Directory Record长度为例,则步骤704具体可包括:
步骤a1,将当前LogicalBlock的第1个字节作为当前字节。
步骤a2,判断当前字节对应的数值N是否为表示空白区域的值比如0,如果否,执行步骤a3,如果是,执行步骤a4。
这里数值N只是代表当前字节对应的数值,并非具体指定某一个数值。
步骤a3,将当前LogicalBlock中从当前字节开始偏移N个字节后的字节作为当前字节,返回步骤a2。
以图5所示的第一个LogicalBlock为例,假如当前字节为第131个字节,N为100,则将第一个LogicalBlock中第131+100个字节后的字节作为当前字节,返回步骤a2。
步骤a4,计算从当前字节至当前LogicalBlock的结束位置之间的空间大小,判断所述空间大小是否大于或等于L,如果是,确定当前Directory Record存在大小大于或等于L的空白区域,如果否,确定当前Directory Record不存在大小大于或等于L的空白区域。
以图5所示的第一个LogicalBlock为例,假如当前字节为第2040个字节,LogicalBlock的大小为2048个字节,基于此,步骤a4中,计算从当前字节至当前LogicalBlock的结束位置之间的空间大小为:2048减去2040得到的差值。
通过步骤a1至步骤a4实现了判断当前LogicalBlock是否存在大小大于或等于L的空白区域。
步骤705,结束遍历,并将文件1添加至镜像文件内的最末尾,将文件1对应的第一Directory Record记录至步骤704判断出的空白区域。
在本实施方式中,第一Directory Record的结构如图6所示。以L为40个字节为例,则第一Directory Record的第一个字节表示L(40个字节),第一Directory Record的第3至第10个字节(表示LocExtent)表示镜像文件内的最末尾位置,第一Directory Record的第11至第18个字节(表示LenExtent)表示文件1的大小比如1024个字节。第一DirectoryRecord的第34至第33+文件名长度(以7为例)个字节(表示文件名File Identifier)为文件1的文件名。
步骤706,跳转至当前LogicalBlock的下一个LogicalBlock,将该下一个LogicalBlock作为当前LogicalBlock,返回步骤704。
上述步骤702至步骤706是上述步骤102中判断镜像文件对应的Directory Record结构存储区域中是否存在大小大于或等于L的空白区域的具体实现。
至此,完成图7所示的流程。需要说明的是,在步骤706中,如果当前LogicalBlock为Directory Record结构存储区域中被遍历的最后一个LogicalBlock,则意味着镜像文件对应的Directory Record结构存储区域中不存在大小大于或等于L的空白区域,针对这种情况,可直接结束当前流程,按照现有向镜像文件添加文件的方法执行。
需要说明的是,在本申请中,还可以根据需求在需要删除镜像文件中的文件时,在Directory Record结构存储区域中找到待删除文件对应的DirectoryRecord并删除。
下面通过具体实施例对如何删除镜像文件中的文件进行描述:
参见图8,图8为本申请提供的其中一个实施方式流程图。当根据需求需要删除镜像文件内的文件(以文件2)为例,该文件2是泛指镜像文件内的任一文件,也可以是上述的文件1。
如图8所示,该流程可包括以下步骤:
步骤801,从Directory Record结构存储区域中被指定的LogicalBlock比如第一个LogicalBlock开始遍历,将该遍历到的LogicalBlock作为当前LogicalBlock。
步骤802,判断当前LogicalBlock是否存储了满足条件的DirectoryRecord,所述条件为文件名与待删除文件的文件名相同,如果是,执行步骤803,如果否,执行步骤804。
作为一个优选实施例,以图6所示的Directory Record的第1个字节表示Directory Record长度为例,则步骤802具体可包括:
步骤b1,将当前LogicalBlock的第一个字节作为当前字节。
步骤b2,判断当前字节对应的数值N是否为表示空白区域的值比如0,如果是,执行步骤b3,如果否,执行步骤b4。
步骤b3,确定当前LogicalBlock未存储满足条件的Directory Record;
步骤b4,判断当前字节所属的Directory Record是否满足条件,如果是,确定当前LogicalBlock存储了满足条件的Directory Record,如果否,确定当前LogicalBlock未存储满足条件的Directory Record。
本步骤b4是在步骤b3判断出当前字节对应的数值N不为表示空白区域的值比如0的前提下执行的。若当前字节对应的数值N不为表示空白区域的值比如0,则意味着当前字节对应的数值是一个Directory Record的长度,基于当前LogicalBlock的DirectoryRecord记录,很容易确定当前字节是记录哪一个Directory Record的长度,也很容易确定当前字节所属的DirectoryRecord。
通过步骤b1至步骤b4实现了判断当前LogicalBlock是否存储了满足条件的Directory Record。
步骤803,结束遍历,将满足条件的Directory Record删除。结束当前流程。
作为一个实施例,这里将满足条件的Directory Record删除具体可为:将满足条件的Directory Record内的字节置为表示空白区域的值比如0。
步骤804,跳转至当前LogicalBlock的下一个LogicalBlock,将该下一个LogicalBlock作为当前LogicalBlock,返回步骤802。
至此,完成图8所示的流程。需要说明的是,在步骤804中,如果当前LogicalBlock为Directory Record结构存储区域中被遍历的最后一个LogicalBlock,则意味着镜像文件对应的Directory Record结构存储区域中不存在满足条件的Directory Record,针对这种情况,可直接结束当前流程,按照现有删除镜像文件内的文件的方法执行。
在本申请中,可根据需求更新镜像文件中的文件。这里,更新后的文件称为第一文件,被更新的镜像文件中的文件称为第二文件,也即更新镜像文件中的文件实质为用第一文件更新镜像文件中的第二文件。
其中,当用第一文件更新镜像文件中的第二文件时,维持第二文件在镜像文件中的位置不变,将第一文件添加至镜像文件内的设定位置,并在Directory Record结构存储区域中找到第二文件对应的Directory Record,更新该找到的Directory Record中的LenExtent、LocExtent分别为第一文件的长度、第一文件在镜像文件内的位置。当将第一文件添加至镜像文件内,就意味着第一文件是镜像文件中的文件。作为一个实施方式,这里的设定位置为镜像文件的最末尾。
下面通过具体实施例对如何更新镜像文件中的文件进行描述:
参见图9,图9为本申请提供的第三实施例流程图。在该流程中,以根据需求需要用第一文件更新镜像文件内的第二文件为例,第二文件是泛指镜像文件内的任一文件,也可以是上述的文件1。
如图9所示,该流程可包括以下步骤:
步骤901,从Directory Record结构存储区域中被指定的LogicalBlock开始遍历,将该遍历到的LogicalBlock作为当前LogicalBlock。
步骤902,判断当前LogicalBlock是否存储了满足条件的DirectoryRecord,所述条件为文件名与第二文件的文件名相同,如果是,执行步骤903,如果否,执行步骤904。
作为一个优选实施例,以图6所示的Directory Record的第1个字节表示Directory Record长度为例,则步骤902具体可包括:
步骤c1,将当前LogicalBlock的第一个字节作为当前字节。
步骤c2,判断当前字节对应的数值N是否为表示空白区域的值比如0,如果是,执行步骤c3,如果否,执行步骤c4。
步骤c3,确定当前LogicalBlock未存储满足条件的Directory Record;
步骤c4,判断当前字节所属的Directory Record是否满足条件,如果是,确定当前LogicalBlock存储了满足条件的Directory Record,如果否,确定当前LogicalBlock未存储满足条件的Directory Record。
通过步骤c1至步骤c4实现了判断当前LogicalBlock是否存储了满足条件的Directory Record。
步骤903,结束遍历,维持第二文件在镜像文件中的位置不变,将第一文件添加至镜像文件内的最末尾,并在Directory Record结构存储区域中找到第二文件对应的Directory Record,更新该找到的Directory Record中的LenExtent、LocExtent分别为第一文件的长度、第一文件在镜像文件内的位置。
也就是说,在本申请中,更新第二文件时,第二文件并不修改,而是将用于更新第二文件的第一文件添加至镜像文件内的最末尾,并对第二文件对应的Directory Record更新,具体更新第二文件对应的Directory Record中的LenExtent、LocExtent分别为第一文件的长度、第一文件在镜像文件内的位置。
步骤904,跳转至当前LogicalBlock的下一个LogicalBlock,将该下一个LogicalBlock作为当前LogicalBlock,返回步骤902。结束当前流程。
至此,完成图9所示的流程。需要说明的是,在步骤904中或者上述步骤,如果当前LogicalBlock为Directory Record结构存储区域中被遍历的最后一个LogicalBlock,则意味着镜像文件对应的Directory Record结构存储区域中不存在满足条件的DirectoryRecord,针对这种情况,可直接结束当前流程,按照现有删除镜像文件内的文件的方法执行。
以上对本申请提供的方法进行了描述。
经过本申请发明人测试,按照本申请向镜像文件添加定制文件、删除镜像文件中的文件、以及更新镜像文件中的文件,均可以在3秒内完成,相比于现有通过解压缩、重新压缩的方法添加定制文件、删除镜像文件中的文件、以及更新镜像文件,大大加快了处理速度。
以上对本申请提供的方法进行了描述,下面对本申请提供的装置进行描述:
参见图10,图10为本申请提供的装置结构图。如图10所示,该装置可包括:
确定模块,用于当向镜像文件内添加定制文件时,确定所述定制文件对应的目录记录Directory Record的大小L;
判断模块,用于判断所述镜像文件对应的Directory Record结构存储区域中是否存在大小大于或等于所述L的空白区域,所述Directory Record结构存储区域用于至少存储所述镜像文件的Directory Record结构,所述DirectoryRecord结构由所述镜像文件中的文件对应的Directory Record和所述镜像文件中的文件夹对应的Directory Record组成;
处理模块,用于在所述判断模块判断出所述镜像文件对应的DirectoryRecord结构存储区域中存在大小大于或等于所述L的空白区域时,将所述定制文件添加至所述镜像文件内的设定位置,并将所述定制文件对应的Directory Record记录至所述空白区域。
优选地,所述判断模块判断镜像文件对应的Directory Record结构存储区域中是否存在大小大于或等于L的空白区域包括:
从Directory Record结构存储区域中被指定的逻辑块LogicalBlock开始遍历,将该遍历到的Directory Record作为当前LogicalBlock,
判断当前LogicalBlock是否存在大小大于或等于L的空白区域,如果是,确定Directory Record结构存储区域中存在所述空白区域,如果否,跳转至当前LogicalBlock的下一个LogicalBlock,将该下一个LogicalBlock作为当前LogicalBlock,返回判断当前LogicalBlock是否存在大小大于或等于L的空白区域的步骤。
优选地,所述判断当前LogicalBlock是否存在大小大于或等于L的空白区域包括:
将当前LogicalBlock的第一个字节作为当前字节,判断当前字节对应的数值N是否为表示空白区域的值,
如果否,将当前LogicalBlock中从当前字节开始偏移N个字节后的字节作为当前字节,返回判断当前字节对应的数值N是否为表示空白区域的值的步骤;
如果是,计算从当前字节至当前LogicalBlock的结束位置之间的空间大小,判断所述空间大小是否大于或等于L,如果是,确定当前Directory Record存在大小大于或等于L的空白区域,如果否,确定当前Directory Record不存在大小大于或等于L的空白区域。
优选地,所述处理模块进一步在需要删除镜像文件中的文件时,在所述DirectoryRecord结构存储区域中找到待删除文件对应的Directory Record并删除。
优选地,所述处理模块在Directory Record结构存储区域中找到待删除文件对应的Directory Record并删除包括:从Directory Record结构存储区域中被指定的LogicalBlock开始遍历,将该遍历到的LogicalBlock作为当前LogicalBlock;判断当前LogicalBlock是否存储了满足条件的DirectoryRecord,所述条件为文件名与待删除文件的文件名相同,如果是,结束遍历,将满足条件的Directory Record删除;如果否,跳转至当前LogicalBlock的下一个LogicalBlock,将该下一个LogicalBlock作为当前LogicalBlock,返回判断当前LogicalBlock是否存储了满足条件的Directory Record的步骤;
优选地,所述处理模块进一步在用第一文件更新镜像文件中的第二文件时,第二文件为镜像文件中被更新的文件,维持第二文件在镜像文件中的位置不变,将第一文件添加至镜像文件内的设定位置,并在Directory Record结构存储区域中找到第二文件对应的Directory Record,更新该找到的Directory Record中的LenExtent、LocExtent分别为第一文件的长度、第一文件在镜像文件内的位置。
优选地,所述处理模块在Directory Record结构存储区域中找到第二文件对应的Directory Record包括:从Directory Record结构存储区域中被指定的LogicalBlock开始遍历,将该遍历到的LogicalBlock作为当前LogicalBlock;判断当前LogicalBlock是否存储了满足条件的Directory Record,所述条件为文件名与第二文件的文件名相同;如果是,结束遍历,确定满足条件的Directory Record为第二文件对应的Directory Record;如果否,跳转至当前LogicalBlock的下一个LogicalBlock,将该下一个LogicalBlock作为当前LogicalBlock,返回判断当前LogicalBlock是否存储了满足条件的DirectoryRecord的步骤。
优选地,所述处理模块判断当前LogicalBlock是否存储了满足条件的DirectoryRecord包括:将当前LogicalBlock的第一个字节作为当前字节,判断当前字节对应的数值N是否为表示空白区域的值,如果是,确定当前LogicalBlock未存储满足条件的DirectoryRecord,如果否,判断当前字节所属的Directory Record是否满足条件,如果是,确定当前LogicalBlock存储了满足条件的Directory Record,如果否,确定当前LogicalBlock未存储满足条件的Directory Record。
至此,完成图10所示的装置。
对应地,本申请还提供了图10所示装置的硬件结构描述。参见图11,图11为本申请提供的图10所示装置的硬件结构图。如图11所示,该硬件结构可包括处理组件,其进一步包括一个或多个处理器,以及由存储器所代表的存储器资源,用于存储可由处理部件执行的指令,例如应用程序。存储器中存储的应用程序包括上述的确定模块、判断模块、处理模块。此外,处理组件被配置为执行指令,以执行上述各个模块所执行的操作。
如图11所示,该硬件结构还可以包括一个电源组件被配置为执行装置的电源管理,一个有线或无线网络接口被配置为将装置连接到网络,和一个输入输出(I/O)接口。
至此,完成图11所示的硬件结构描述。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (14)
1.一种镜像文件处理方法,其特征在于,该方法包括:
当向镜像文件内添加定制文件时,确定所述定制文件对应的目录记录DirectoryRecord的大小L;
判断所述镜像文件对应的Directory Record结构存储区域中是否存在大小大于或等于所述L的空白区域,所述Directory Record结构存储区域用于存储所述镜像文件的Directory Record结构;
在所述镜像文件对应的Directory Record结构存储区域中存在大小大于或等于所述L的空白区域时,将所述定制文件添加至所述镜像文件内的设定位置,并将所述定制文件对应的Directory Record记录至所述空白区域。
2.根据权利要求1所述的方法,其特征在于,所述判断镜像文件对应的DirectoryRecord结构存储区域中是否存在大小大于或等于L的空白区域包括:
从Directory Record结构存储区域中被指定的逻辑块LogicalBlock开始遍历,将遍历到的Directory Record作为当前LogicalBlock,
判断当前LogicalBlock是否存在大小大于或等于L的空白区域,如果是,确定Directory Record结构存储区域中存在所述空白区域,如果否,跳转至当前LogicalBlock的下一个LogicalBlock,将该下一个LogicalBlock作为当前LogicalBlock,返回判断当前LogicalBlock是否存在大小大于或等于L的空白区域的步骤。
3.根据权利要求2所述的方法,其特征在于,所述判断当前LogicalBlock是否存在大小大于或等于L的空白区域包括:
将当前LogicalBlock的第一个字节作为当前字节,判断当前字节对应的数值N是否为表示空白区域的值,
如果否,将当前LogicalBlock中从当前字节开始偏移N个字节后的字节作为当前字节,返回判断当前字节对应的数值N是否为表示空白区域的值的步骤;
如果是,计算从当前字节至当前LogicalBlock的结束位置之间的空间大小,判断所述空间大小是否大于或等于L,如果是,确定当前Directory Record存在大小大于或等于L的空白区域,如果否,确定当前Directory Record不存在大小大于或等于L的空白区域。
4.根据权利要求1所述的方法,其特征在于,该方法进一步包括:
当需要删除镜像文件中的文件时,在所述Directory Record结构存储区域中找到待删除文件对应的Directory Record并删除。
5.根据权利要求4所述的方法,其特征在于,所述在Directory Record结构存储区域中找到待删除文件对应的Directory Record并删除包括:
从Directory Record结构存储区域中被指定的LogicalBlock开始遍历,将遍历到的LogicalBlock作为当前LogicalBlock;
判断当前LogicalBlock是否存储了满足条件的Directory Record,所述条件为文件名与待删除文件的文件名相同,如果是,结束遍历,将满足条件的Directory Record删除,如果否,跳转至当前LogicalBlock的下一个LogicalBlock,将该下一个LogicalBlock作为当前LogicalBlock,返回判断当前LogicalBlock是否存储了满足条件的Directory Record的步骤。
6.根据权利要求1所述的方法,其特征在于,该方法进一步包括:
当用第一文件更新镜像文件中的第二文件时,所述第二文件为镜像文件中被更新的文件,维持第二文件在镜像文件中的位置不变,将第一文件添加至所述镜像文件内的设定位置,并在所述Directory Record结构存储区域中找到第二文件对应的Directory Record,更新该找到的Directory Record中的长度参数LenExtent、位置参数LocExtent分别为第一文件的长度、第一文件在镜像文件内的位置。
7.根据权利要求6所述的方法,其特征在于,所述在Directory Record结构存储区域中找到第二文件对应的Directory Record包括:
从Directory Record结构存储区域中被指定的LogicalBlock开始遍历,将遍历到的LogicalBlock作为当前LogicalBlock;
判断当前LogicalBlock是否存储了满足条件的Directory Record,所述条件为文件名与第二文件的文件名相同;如果是,结束遍历,确定满足条件的Directory Record为第二文件对应的Directory Record;如果否,跳转至当前LogicalBlock的下一个LogicalBlock,将该下一个LogicalBlock作为当前LogicalBlock,返回判断当前LogicalBlock是否存储了满足条件的Directory Record的步骤。
8.根据权利要求5或7所述的方法,其特征在于,所述判断当前LogicalBlock是否存储了满足条件的Directory Record包括:
将当前LogicalBlock的第一个字节作为当前字节,判断当前字节对应的数值N是否为表示空白区域的值,如果是,确定当前LogicalBlock未存储满足条件的Directory Record,如果否,判断当前字节所属的Directory Record是否满足条件,如果是,确定当前LogicalBlock存储了满足条件的Directory Record,如果否,确定当前LogicalBlock未存储满足条件的Directory Record。
9.一种镜像文件处理装置,其特征在于,该装置包括:
确定模块,用于当向镜像文件内添加定制文件时,确定所述定制文件对应的目录记录Directory Record的大小L;
判断模块,用于判断所述镜像文件对应的Directory Record结构存储区域中是否存在大小大于或等于所述L的空白区域,所述Directory Record结构存储区域用于至少存储所述镜像文件的Directory Record结构;
处理模块,用于在所述判断模块判断出所述镜像文件对应的Directory Record结构存储区域中存在大小大于或等于所述L的空白区域时,将所述定制文件添加至所述镜像文件内的设定位置,并将所述定制文件对应的Directory Record记录至所述空白区域。
10.根据权利要求9所述的装置,其特征在于,所述判断模块判断镜像文件对应的Directory Record结构存储区域中是否存在大小大于或等于L的空白区域包括:
从Directory Record结构存储区域中被指定的逻辑块LogicalBlock开始遍历,将遍历到的Directory Record作为当前LogicalBlock,
判断当前LogicalBlock是否存在大小大于或等于L的空白区域,如果是,确定Directory Record结构存储区域中存在所述空白区域,如果否,跳转至当前LogicalBlock的下一个LogicalBlock,将该下一个LogicalBlock作为当前LogicalBlock,返回判断当前LogicalBlock是否存在大小大于或等于L的空白区域的步骤。
11.根据权利要求9所述的装置,其特征在于,处理模块进一步在需要删除镜像文件中的文件时,在所述Directory Record结构存储区域中找到待删除文件对应的DirectoryRecord并删除。
12.根据权利要求11所述的装置,其特征在于,所述处理模块在Directory Record结构存储区域中找到待删除文件对应的Directory Record并删除包括:
从Directory Record结构存储区域中被指定的LogicalBlock开始遍历,将遍历到的LogicalBlock作为当前LogicalBlock;
判断当前LogicalBlock是否存储了满足条件的Directory Record,所述条件为文件名与待删除文件的文件名相同,如果是,结束遍历,将满足条件的Directory Record删除,如果否,跳转至当前LogicalBlock的下一个LogicalBlock,将该下一个LogicalBlock作为当前LogicalBlock,返回判断当前LogicalBlock是否存储了满足条件的Directory Record的步骤。
13.根据权利要求9所述的装置,其特征在于,所述处理模块进一步在用第一文件更新镜像文件中的第二文件时,第二文件为镜像文件中被更新的文件,维持第二文件在镜像文件中的位置不变,将第一文件添加至镜像文件内的设定位置,并在Directory Record结构存储区域中找到第二文件对应的Directory Record,更新该找到的Directory Record中的长度参数LenExtent、位置参数LocExtent分别为第一文件的长度、第一文件在镜像文件内的位置。
14.根据权利要求13所述的装置,其特征在于,所述处理模块在Directory Record结构存储区域中找到第二文件对应的Directory Record包括:
从Directory Record结构存储区域中被指定的LogicalBlock开始遍历,将遍历到的LogicalBlock作为当前LogicalBlock;
判断当前LogicalBlock是否存储了满足条件的Directory Record,所述条件为文件名与第二文件的文件名相同;如果是,结束遍历,确定满足条件的Directory Record为第二文件对应的Directory Record;如果否,跳转至当前LogicalBlock的下一个LogicalBlock,将该下一个LogicalBlock作为当前LogicalBlock,返回判断当前LogicalBlock是否存储了满足条件的Directory Record的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610575760.4A CN107643959B (zh) | 2016-07-19 | 2016-07-19 | 镜像文件处理方法和装置 |
PCT/CN2017/093095 WO2018014801A1 (zh) | 2016-07-19 | 2017-07-17 | 镜像文件的处理 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610575760.4A CN107643959B (zh) | 2016-07-19 | 2016-07-19 | 镜像文件处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107643959A CN107643959A (zh) | 2018-01-30 |
CN107643959B true CN107643959B (zh) | 2020-08-04 |
Family
ID=60991899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610575760.4A Active CN107643959B (zh) | 2016-07-19 | 2016-07-19 | 镜像文件处理方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107643959B (zh) |
WO (1) | WO2018014801A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109165023B (zh) * | 2018-07-20 | 2022-02-11 | 新华三信息技术有限公司 | 修改iso镜像文件的方法、装置和设备 |
CN114168079B (zh) * | 2021-12-09 | 2023-08-22 | 深圳软牛科技有限公司 | 一种识别磁盘删除的tiff类型数据的方法、装置及相关组件 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1991777A (zh) * | 2005-12-27 | 2007-07-04 | 英业达股份有限公司 | 镜像文件的数据预装系统及方法 |
CN101207633A (zh) * | 2006-12-21 | 2008-06-25 | 英业达股份有限公司 | 网络存储系统的功能定制选择系统及方法 |
CN101576890A (zh) * | 2008-05-08 | 2009-11-11 | 深圳市朗科科技股份有限公司 | 一种新型碎片整理方法和系统 |
CN103324474A (zh) * | 2013-05-22 | 2013-09-25 | 中标软件有限公司 | 基于Linux操作系统跨体系构造ISO的方法及模块 |
CN103677945A (zh) * | 2013-12-30 | 2014-03-26 | 深圳市捷顺科技实业股份有限公司 | 镜像文件的生成方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7600127B2 (en) * | 2005-07-13 | 2009-10-06 | Lenovo Singapore Pte. Ltd | System and method for ISO image update and ISO image deconstruction into modular components |
US20070065104A1 (en) * | 2005-09-16 | 2007-03-22 | Eastman Kodak Comapny | Recordable dvd structure |
CN102567058B (zh) * | 2011-12-26 | 2014-11-05 | 中标软件有限公司 | 一种制备用于安装linux操作系统的镜像文件的方法 |
WO2013102506A2 (en) * | 2012-01-02 | 2013-07-11 | International Business Machines Corporation | Method and system for backup and recovery |
CN103544045A (zh) * | 2013-10-16 | 2014-01-29 | 南京大学镇江高新技术研究院 | 一种基于hdfs的虚拟机镜像存储系统及其构建方法 |
CN104951482B (zh) * | 2014-03-31 | 2018-09-25 | 炬芯(珠海)科技有限公司 | 一种操作Sparse格式的镜像文件的方法及装置 |
-
2016
- 2016-07-19 CN CN201610575760.4A patent/CN107643959B/zh active Active
-
2017
- 2017-07-17 WO PCT/CN2017/093095 patent/WO2018014801A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1991777A (zh) * | 2005-12-27 | 2007-07-04 | 英业达股份有限公司 | 镜像文件的数据预装系统及方法 |
CN101207633A (zh) * | 2006-12-21 | 2008-06-25 | 英业达股份有限公司 | 网络存储系统的功能定制选择系统及方法 |
CN101576890A (zh) * | 2008-05-08 | 2009-11-11 | 深圳市朗科科技股份有限公司 | 一种新型碎片整理方法和系统 |
CN103324474A (zh) * | 2013-05-22 | 2013-09-25 | 中标软件有限公司 | 基于Linux操作系统跨体系构造ISO的方法及模块 |
CN103677945A (zh) * | 2013-12-30 | 2014-03-26 | 深圳市捷顺科技实业股份有限公司 | 镜像文件的生成方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2018014801A1 (zh) | 2018-01-25 |
CN107643959A (zh) | 2018-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170031948A1 (en) | File synchronization method, server, and terminal | |
CN108614837B (zh) | 文件存储和检索的方法及装置 | |
CN111198856A (zh) | 文件管理方法、装置、计算机设备和存储介质 | |
CN107643959B (zh) | 镜像文件处理方法和装置 | |
CN113568604B (zh) | 风控策略的更新方法、装置及计算机可读存储介质 | |
CN113805816B (zh) | 一种磁盘空间管理方法、装置、设备及存储介质 | |
CN112860412B (zh) | 业务数据处理方法、装置、电子设备及存储介质 | |
CN112306957A (zh) | 获取索引节点号的方法、装置、计算设备和存储介质 | |
CN117271531B (zh) | 一种数据存储方法、系统、设备及介质 | |
CN108038253B (zh) | 一种日志查询的处理方法及装置 | |
CN110765073B (zh) | 分布式存储系统的文件管理方法、介质、设备及装置 | |
CN110807000B (zh) | 一种文件修复方法、装置、电子设备和存储介质 | |
CN115563055A (zh) | 一种ofd文档合并与拆分的方法、系统和存储介质 | |
CN111625500B (zh) | 文件快照方法及装置、电子设备和存储介质 | |
CN113900991A (zh) | 数据交互方法、装置、设备及存储介质 | |
CN111858018B (zh) | Cgroup配置的方法、装置、计算机设备及存储介质 | |
CN115904211A (zh) | 一种存储系统、数据处理方法及相关设备 | |
CN114443598A (zh) | 写数据方法、装置、计算机设备及存储介质 | |
JP2006184979A (ja) | ファイル情報の書き込み処理方法およびプログラム | |
CN112579003B (zh) | 键值对的调整方法、装置、存储介质以及电子装置 | |
CN116136846B (zh) | 一种非结构化对象数据的管理方法、装置及存储系统 | |
EP4195068A1 (en) | Storing and retrieving media recordings in an object store | |
CN112328327B (zh) | 配置分区整理方法、装置 | |
CN112445764B (zh) | 文件操作的方法、装置、存储介质及电子设备 | |
EP4312126A1 (en) | Parallelization of incremental backups |
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 | ||
CB02 | Change of applicant information |
Address after: 310052 11th Floor, 466 Changhe Road, Binjiang District, Hangzhou City, Zhejiang Province Applicant after: Xinhua Sanxin Information Technology Co., Ltd. Address before: 310052 11th Floor, 466 Changhe Road, Binjiang District, Hangzhou City, Zhejiang Province Applicant before: Huashan Information Technology Co., Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |