苹果主流文件系统是HFS/HFS+/HFSX,广泛应用于苹果硬件产品,其中包括MAC机器、IPHONE、IPAD、IPOD系列。在数据恢复业务中,经常会碰到苹果设备的数据恢复案例,例如MAC机器误删除了数据,MAC机器分区损坏误格式化等,IPHONE、IPAD同步以后照片等资料丢失,IPHONE、IPAD误删除文件等等,都属于苹果HFS/HFS+/HFSX文件系统级别的数据丢失,数据恢复也要从文件系统的结构特点去分析挖掘才能得出正确的恢复方法。
HFS/HFS+/HFSX文件系统采用B+ Tree的文件目录存储结构。当创建一个文件时,操作系统就会往B+ Tree的结构中添加一个节点;当删除一个文件时,就会从B+Tree的结构中释放一个节点。删除后释放出的节点大都会清空数据指针信息,所以要从原始节点信息去寻找删除文件的指针信息,几乎是不可能的事情。
好在HFS/HFS+/HFSX在格式化的时候可以带有日志功能,就像我写的另一篇文章“给你一个惊喜:EXT3/EXT4文件系统数据删除后的数据恢复”一样,文件系统带有日志功能,对文件的操作记录(创建、更改、删除)会在日志中保留有相关记录信息。
但是苹果文件系统日志在记录方式上,跟EXT3/EXT4等日志文件系统采用的记录方法不一样,在EXT3/EXT4文件系统上,当删除一个文件,操作系统先把这个文件的inode节点信息保存在日志文件中,然后才去清除原始inode的数据指针信息,这样我们从日志文件中能找到该文件删除之前的inode完整的信息,找到inode,我们就能把文件恢复出来。在苹果文件系统中,当创建一个文件时,文件的节点信息先保存在日志里,然后再写入文件系统相应位置;当删除一个文件时,文件系统把删除后清空的节点信息写入日志中,然后才去更新文件原始节点信息,这样一来,删除文件后,日志文件中的节点信息和文件原始节点信息都是一样的,都是清空后的节点信息,这个节点信息对于数据恢复来说,没有任何用处!既然这样,我们讨论从日志文件恢复删除文件到底有没有可能呢?
一切皆有可能!我在开始研究苹果文件系统的时候,也是认为不可能实现文件删除后的恢复,但是经过了几个数据恢复案例以后,我得出的结论是:有可能恢复!我们来想想,文件的创建、修改、删除,都是往日志中记录节点信息的,在删除的这个环节上,节点信息记录的是清空数据指针后的信息,对数据恢复没有任何帮助。但是文件系统中文件的存在,它的必经之路是“创建”,有可能还有“修改”,到最后才有可能“删除”,我们从文件的“创建”和“修改” 这两个环节中,去寻找日志中的文件节点记录信息,如果有,就能恢复出来!当然,苹果文件系统的日志文件空间分配也是有限的,当日志文件占满以后,会循环使用该文件存储空间,如果有大量的文件操作,删除文件以后,不一定能找到它的“创建”和“修改”痕迹,这样就不好恢复,除非文件是连续存放在磁盘中,否则很难拼接出他的原始内容。
另外,顺便提一下IPHONE的通讯录、短消息、邮件等删除后的恢复技术,对IPHONE中通讯录、短消息、邮件 等删除操作并没有涉及到文件系统成面,涉及到的关键技术是sqllite数据库,经过对sqllite数据库底层结构的完全剖析,通讯录、短消息、邮件等删除还是可以恢复的,IPHONE经过几代的升级,通讯录、短消息、邮件的记录方式以及预留的反删除选项增加,所以IPHONE通讯录、短消息、邮件等删除以后,只要没有太多数据写入,数据恢复可能性还是很大的。
根据以上技术分析,我们把苹果文件系统删除数据后的恢复技术集成到了D-Recovery For MAC 数据恢复软件中。