CN102024060B - 存储文件及恢复误删除文件的方法 - Google Patents
存储文件及恢复误删除文件的方法 Download PDFInfo
- Publication number
- CN102024060B CN102024060B CN201010620631A CN201010620631A CN102024060B CN 102024060 B CN102024060 B CN 102024060B CN 201010620631 A CN201010620631 A CN 201010620631A CN 201010620631 A CN201010620631 A CN 201010620631A CN 102024060 B CN102024060 B CN 102024060B
- Authority
- CN
- China
- Prior art keywords
- district
- bunch
- round
- file
- space
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种存储文件及恢复误删除文件的方法。本发明主要是解决现有方法存在的文件被删除后无法恢复的技术问题。本发明的技术方案是:一种存储文件及恢复误删除文件的方法,其包括以下步骤:(1)首先将存储介质空间分成四种状态:空白、已占用、已删除和坏簇;(2)在存储介质分区中建立一个伪循环队列;(3)在存储介质分区中建立一个指针区;(4)当需要存储文件时,直接将空白区开始位置对应的存储介质空间分配给该文件;(5)当删除文件时,通过对循环队列区中相应单元进行数据交换,将该文件所占用空间的索引放到伪循环队列的已删除区的最后位置;(6)当需要恢复被删除的文件时,在已删除区中找到该文件并将其恢复。
Description
技术领域
本发明涉及一种存储文件及恢复误删除文件的方法,它属于一种计算机存储文件及恢复误删除文件的方法。
背景技术
数据的重要性不言而喻,然而随着各种存储设备(磁盘、移动硬盘或U盘)越来越广泛的应用,存储在介质上的数据经常发生误删除后又被覆盖,以至于不能恢复的灾难性事故。
在现有的各种文件系统(如FAT、NTFS等)中,文件一旦被删除,其所占用的空间就会被认为是可用空间,在新写入文件的时候,很容易将此空间覆盖,从而导致被删除的文件无法恢复。
发明内容
本发明的目的是解决现有方法存在的文件被删除后容易被覆盖而导致无法恢复的技术问题,提供一种能提高文件恢复成功率的存储文件及恢复误删除文件的方法。
本发明为解决上述技术问题而采用的技术方案是:一种存储文件及恢复误删除文件的方法,其包括以下步骤:
(1)首先将存储介质空间分成四种状态:空白、已占用、已删除和坏簇;所述空白是指该空间没有任何数据;所述已占用是指该空间已写入了文件;所述已删除是指该空间已写入了文件,但该文件已被删除;所述坏簇是指该空间已损坏;
(2)在存储介质分区中建立一个伪循环队列,上述步骤中的四种状态在伪循环队列中对应四个区域:空白区、已占用区、已删除区和坏簇区;
(3)在存储介质分区中建立一个指针区,用于记录伪循环队列中四个区对应的位置及长度;
(4)当需要存储文件时,直接将空白区开始位置对应的存储介质空间分配给该文件,如果空白区已全部用完,则将已删除区中开始位置对应的存储介质空间分配给该文件;
(5)当删除文件时,通过对循环队列区中文件对应的单元进行数据交换,将该文件所占用空间的索引放到伪循环队列的已删除区的最后位置;
(6)当需要恢复被删除的文件时,在已删除区中找到该文件并将其恢复;
所述伪循环队列由两部分组成,分别为循环队列(Cirular Queue,缩写为CQ)区和簇索引(Cluster Index,缩写为CI)区。循环队列区是一个循环队列,其长度为n,n为该分区中簇的总数,循环队列区中的每个单元中存储了对应簇索引区的地址索引;簇索引区对应实际的簇的位置,其长度为也为n,簇索引区中的每个单元与实际的簇按顺序一一对应。
在没有坏簇时的正常状态下,每个区域在伪循环队列中都是连续存放,对应的物理空间则是随机存放;当有坏簇时,坏簇区在伪循环队列中连续存放,其对应的物理空间是随机存放。
由于本发明采用了上述技术方案,极大的提高了误删除数据的恢复成功率。因此,与背景技术相比,本发明具有下列优点:
1、在存储介质上写入的总数据量(包括被删除的文件)没有达到存储介质的总容量时,被删除的文件可以100%被恢复。
2、在存储介质上写入的总数据量超过了存储介质的总容量时,只是最早删除的文件被覆盖,而最近删除的文件则可以被完整地恢复,大大提高了恢复文件的成功机率。存储介质可用空间的容量越大,恢复的成功率越高。
附图说明
图1是本发明中文件系统的分区结构图;
图2是空间状态迁移图;
图3是正常情况下伪循环队列的逻辑结构图;
图4是没有空白区时伪循环队列的逻辑结构图;
图5是有坏簇时伪循环队列的逻辑结构图;
图6是分区格式化后伪循环队列的逻辑结构图;
图7是分区格式化后伪循环队列的存储结构示意图;
图8是新增三个文件后伪循环队列的逻辑结构图;
图9是新增三个文件后伪循环队列的存储结构示意图;
图10是删除文件F2后伪循环队列的逻辑结构图;
图11是删除文件F2后伪循环队列的存储结构示意图;
图12是删除文件F3并新建文件F4后伪循环队列的逻辑结构图;
图13是删除文件F3并新建文件F4后伪循环队列的存储结构示意图;
图14是有坏簇时伪循环队列的逻辑结构图;
图15是有坏簇时伪循环队列的存储结构示意图。
具体实施方式
下面结合附图和实施例对本发明做进一步的详细说明。
一种存储文件及恢复误删除文件的方法,其包括以下步骤:
(1)首先将存储介质空间分成四种状态:空白、已占用、已删除和坏簇;所述空白是指该空间没有任何数据;所述已占用是指该空间已写入了文件;所述已删除是指该空间已写入了文件,但该文件已被删除;所述坏簇是指该空间已损坏;
(2)在存储介质分区中建立一个伪循环队列,上述步骤中的四种状态在伪循环队列中对应四个区域:空白区、已占用区、已删除区和坏簇区;
(3)在存储介质分区中建立一个指针区,用于记录伪循环队列中四个区对应的位置及长度;
(4)当需要存储文件时,直接将空白区开始位置对应的存储介质空间分配给该文件,如果空白区已全部用完,则将已删除区中开始位置对应的存储介质空间分配给该文件;
(5)当删除文件时,通过对循环队列区中文件对应的单元进行数据交换,将该文件所占用空间的索引放到伪循环队列的已删除区的最后位置;
(6)当需要恢复被删除的文件时,在已删除区中找到该文件并将其恢复。
所述伪循环队列由两部分组成,分别为循环队列(Cirular Queue,缩写为CQ)区和簇索引(Cluster Index,缩写为CI)区,循环队列区是一个循环队列,其长度为n,n为该分区中簇的总数,循环队列区中的每个单元中存储了对应簇索引区的地址索引;簇索引区对应实际的簇的位置,其长度也为n,簇索引区中的每个单元与实际的簇按顺序一一对应。
在没有坏簇时的正常状态下,每个区域在伪循环队列中都是连续存放,对应的物理空间则可以是随机存放;当有坏簇时,坏簇区在伪循环队列中连续存放,其对应的物理空间可以是随机存放。
如图1所示,本发明系统的分区结构按顺序分为9个部分:引导扇区,指针区,指针备份区,保留扇区,循环队列(CQ)区,簇索引(CI)区,循环队列(CQ)备份区,簇索引(CI)备份区,目录及数据区。其中CQ区和CI区组成了伪循环队列。所述引导扇区:占1个扇区,记录每扇区字节数、每簇扇区数、总簇数、保留扇区的长度、伪循环队列长度、版本号等信息。所述指针区:占1个扇区,记录伪循环列中所用到的指针及各个区的长度;其结构以C语言表示为:
所述指针备份区:占1个扇区,指针区的备份;正常情况下内容与指针区完全相同。
所述保留扇区:保留以后用,其长度记录在引导扇区中,其长度可以为0。
所述CQ区:CQ区是一个循环队列,其长度为n,n为该分区中簇的总数,每个单元中存储了对应CI区的地址索引。CQ区中每个单元的数据结构以C语言表示为:
所述CI区:对应实际的簇的位置,其长度为n,n为该分区中簇的总数。CI区中的每个单元与实际的簇按顺序一一对应。每个单元中存储的值可表示四种情况:
A.值为空标志(比如将0作为空标志),表示该单元对应的簇没有存放数据。
B.值指向下一个单元,所指向的单元对应文件所占的下一个簇。
C.值为结束标志(比如将FFFFFFFF作为结束标志),表示该单元是文件所占的最后一个簇。
D.值为坏簇标志(比如将FFFFFFFE作为坏簇标志),表示该单元对应的簇为坏簇。
CI区中每个单元的数据结构以C语言表示为:
所述CQ备份区:CQ区的备份,正常情况下内容与CQ区完全相同。
所述CI备份区:CI区的备份,正常情况下内容与CI区完全相同。
所述目录及数据区:存储文件的目录及其数据。簇从目录及数据区开始算起。
如图3所示,伪循环队列在逻辑上可以看作是一个循环队列。在正常状态下,在伪循环队列中,分区中空间的状态为三种:空白、已删除和已占用。所述空白:此空间无任何有用信息,可以优先占用。所述已删除:原先存在过文件,但已被系统删除。只要有空白状态的空间,则不占据此空间。此状态的空间按文件被删除的时间来排序,系统优先占用最先被删除的空间。所述已占用:此状态的空间表示正常的、有用的文件信息。
三种状态之间的转换关系如图2所示,其状态迁移条件如下:
条件1:写入文件,由空白状态变为已占用状态。
条件2:删除文件,由已占用状态变为已删除状态。
条件3:写入文件,由已删除状态变为已占用状态。此时写入文件的条件为:无空白状态空间,且此空间是最早被删除的空间。
条件4:粉碎文件,由已占用状态变为空白状态。
在明确状态之后,要根据上述三种状态的迁移条件,动态的维护伪循环队列,使队列一直符合以下条件:
如图3所示,队列中有三个连续区域:空白区,已删除区,已占用区,分别对应三种状态:空白、已删除、已占用的空间,三个区域循环排列。队列中有一个指针,指向空白区域,向存储介质中写入文件后,指针将按顺时针方向移动,并将写入的部分变为已占用区。如果空白区全部用完,则指向已删除区,此时再写入文件时将覆盖最早被删除的文件,如图4所示。
当存储介质中有坏簇的时候,将在伪循环队列增加一个坏簇区,如图5所示,所有对文件的操作将跳过坏簇区。
下面举例说明本发明如何利用伪循环队列来工作。
(1)以本发明分区格式化后,分区中伪循环队列的逻辑结构如图6所示,簇1被占作根目录区,其余全部是空白区。图7为伪循环队列的存储结构图,此时CQ区的每个单元与CI区的每个单元按顺序一一对应,已占用区首指针P2指向第CQ区的第1个单元,空白区首指针P1指向CQ区的第2个单元。图7中,簇1所对应的CI区单元值为X,X为簇结束标志,表示此簇为对应文件(根目录被认为是一个文件)的最后一个簇。X的值可以为FFFFFFFF。图7中的双向箭头表示CQ区中各单元与CI区中元的对应关系。
(2)如果要新建文件时,首先检索CQ区中空白区首指针所指向的单元,该单元的内容指向了CI区中的某单元,将该单元对应的簇分配给该文件即可。假设在根目录中新建3个文件:文件F1(占3簇),文件F2(占2簇),文件F3(占1簇),在根目录对应的簇中保存了文件的名称、长度、首簇地址等信息。此时伪循环队列的逻辑结构如图8,存储结构如图9。在图9中,文件F1的首簇为2,其对应的CI区单元值为3,表示文件F1所占用的下一个簇为簇3。簇3对应的CI区单元值为4,表示文件F1所占用的下一个簇为簇4。簇4对应的值为X(簇结束标志),表示簇4为文件F1的最后一个簇。因此,文件F1占用了3个簇,其顺序为簇2、簇3、簇4。同理文件F2占用了2个簇,分别为簇5、簇6。文件F3占用了一个簇,簇7。此时,P1(空白区首指针)指向了CQ区的第8个单元。
(3)删除文件F2。文件F2占用了两个簇,簇5和簇6,因此,需要将这两个簇放到已删除区。其实现方法是将簇5对应的CQ区单元与P2(已占用区首指针)所指向的CQ区单元对调,将P2向右前进一格,然后将簇6对应的CQ区单元与P2所指向的CQ区单元对调。其结果如图10和图11。
(4)同理,假设再删除一个文件F3,然后再新建一个文件F4(占两个簇),此时伪循环队列逻辑结构与存储结构见图12和图13。由图12和图13可知,文件F3放在了文件F2的后面,文件F4则占用了空白区中的空间,没有覆盖被删除的文件F2所占的空间。当空白区被占满后,最先被覆盖的空间是最早被删除的文件F2所占的空间。通过这种机制就实现了被删除文件按被删除时排序和不被覆盖的目的。
(5)如果出现了坏簇,伪循环队列中将出现一个坏簇区,用来标记所有的坏簇。比如,簇10和簇n-1为坏簇,则伪循环队列的结构如图14和图15所示。图15中,簇10所对应的CI区单元值为Y,Y为坏簇标志,表示此簇为坏簇。Y的值可以为FFFFFFFE。
(6)如果想恢复文件F2,其操作步骤为:
A.首先从根目录区搜索到文件F2的信息,确定其首簇为5。
B.通过CI区第5单元和第6单元的值,确定文件F2所占的簇为簇5和簇6。
C.读出簇5和簇6的内容,将其恢复为一个文件。
Claims (2)
1.一种存储文件及恢复误删除文件的方法,其特征是:包括以下步骤:
(1)首先将存储介质空间分成四种状态:空白、已占用、已删除和坏簇;所述空白是指该空间没有任何数据;所述已占用是指该空间已写入了文件;所述已删除是指该空间已写入了文件,但该文件已被删除;所述坏簇是指该空间已损坏;
(2)在存储介质分区中建立一个伪循环队列,上述步骤中的四种状态在伪循环队列中对应四个区域:空白区、已占用区、已删除区和坏簇区;
(3)在存储介质分区中建立一个指针区,用于记录伪循环队列中四个区对应的位置及长度;
(4)当需要存储文件时,直接将空白区开始位置对应的存储介质空间分配给该文件,如果空白区已全部用完,则将已删除区中开始位置对应的存储介质空间分配给该文件;
(5)当删除文件时,通过对循环队列区中文件对应的单元进行数据交换,将该文件所占用空间的索引放到伪循环队列的已删除区的最后位置;
(6)当需要恢复被删除的文件时,在已删除区中找到该文件并将其恢复;
所述伪循环队列由两部分组成,分别为循环队列(Cirular Queue)区和簇索引(Cluster Index)区,循环队列区是一个循环队列,其长度为n,n为该分区中簇的总数,循环队列区中的每个单元中存储了对应簇索引区的地址索引;簇索引区对应实际的簇的位置,其长度也为n,簇索引区中的每个单元与实际的簇按顺序一一对应。
2.根据权利要求1所述的存储文件及恢复误删除文件的方法,其特征是:在没有坏簇时的正常状态下,每个区域在伪循环队列中都是连续存放,对应的物理空间则是随机存放;当有坏簇时,坏簇区在伪循环队列中连续存放,其对应的物理空间是随机存放。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010620631A CN102024060B (zh) | 2010-12-31 | 2010-12-31 | 存储文件及恢复误删除文件的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010620631A CN102024060B (zh) | 2010-12-31 | 2010-12-31 | 存储文件及恢复误删除文件的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102024060A CN102024060A (zh) | 2011-04-20 |
CN102024060B true CN102024060B (zh) | 2012-10-24 |
Family
ID=43865357
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010620631A Expired - Fee Related CN102024060B (zh) | 2010-12-31 | 2010-12-31 | 存储文件及恢复误删除文件的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102024060B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102375888A (zh) * | 2011-10-25 | 2012-03-14 | 无锡城市云计算中心有限公司 | 一种分布式文件系统中大文件高效删除的方法 |
CN103514177A (zh) * | 2012-06-20 | 2014-01-15 | 盛趣信息技术(上海)有限公司 | 数据存储方法及系统 |
CN104246716B (zh) * | 2012-12-19 | 2018-02-09 | 华为技术有限公司 | 存储空间对象的处理方法及设备 |
CN103902695A (zh) * | 2014-03-28 | 2014-07-02 | 山西奥克斯电子系统工程中心 | 存储文件加密保护及快速销毁的方法 |
CN106599115B (zh) * | 2016-11-30 | 2022-12-20 | Oppo广东移动通信有限公司 | 数据保护方法、装置及终端 |
CN108959955B (zh) * | 2018-06-06 | 2022-06-07 | Oppo广东移动通信有限公司 | 文件处理方法及装置 |
CN112286866A (zh) * | 2020-10-23 | 2021-01-29 | 星辰天合(北京)数据科技有限公司 | 数据处理方法及装置、电子设备、计算机可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1959677A (zh) * | 2006-11-29 | 2007-05-09 | 北京中星微电子有限公司 | 一种文件系统的目录项整理方法 |
CN1963810A (zh) * | 2005-11-09 | 2007-05-16 | 康佳集团股份有限公司 | 在Flash存储介质上的关于文件分配表的缓存实现方法 |
CN101034416A (zh) * | 2007-04-25 | 2007-09-12 | 北京中星微电子有限公司 | 一种利用文件分配表进行文件寻道的方法及系统架构 |
CN101051317A (zh) * | 2007-05-11 | 2007-10-10 | 北京中星微电子有限公司 | 一种fat文件系统及其处理方法 |
CN101286177A (zh) * | 2008-05-30 | 2008-10-15 | 中兴通讯股份有限公司 | 一种在文件分配表中给文件分配空间的方法及装置 |
CN101692252A (zh) * | 2009-08-31 | 2010-04-07 | 上海宝信软件股份有限公司 | 文件空闲块的分配和回收方法 |
-
2010
- 2010-12-31 CN CN201010620631A patent/CN102024060B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1963810A (zh) * | 2005-11-09 | 2007-05-16 | 康佳集团股份有限公司 | 在Flash存储介质上的关于文件分配表的缓存实现方法 |
CN1959677A (zh) * | 2006-11-29 | 2007-05-09 | 北京中星微电子有限公司 | 一种文件系统的目录项整理方法 |
CN101034416A (zh) * | 2007-04-25 | 2007-09-12 | 北京中星微电子有限公司 | 一种利用文件分配表进行文件寻道的方法及系统架构 |
CN101051317A (zh) * | 2007-05-11 | 2007-10-10 | 北京中星微电子有限公司 | 一种fat文件系统及其处理方法 |
CN101286177A (zh) * | 2008-05-30 | 2008-10-15 | 中兴通讯股份有限公司 | 一种在文件分配表中给文件分配空间的方法及装置 |
CN101692252A (zh) * | 2009-08-31 | 2010-04-07 | 上海宝信软件股份有限公司 | 文件空闲块的分配和回收方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102024060A (zh) | 2011-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102024060B (zh) | 存储文件及恢复误删除文件的方法 | |
CN101968795B (zh) | 一种数据块长度可变的文件系统缓存方法 | |
KR100922389B1 (ko) | 플래시 메모리를 위한 색인 스킴 | |
US7363420B2 (en) | Method and file structures for managing data on a flash disk | |
CN101751406B (zh) | 一种实现基于列存储的关系型数据库的方法及装置 | |
CN104238962B (zh) | 向缓存中写入数据的方法及装置 | |
CN101488153A (zh) | 嵌入式Linux下大容量闪存文件系统的实现方法 | |
CN101515276B (zh) | 一种文件数据写操作的方法、文件数据恢复方法及系统 | |
CN103838853B (zh) | 一种基于不同存储介质的混合文件系统 | |
CN103064639A (zh) | 数据存储方法及装置 | |
US10496612B2 (en) | Method for reliable and efficient filesystem metadata conversion | |
WO2014015828A1 (zh) | 数据存储空间的处理方法、处理系统及数据存储服务器 | |
CN101187901A (zh) | 一种实现文件访问的高速缓存系统和方法 | |
CN105138286A (zh) | 一种在磁盘文件系统中混合利用ssd和smr硬盘的方法 | |
CN102201005A (zh) | 一种文件系统的流媒体增强文件布局方法 | |
CN101571869A (zh) | 一种智能卡的文件存储、读取方法及装置 | |
CN102169460A (zh) | 变长数据管理方法及装置 | |
CA2758235A1 (en) | Device and method for storage, retrieval, relocation, insertion or removal of data in storage units | |
CN109407985B (zh) | 一种数据管理的方法以及相关装置 | |
CN105045850A (zh) | 云存储日志文件系统中垃圾数据回收方法 | |
CN103473258A (zh) | 云存储文件系统 | |
CN113704217A (zh) | 一种分布式持久性内存文件系统中元数据及数据组织架构方法 | |
KR101438667B1 (ko) | 비휘발성 램 기반의 b+ 트리 데이터베이스화 방법 | |
CN103823641B (zh) | 一种在线扩容的虚拟卷系统及其实现方法 | |
CN103544124A (zh) | Nand Flash存储器的访问方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121024 Termination date: 20191231 |
|
CF01 | Termination of patent right due to non-payment of annual fee |