CN108108394B - Apfs文件系统的压缩文件恢复方法及存储介质 - Google Patents
Apfs文件系统的压缩文件恢复方法及存储介质 Download PDFInfo
- Publication number
- CN108108394B CN108108394B CN201711213488.6A CN201711213488A CN108108394B CN 108108394 B CN108108394 B CN 108108394B CN 201711213488 A CN201711213488 A CN 201711213488A CN 108108394 B CN108108394 B CN 108108394B
- Authority
- CN
- China
- Prior art keywords
- block
- compressed
- data
- value
- 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.)
- Active
Links
Images
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/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- 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/13—File access structures, e.g. distributed indices
Abstract
本发明公开了一种APFS文件系统的压缩文件恢复方法及存储介质,方法包括:在空闲空间中依次获取一空闲块;若一空闲块为文件信息节点块,且存在压缩数据,则读取并解压压缩数据;判断一空闲块是否为第一类型数据块,第一类型数据块包括索引表和压缩块,若是,则根据索引表中各索引的值,计算得到各压缩块的长度;根据索引表以及各压缩块的长度,读取并解压各压缩块的压缩数据;判断一空闲块是否为第二类型数据块,第二类型数据块包括压缩头、索引表和压缩块,若是,则根据索引表中各索引的值,读取并解压各压缩块的压缩数据。本发明在被压缩数据未被覆盖的情况下可以完整的恢复出被删除的压缩数据。
Description
技术领域
本发明涉及数据恢复技术领域,尤其涉及一种APFS文件系统的压缩文件恢复方法及存储介质。
背景技术
随着尖端技术的不断发展,苹果的文件系统HFS+的架构已经满足不了现有的需求。APFS文件系统作为苹果最新推出的文件系统,凭借较高的可靠性以及较快的文件处理速度开始被逐步地应用到苹果各类产品新的操作系统上。苹果系统数据的取证一直是业内关注的重点,APFS新文件的推出给苹果系统的数据取证带来了新的挑战。特别是APFS文件系统自带的数据压缩功能,若带有压缩属性的文件被删除且索引丢失,传统的恢复手段将失效,数据取证将无法深入进行。
当前针对APFS文件系统的恢复,很多恢复软件通过传统的万能恢复技术即通过文件签名恢复文件的方法来恢复文件。这种方法只能处理非压缩数据,已压缩的数据由于数据被压缩无法识别签名信息会导致恢复失败。
发明内容
本发明所要解决的技术问题是:提供一种APFS文件系统的压缩文件恢复方法及存储介质,可有效恢复出被删除的压缩数据。
为了解决上述技术问题,本发明采用的技术方案为:一种APFS文件系统的压缩文件恢复方法,包括:
在空闲空间中依次获取一空闲块;
若所述一空闲块为文件信息节点块,且所述一空闲块存在压缩数据,则读取并解压所述压缩数据;
判断所述一空闲块是否为第一类型数据块,所述第一类型数据块包括索引表和压缩块,若是,则根据所述索引表中各索引的值,计算得到所述一空闲块中各压缩块的长度;
根据所述索引表以及各压缩块的长度,读取并解压各压缩块的压缩数据;
判断所述一空闲块是否为第二类型数据块,所述第二类型数据块包括压缩头、索引表和压缩块,若是,则根据所述索引表中各索引的值,读取并解压各压缩块的压缩数据。
本发明还涉及一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上所述的步骤。
本发明的有益效果在于:通过扫描文件系统中未使用的空闲空间,结合压缩数据以及文件系统块特征对数据进行识别,并将压缩数据解压出来,再结合文件特征进行恢复,从而实现对被删除的压缩数据的恢复。本发明在被压缩数据未被覆盖的情况下可以完整的恢复出被删除的压缩数据,为APFS文件系统下压缩文件的恢复提供了解决方案,对电子数据取证以及数据恢复具有重大的意义。
附图说明
图1为本发明一种APFS文件系统的压缩文件恢复方法的流程图;
图2为本发明实施例一的方法流程图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。
本发明最关键的构思在于:结合压缩数据以及文件系统块特征对数据进行识别,并将压缩数据解压出来,再结合文件特征进行恢复。
请参阅图1,一种APFS文件系统的压缩文件恢复方法,包括:
在空闲空间中依次获取一空闲块;
若所述一空闲块为文件信息节点块,且所述一空闲块存在压缩数据,则读取并解压所述压缩数据;
判断所述一空闲块是否为第一类型数据块,所述第一类型数据块包括索引表和压缩块,若是,则根据所述索引表中各索引的值,计算得到所述一空闲块中各压缩块的长度;
根据所述索引表以及各压缩块的长度,读取并解压各压缩块的压缩数据;
判断所述一空闲块是否为第二类型数据块,所述第二类型数据块包括压缩头、索引表和压缩块,若是,则根据所述索引表中各索引的值,读取并解压各压缩块的压缩数据。
从上述描述可知,本发明的有益效果在于:在被压缩数据未被覆盖的情况下可以完整的恢复出被删除的压缩数据,为APFS文件系统下压缩文件的恢复提供了解决方案。
进一步地,所述“在空闲空间中依次获取一空闲块”之前,进一步包括:
读取空间管理块和分配信息块;
解析所述分配信息块得到分配位图,并根据所述分配位图确定空闲空间。
由上述描述可知,通过解析空间管理块和分配信息块获取得到空闲空间的范围,以便后续获取被删除的块。
进一步地,若所述一空闲块的第25至26个字节的值与文件信息节点块的块类型值相同,且所述一空闲块通过弗莱彻校验和校验算法计算得到的值与其前八个字节的值相同,则判定所述一空闲块为文件信息节点块。
由上述描述可知,根据非文件数据块的块头特征以及文件信息节点块的特征,为判断空闲块是否为文件信息节点块提供依据。
进一步地,若所述一空闲块存在预设的属性和常驻属性,则判定所述一空闲块存在压缩数据。
由上述描述可知,根据压缩文件的组织结构中的非压缩类型和常驻压缩类型的特征,为文件信息节点块中是否存在压缩数据提供依据。
进一步地,所述“判断所述一空闲块是否为第一类型数据块”具体为:
获取所述一空闲块的前四个字节;
若所述前四个字节不为零,且所述前四个字节的值模4为零,则根据所述前四个字节的值,获取所述一空闲块的索引表;
若所述索引表中每一索引的值均小于其下一索引的值,且所述索引表后第一个字节的值属于预设的第一集合,则判定所述一空闲块为第一类型数据块。
由上述描述可知,根据第一类型数据块的结构特征,为判断空闲块是否为第一类型数据块提供依据。
进一步地,第一类型数据块的索引表中各索引的值分别表示各压缩块的偏移值;
所述“根据所述索引表中各索引的值,计算得到所述一空闲块中各压缩块的长度”具体为:
若一压缩块不为所述一空闲块的最后一个压缩块,则将所述一压缩块的下一压缩块的偏移值减去所述一压缩块的偏移值,得到所述一压缩块的长度;
若一压缩块为所述一空闲块的最后一个压缩块,则根据第一公式依次计算得到第一长度,所述第一公式为:L=4096k-S%4096,L为第一长度,S为所述一压缩块的偏移值,k=1,2,3…;
依次将计算得到的第一长度的数据进行解压,获取解压成功的第一长度作为所述一压缩块的长度;
若第一长度大于66048字节时仍未解压成功,则判定所述一压缩块的长度为66048字节。
由上述描述可知,由于第一类型数据库中的索引表只记录了各压缩块的偏移值,因此需要根据各压缩块的偏移值计算出各压缩块的长度。
进一步地,所述“判断所述一空闲块是否为第二类型数据块”具体为:
获取所述一空闲块的前四个字节;
若所述前四个字节的值为预设的第一值,则根据所述一空闲块的预设第一位置的字节的值,获取所述一空闲块的索引表;
若所述索引表不为空,且所述索引表中每一索引的前四个字节的值均小于其下一索引的前四个字节的值,则获取预设第二位置的字节的值;
若所述预设第二位置的字节的值属于预设的第一集合,则判定所述二闲块为第一类型数据块。
由上述描述可知,根据第二类型数据块的结构特征,为判断空闲块是否为第二类型数据块提供依据。
进一步地,解压压缩数据之后,进一步包括:
根据文件特征识别解压后的数据,确定文件类型;
根据文件类型进行数据恢复。
由上述描述可知,将压缩数据解压后,再结合文件特征进行恢复,即可实现对被删除的压缩数据的恢复。
本发明还提出一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上所述的步骤。
实施例一
请参照图2,本发明的实施例一为:一种APFS文件系统的压缩文件恢复方法。在说明本方法的步骤之前,先对APFS文件系统进行介绍。
APFS文件系统的最小存储单位为块,一个块的大小为4096个字节。非文件数据块每个块都以一个32字节的块头开始,之后紧跟相应的块数据。块头主要有四部分组成,包括块校验值(blockchecksum,8字节,使用的是Fletcher’s checksum校验算法)、块ID(blockid,8字节)、块版本(blockversion,8字节)以及块类型(blocktype,2字节)。根据不同的块类型,块数据存储的内容标识不同的意义。APFS文件系统主要有以下几个类型的块:容器块、文件信息节点块、空间管理块、分配信息块、B+树块以及卷超级块等。其中,文件信息节点块存储文件的文件名、文件大小、文件时间以及常驻压缩数据等属性信息,文件信息节点块的块类型(blocktype)等于0x03。
为了节省空间,将有限的存储空间使用最大化,APFS会对存储的文件数据进行压缩,从压缩文件的组织结构来讲主要包括四种类型。详细如下:
第一种类型为非压缩类型,即将数据当作常驻属性存储在文件信息节点块中,数据以0x06的标识开头后面接上正常的非压缩文件数据(该类型的压缩只适用于小于4096字节大小的文件);
第二类型为常驻压缩类型,即将数据以常驻属性存在在文件信息节点块中,数据以压缩的方式存储(该类型的压缩只适用于小于4096字节大小的文件);
第三种类型为“索引表+压缩数据”。该类数据被分块压缩,开头有一个表用于存储每一个压缩块的开始位置(compressblockoffset),标识后紧跟压缩数据;
第四种类型为“压缩头+索引表+压缩数据”。该类数据也是被分块压缩,压缩头中记录了每个压缩块解压后的大小以及索引表的大小。其中,这类型的索引表中除了记录每个压缩块的开始位置(compressblockoffset),还记录了每个压缩块的长度(compressblockolenth)。
如图2所示,本方法包括如下步骤:
S1:读取空间管理块和分配信息块;即读取空间管理块并解析获取分配信息块。
S2:解析所述分配信息块得到分配位图,并根据所述分配位图确定空闲空间;即读取分配信息块并解析获取分配位图,通过分配位图确定空闲空间的范围。
S3:判断空闲空间中是否还存在未读取的空闲块,若是,则执行步骤S4,若否,则结束恢复流程。
S4:获取一空闲块,即获取一个还没被读取过的空闲块。
S5:判断所述一空闲块是否为文件信息节点块,若是,则执行步骤S6,若否,则执行步骤S8。具体地,若所述一空闲块的第25-26个字节的值与文件信息节点块的块类型值相同,且所述一空闲块通过弗莱彻校验和(Fletcher’s checksum)校验算法计算得到的值与其前八个字节的值相同,则判定所述一空闲块为文件信息节点块。即若该空闲块为文件信息节点块的话,根据上述对非文件数据块的块头结构的介绍,其前八个字节的值为该块的块校验值,其第25至26个字节的值为该块的块类型值,而文件信息节点块的块校验值是通过Fletcher’s checksum校验算法计算得到的,块类型的值为0x03;因此,若该空闲块第25至26个字节的值为0x03,且使用Fletcher’s checksum校验算法对该空闲块计算得到的值与前八个字节的值相同,则判定该空闲块为文件信息节点块。
S6:判断所述一空闲块是否存在压缩数据,若是,则执行步骤S7,若否,则执行步骤S3。具体地,当文件信息节点块解析到关键字名称为“com.apple.decmpfs”的属性且存在常驻属性,则判定该文件信息节点块存在压缩数据。
S7:读取并解压所述压缩数据,然后根据文件特征识别解压后的数据,确定文件类型,从而进一步恢复文件。执行步骤S3。
进一步地,若常驻属性数据的第一个字节为0x06,则该常驻属性数据为非压缩类型数据,则可无需进行解压操作。
若常驻属性数据的第一个字节不是0x06,则该常驻属性数据为常驻压缩类型数据,则需进行解压。
S8:判断所述一空闲块是否为第一类型数据块,即是否为“索引表+压缩数据”压缩类型块,若是,则执行步骤S9,若否,则执行步骤S11。
对于“索引表+压缩数据”压缩类型块,由索引表和压缩块组成,且索引表就在该块的开始位置。假设索引表为BF={bf1,bf2,...,bfn},其中,n=bf1/4(即索引表中索引的个数等于第一个索引的值除以4,每个索引的大小为4个字节),bfi表示第i个压缩块相对整个数据块的偏移。当同时满足以下几个条件时则判定该空闲块为“索引表+压缩数据”类型数据的开始位置块,条件如下:
(1)bf1不等于0,并且bf1%4等于0;即每个索引的长度为4个字节,且第一个索引的值等于索引表的大小,索引表不为空;
(3)bf1位置的字节的值必须是在{0x78,0x56,0xE0,0xC0,0x68}集合中;即该数据块第bf1个字节的值(相当于索引表后第一个字节的值,也即第一个压缩块第一个字节的值)为0x78、0x56、0xE0、0xC0或0x68。
因此,在进行该步骤的判断时,先获取所述一空闲块的前四个字节;若所述前四个字节不为零,且所述前四个字节的值模4为零,则根据所述前四个字节的值,获取索引表;若索引表中每一索引的值均小于其下一索引的值,且索引表后第一个字节的值属于{0x78,0x56,0xE0,0xC0,0x68}集合,则判定所述一空闲块为第一类型数据块。
S9:根据所述索引表中各索引的值,计算得到所述一空闲块中各压缩块的长度。具体地,若一压缩块不为所述一空闲块的最后一个压缩块,则将所述一压缩块的下一压缩块的偏移值减去所述一压缩块的偏移值,得到所述一压缩块的长度;即当i<n时,第i个压缩块的长度为Li=bfi+1-bfi。
若一压缩块为所述一空闲块的最后一个压缩块,则根据第一公式依次计算得到第一长度,所述第一公式为:L=4096k-S%4096,L为第一长度,S为所述一压缩块的偏移值,也即bfn,k=1,2,3…,4096为最小存储单元(块)的字节数;依次将计算得到的第一长度的数据进行解压,获取解压成功的第一长度作为所述一压缩块的长度。即先令k=1,此时第一长度L=4096-S%4096,将此时的第一长度的数据进行解压,如果解压成功,则最后一个压缩块的长度即为4096-S%4096,如果解压失败,则令k=2,此时第一长度L=4096×2-S%4096,将此时的第一长度的数据进行解压,如果解压成功,则最后一个压缩块的长度即为4096×2-S%4096,如果解压失败,则令k=3,以此类推。
进一步地,若第一长度大于66048字节时仍未解压成功,则判定最后一个压缩块的长度为66048字节。
S10:根据所述索引表以及各压缩块的长度,读取并解压各压缩块的压缩数据,然后根据文件特征识别解压后的数据,确定文件类型,从而进一步恢复文件。执行步骤S3。
S11:判断所述一空闲块是否为第二类型数据块,即是否为“压缩头+索引表+压缩数据”压缩类型块,若是,则执行步骤S12,若否,则执行步骤S3。
对于“压缩头+索引表+压缩数据”压缩类型块,由压缩头、索引表和压缩块组成,且压缩头就在该块的开始位置,压缩头的长度为264个字节,且最后四个字节的值为索引表的大小。假设索引表为BFL={bfl1,bfl2,...,bfln},其中,每个索引的大小为8个字节,bfli的前四个字节表示第i个压缩块相对整个数据块的偏移compressblockoffseti,bfli的后四个字节表示第i个压缩块的长度compressblocklenthi。当同时满足以下几个条件时则判定该空闲块为压缩头+索引表+压缩数据”压缩类型块,条件如下:
(1)压缩头的前四个字节为0x00010000;
(2)索引表中索引的个数大于或等于1;
(3)其中,若compressblockoffseti<compressblockoffseti+1,则Q(i)=0,否则Q(i)=1;compressblockoffseti+1=compressblockoffseti+compressblocklenthi;即第i个压缩块的偏移值小于第i+1个压缩块的偏移值;
(4)compressblockoffset1+260位置的字节的值必须是在{0x78,0x56,0xE0,0xC0,0x68}集合中;即该数据块第compressblockoffset1+260个字节的值(相当于第一个压缩块的第261个字节的值)为0x78、0x56、0xE0、0xC0或0x68。
因此,在进行该步骤的判断时,先获取所述一空闲块的前四个字节;若所述前四个字节的值为0x00010000,则根据该空闲块的第261-264个字节的值,得知索引表的大小,然后从该空闲块的第265个字节开始获取得到索引表;若索引表不为空,且所述索引表中每一索引的前四个字节的值均小于其下一索引的前四个字节的值,则获取第compressblockoffset1+260个字节的值,若该值属于{0x78,0x56,0xE0,0xC0,0x68}集合,则判定所述一空闲块为第二类型数据块。
S12:根据所述索引表中各索引的值,读取并解压各压缩块的压缩数据,然后根据文件特征识别解压后的数据,确定文件类型,从而进一步恢复文件。执行步骤S3。
由于具备压缩属性的文件数据被压缩过,原先特有的文件特征就会丢失。因此,如果仅仅是采用传统的搜索文件特征的方式进行恢复,那是无效的。但如果能够将相应的压缩数据进行识别解压再进行头部签名的识别,那么就可以有效的处理压缩数据恢复出文件。同时,由于APFS作为苹果新推出的文件系统,其文件系统结构并未公开。因此,目前国内外没有软件能支持具备压缩属性的APFS删除文件的恢复,并且目前国内外尚未有相关的论文或专利。
本实施例通过扫描文件系统中未使用(删除数据库空间会跑到空闲空间中)的空闲空间,结合压缩数据以及文件系统块特征对数据进行识别并解压,同时结合文件特征头进行类型识别从而恢复文件。在被压缩数据未被覆盖的情况下可以完整的恢复出被删除的压缩数据,为APFS文件系统下压缩文件的恢复提供了解决方案,填补了国内外APFS下压缩删除文件恢复技术方面的空白,具有重大的创新意义。
实施例二
本实施例是对应上述实施例的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现以下步骤:
在空闲空间中依次获取一空闲块;
若所述一空闲块为文件信息节点块,且所述一空闲块存在压缩数据,则读取并解压所述压缩数据;
判断所述一空闲块是否为第一类型数据块,所述第一类型数据块包括索引表和压缩块,若是,则根据所述索引表中各索引的值,计算得到所述一空闲块中各压缩块的长度;
根据所述索引表以及各压缩块的长度,读取并解压各压缩块的压缩数据;
判断所述一空闲块是否为第二类型数据块,所述第二类型数据块包括压缩头、索引表和压缩块,若是,则根据所述索引表中各索引的值,读取并解压各压缩块的压缩数据。
进一步地,所述“在空闲空间中依次获取一空闲块”之前,进一步包括:
读取空间管理块和分配信息块;
解析所述分配信息块得到分配位图,并根据所述分配位图确定空闲空间。
进一步地,若所述一空闲块的第25至26个字节的值与文件信息节点块的块类型值相同,且所述一空闲块通过弗莱彻校验和校验算法计算得到的值与其前八个字节的值相同,则判定所述一空闲块为文件信息节点块。
进一步地,若所述一空闲块存在预设的属性和常驻属性,则判定所述一空闲块存在压缩数据。
进一步地,所述“判断所述一空闲块是否为第一类型数据块”具体为:
获取所述一空闲块的前四个字节;
若所述前四个字节不为零,且所述前四个字节的值模4为零,则根据所述前四个字节的值,获取所述一空闲块的索引表;
若所述索引表中每一索引的值均小于其下一索引的值,且所述索引表后第一个字节的值属于预设的第一集合,则判定所述一空闲块为第一类型数据块。
进一步地,第一类型数据块的索引表中各索引的值分别表示各压缩块的偏移值;
所述“根据所述索引表中各索引的值,计算得到所述一空闲块中各压缩块的长度”具体为:
若一压缩块不为所述一空闲块的最后一个压缩块,则将所述一压缩块的下一压缩块的偏移值减去所述一压缩块的偏移值,得到所述一压缩块的长度;
若一压缩块为所述一空闲块的最后一个压缩块,则根据第一公式依次计算得到第一长度,所述第一公式为:L=4096k-S%4096,L为第一长度,S为所述一压缩块的偏移值,k=1,2,3…;
依次将计算得到的第一长度的数据进行解压,获取解压成功的第一长度作为所述一压缩块的长度;
若第一长度大于66048字节时仍未解压成功,则判定所述一压缩块的长度为66048字节。
进一步地,所述“判断所述一空闲块是否为第二类型数据块”具体为:
获取所述一空闲块的前四个字节;
若所述前四个字节的值为预设的第一值,则根据所述一空闲块的预设第一位置的字节的值,获取所述一空闲块的索引表;
若所述索引表不为空,且所述索引表中每一索引的前四个字节的值均小于其下一索引的前四个字节的值,则获取预设第二位置的字节的值;
若所述预设第二位置的字节的值属于预设的第一集合,则判定所述二闲块为第一类型数据块。
进一步地,解压压缩数据之后,进一步包括:
根据文件特征识别解压后的数据,确定文件类型;
根据文件类型进行数据恢复。
综上所述,本发明提供的一种APFS文件系统的压缩文件恢复方法及存储介质,通过扫描文件系统中未使用的空闲空间,结合压缩数据以及文件系统块特征对数据进行识别,并将压缩数据解压出来,再结合文件特征进行恢复,从而实现对被删除的压缩数据的恢复。本发明在被压缩数据未被覆盖的情况下可以完整的恢复出被删除的压缩数据,为APFS文件系统下压缩文件的恢复提供了解决方案,对电子数据取证以及数据恢复具有重大的意义。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (8)
1.一种APFS文件系统的压缩文件恢复方法,其特征在于,包括:
在空闲空间中依次获取一空闲块;
若所述一空闲块为文件信息节点块,且所述一空闲块存在压缩数据,则读取并解压所述压缩数据;
判断所述一空闲块是否为第一类型数据块,所述第一类型数据块包括索引表和压缩块,若是,则根据所述索引表中各索引的值,计算得到所述一空闲块中各压缩块的长度,第一类型数据块的索引表中各索引的值分别表示各压缩块的偏移值;
根据所述索引表以及各压缩块的长度,读取并解压各压缩块的压缩数据;
判断所述一空闲块是否为第二类型数据块,所述第二类型数据块包括压缩头、索引表和压缩块,若是,则根据所述索引表中各索引的值,读取并解压各压缩块的压缩数据;
所述“根据所述索引表中各索引的值,计算得到所述一空闲块中各压缩块的长度”具体为:
若一压缩块不为所述一空闲块的最后一个压缩块,则将所述一压缩块的下一压缩块的偏移值减去所述一压缩块的偏移值,得到所述一压缩块的长度;
若一压缩块为所述一空闲块的最后一个压缩块,则根据第一公式依次计算得到第一长度,所述第一公式为:L=4096k-S%4096,L为第一长度,S为所述一压缩块的偏移值,k=1,2,3…;
依次将计算得到的第一长度的数据进行解压,获取解压成功的第一长度作为所述一压缩块的长度;
若第一长度大于66048字节时仍未解压成功,则判定所述一压缩块的长度为66048字节。
2.根据权利要求1所述的APFS文件系统的压缩文件恢复方法,其特征在于,所述“在空闲空间中依次获取一空闲块”之前,进一步包括:
读取空间管理块和分配信息块;
解析所述分配信息块得到分配位图,并根据所述分配位图确定空闲空间。
3.根据权利要求1所述的APFS文件系统的压缩文件恢复方法,其特征在于,若所述一空闲块的第25至26个字节的值与文件信息节点块的块类型值相同,且所述一空闲块通过弗莱彻校验和校验算法计算得到的值与其前八个字节的值相同,则判定所述一空闲块为文件信息节点块。
4.根据权利要求1所述的APFS文件系统的压缩文件恢复方法,其特征在于,若所述一空闲块存在预设的属性和常驻属性,则判定所述一空闲块存在压缩数据。
5.根据权利要求1所述的APFS文件系统的压缩文件恢复方法,其特征在于,所述“判断所述一空闲块是否为第一类型数据块”具体为:
获取所述一空闲块的前四个字节;
若所述前四个字节不为零,且所述前四个字节的值模4为零,则根据所述前四个字节的值,获取所述一空闲块的索引表;
若所述索引表中每一索引的值均小于其下一索引的值,且所述索引表后第一个字节的值属于预设的第一集合,则判定所述一空闲块为第一类型数据块。
6.根据权利要求1所述的APFS文件系统的压缩文件恢复方法,其特征在于,所述“判断所述一空闲块是否为第二类型数据块”具体为:
获取所述一空闲块的前四个字节;
若所述前四个字节的值为预设的第一值,则根据所述一空闲块的预设第一位置的字节的值,获取所述一空闲块的索引表;
若所述索引表不为空,且所述索引表中每一索引的前四个字节的值均小于其下一索引的前四个字节的值,则获取预设第二位置的字节的值;
若所述预设第二位置的字节的值属于预设的第一集合,则判定所述一空闲块为第二类型数据块。
7.根据权利要求1所述的APFS文件系统的压缩文件恢复方法,其特征在于,解压压缩数据之后,进一步包括:
根据文件特征识别解压后的数据,确定文件类型;
根据文件类型进行数据恢复。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711213488.6A CN108108394B (zh) | 2017-11-28 | 2017-11-28 | Apfs文件系统的压缩文件恢复方法及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711213488.6A CN108108394B (zh) | 2017-11-28 | 2017-11-28 | Apfs文件系统的压缩文件恢复方法及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108108394A CN108108394A (zh) | 2018-06-01 |
CN108108394B true CN108108394B (zh) | 2020-10-09 |
Family
ID=62207786
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711213488.6A Active CN108108394B (zh) | 2017-11-28 | 2017-11-28 | Apfs文件系统的压缩文件恢复方法及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108108394B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656929B (zh) * | 2018-12-25 | 2023-06-02 | 四川效率源信息安全技术股份有限公司 | 一种雕复关系型数据库文件的方法及装置 |
CN110232004A (zh) * | 2019-06-13 | 2019-09-13 | 深圳麦风科技有限公司 | 一种apfs文件系统数据恢复方法 |
CN110309019B (zh) * | 2019-07-02 | 2022-11-04 | 四川效率源信息安全技术股份有限公司 | 一种快速恢复并提取apfs中删除文件的方法 |
CN110297781B (zh) * | 2019-07-02 | 2023-05-02 | 四川效率源信息安全技术股份有限公司 | 一种基于写时复制来恢复apfs中被删除数据的方法 |
CN111078647B (zh) * | 2019-11-22 | 2023-09-22 | 北京安兔兔科技有限公司 | 一种非压缩文件的创建、磁盘测试方法、装置及电子设备 |
CN111414277B (zh) * | 2020-03-06 | 2023-10-20 | 网易(杭州)网络有限公司 | 数据恢复方法、装置、电子设备和介质 |
CN114461589B (zh) * | 2021-08-24 | 2023-04-11 | 荣耀终端有限公司 | 读取压缩文件的方法、文件系统及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102624537A (zh) * | 2011-01-27 | 2012-08-01 | 北京东方广视科技股份有限公司 | 一种数据恢复系统及方法 |
CN104199888A (zh) * | 2014-08-25 | 2014-12-10 | 厦门市美亚柏科信息股份有限公司 | 弹性文件系统的数据恢复方法和装置 |
CN104199967A (zh) * | 2014-09-22 | 2014-12-10 | 广东欧珀移动通信有限公司 | 一种手机文件的恢复方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070150887A1 (en) * | 2005-12-22 | 2007-06-28 | Shapiro Alan J | Apparatus and method for selectively dispensing soft assets |
-
2017
- 2017-11-28 CN CN201711213488.6A patent/CN108108394B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102624537A (zh) * | 2011-01-27 | 2012-08-01 | 北京东方广视科技股份有限公司 | 一种数据恢复系统及方法 |
CN104199888A (zh) * | 2014-08-25 | 2014-12-10 | 厦门市美亚柏科信息股份有限公司 | 弹性文件系统的数据恢复方法和装置 |
CN104199967A (zh) * | 2014-09-22 | 2014-12-10 | 广东欧珀移动通信有限公司 | 一种手机文件的恢复方法及装置 |
Non-Patent Citations (1)
Title |
---|
Decoding the APFS file System;Kurt H. Hansen 等;《https://doi.org/10.1016/j.diin.2017.07.003》;20170906;107-132 * |
Also Published As
Publication number | Publication date |
---|---|
CN108108394A (zh) | 2018-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108108394B (zh) | Apfs文件系统的压缩文件恢复方法及存储介质 | |
US9390099B1 (en) | Method and apparatus for improving a compression ratio of multiple documents by using templates | |
US20110022718A1 (en) | Data Deduplication Apparatus and Method for Storing Data Received in a Data Stream From a Data Store | |
US9483533B2 (en) | Method and apparatus for processing time series data | |
US8972358B2 (en) | File storage apparatus, file storage method, and program | |
US20130067237A1 (en) | Providing random access to archives with block maps | |
CN107395209B (zh) | 数据压缩方法、数据解压缩方法及其设备 | |
CN107682016B (zh) | 一种数据压缩方法、数据解压方法及相关系统 | |
US8189912B2 (en) | Efficient histogram storage | |
Povar et al. | Forensic data carving | |
CN113157655A (zh) | 一种数据压缩、解压方法、装置、电子设备和存储介质 | |
US9236881B2 (en) | Compression of bitmaps and values | |
US8909606B2 (en) | Data block compression using coalescion | |
US8209303B2 (en) | System and method for implementing a reliable persistent random access compressed data stream | |
CN104794025B (zh) | 快速校验存储设备的方法 | |
US11461269B2 (en) | Metadata separated container format | |
JP2010061518A (ja) | データ保存装置及びデータ保存方法並びにプログラム | |
CN111061428B (zh) | 一种数据压缩的方法及装置 | |
CN109960731B (zh) | 一种数据处理方法、设备及存储介质 | |
CN116319815A (zh) | 引入SaaS特征的云数据放置策略管理系统 | |
US11652495B2 (en) | Pattern-based string compression | |
CN109271463B (zh) | 一种恢复MySQL数据库的innodb压缩数据的方法 | |
WO2020088211A1 (zh) | 压缩数据、解压缩数据的方法和相关装置 | |
CN106789232B (zh) | 一种高效的信息流程化的处理控制系统 | |
CN111767171B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |