一种基于linux文件系统的文件彻底删除方法及装置与流程

文档序号:17476011发布日期:2019-04-20 06:07阅读:172来源:国知局
一种基于linux文件系统的文件彻底删除方法及装置与流程

本发明属于数据清理技术领域,具体涉及一种基于linux文件系统的文件彻底删除方法及装置。



背景技术:

在linux操作系统下,删除本机的文件和目录,通常使用rm命令或者直接通过界面删除,这是不能彻底删除数据的。linux上还可以使用shred命令或wipe来彻底删除文件,但是有一些失效或不保证有效的场景,其中一个就是“有纪录结构或是日志式文件系统”,也就是说在ext3日志系统的data=journal模式下,是不保证有效的。



技术实现要素:

针对现有技术的不足,本发明提供一种文件系统彻底删除方法、装置、终端及存储介质,以解决上述技术问题。

第一方面,本申请实施例提供一种基于linux文件系统的文件彻底删除方法,所述方法包括:

读取目标文件所在磁盘分区的块组描述符表并根据块组描述符表的内容结构获取各块组的i节点表起始块号;

根据目标文件的i节点号和所在块组的i节点表起始块号获取相应i节点信息;

根据目标文件对应的i节点信息清除所述目标文件的文件数据;

根据目标文件的父目录的i节点信息清理所述目标文件的目录项;

根据文件系统日志对应的i节点信息清除所述目标文件所在文件系统的日志。

结合第一方面,在第一方面的第一种实施方式中,所述根据目标文件的i节点号和所在块组的i节点表起始块号获取相应i节点信息包括:

根据目标文件的i节点号以及每个块组包含的i节点数获取该i节点所在块组及相对i节点号;

根据i节点所在块组的i节点表起始块号和相对i节点号计算该i节点所在的磁盘位置;

根据所述位置读取相应i节点信息。

结合第一方面,在第一方面的第二种实施方式中,所述根据文件数据对应的i节点信息清除所述目标文件的文件数据包括:

根据目标文件的i节点信息获取目标文件的扩展属性并根据所述扩展属性获取目标文件的目录树结构;

根据所述目录树结构及i节点信息使用不同方法获取文件数据位置;

根据所述文件数据位置进行数据擦除。

结合第一方面,在第一方面的第三种实施方式中,所述根据目录项对应的i节点信息清理所述目标文件的目录项包括:

获取目标文件所在目录的i节点号作为父节点号并获取目录项的i节点信息;

根据文件名长度以及目录项的填充原则计算目录项长度;

根据目录项长度获取目录项定位信息;

根据所述目录项定位信息以及目录项的特征信息擦除目录项中的已删除文件的文件名信息。

结合第一方面,在第一方面的第四种实施方式中,所述根据文件系统日志对应的i节点信息清除目标文件所在文件系统的日志包括:

根据文件系统的日志i节点信息获取日志数据位置;

根据所述日志数据位置擦除除日志超级块外的所有日志数据块。

第二方面,本申请实施例提供一种基于linux文件系统的文件彻底删除装置,所述装置包括:

系统读取单元,配置用于读取目标文件所在磁盘分区的块组描述符表并根据块组描述符表的内容结构获取各块组的i节点表起始块号;

信息获取单元,配置用于根据目标文件的i节点号和所在块组的i节点表起始块号获取相应i节点信息;

文件清除单元,配置用于根据目标文件对应的i节点信息清除所述目标文件的文件数据;

痕迹清理单元,配置用于根据目标文件的父目录的i节点信息清理所述目标文件的目录项信息;

日志清理单元,配置用于根据文件系统日志对应的i节点信息清除所述目标文件所在文件系统的日志。

结合第二方面,在第二方面的第一种实施方式中,所述信息获取单元包括:

块组定位模块,配置用于根据目标文件的i节点号以及每个块组包含的i节点数获取该i节点所在块组及相对i节点号;

偏移计算模块,配置用于根据i节点所在块组的i节点表起始块号和相对i节点号计算该i节点所在的磁盘位置;

信息获取模块,配置用于根据所述位置获取相应i节点信息。

结合第二方面,在第二方面的第二种实施方式中,所述文件清除单元包括:

文件特征模块,配置用于根据目标文件的i节点信息获取目标文件的扩展属性并根据所述扩展属性获取目标文件的目录树结构;

文件定位模块,配置用于根据目录树结构及i节点信息使用不同方法获取文件数据位置;

文件擦除模块,配置用于根据所述文件数据位置进行数据擦除。

结合第二方面,在第二方面的第三种实施方式中,所述痕迹清理单元包括:

痕迹获取模块,配置用于获取目标文件所在目录的i节点号作为父节点号并获取目录项的i节点信息;

长度计算模块,配置用于根据文件名长度以及目录项的填充原则计算目录项长度;

痕迹定位模块,配置用于根据目录项长度获取目录项定位信息;

痕迹擦除模块,配置用于根据所述目录项定位信息以及目录项的特征信息擦除目录项中的已删除文件的文件名信息。

结合第二方面,在第二方面的第四种实施方式中,所述日志清理单元包括:

日志定位模块,配置用于根据文件系统的日志i节点信息获取日志数据位置;

日志擦除模块,配置用于根据所述日志数据位置擦除除日志超级块外的所有日志数据块。

第三方面,提供一种终端,包括:

处理器、存储器,其中,

该存储器用于存储计算机程序,

该处理器用于从存储器中调用并运行该计算机程序,使得终端执行上述的终端的方法。

第四方面,提供了一种计算机存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

本发明的有益效果在于,

本发明提供的文件系统彻底删除方法、装置、终端及存储介质,通过获取目标文件所在磁盘分区的块组描述符表计算得到各个块组的i节点表起始块号,从而在已知目标文件的i节点号的前提下能够获取相应的i节点信息,根据i节点信息实现数据的定位和擦除。本发明能够保证彻底消除目标文件的磁盘数据和痕迹,并删除日志,避免通过技术手段恢复数据。

此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请一个实施例的方法的示意性流程图。

图2是本申请一个实施例的方法的ext3文件系统的结构示意图。

图3是本申请一个实施例的装置的示意性框图。

图4是本申请一个实施例的终端的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

下面对本申请中出现的关键术语进行解释。

图1是本申请一个实施例的方法的示意性流程图。其中,图1执行主体可以为一种文件系统彻底删除装置。

如图1所示,该方法100包括:

步骤110,读取目标文件所在磁盘分区的块组描述符表并根据块组描述符表的内容结构获取各块组的i节点表起始块号;

步骤120,根据目标文件的i节点号和所在块组的i节点表起始块号获取相应i节点信息;

步骤130,根据目标文件对应的i节点信息清除所述目标文件的文件数据;

步骤140,根据目标文件的父目录的i节点信息清理所述目标文件的目录项信息;

步骤150,根据文件系统日志对应的i节点信息清除所述目标文件所在文件系统的日志。

可选地,作为本申请一个实施例,所述根据目标文件的i节点号和所在块组的i节点表起始块号获取相应i节点信息包括:

根据目标文件的i节点号以及每个块组包含的i节点数获取该i节点所在块组及相对i节点号;

根据i节点所在块组的i节点表起始块号和相对i节点号计算该i节点所在的磁盘位置;

根据所述位置获取相应i节点信息。

可选地,作为本申请一个实施例,所述根据文件数据对应的i节点信息清除所述目标文件的文件数据包括:

根据目标文件的i节点信息获取目标文件的扩展属性并根据所述扩展属性获取目标文件的目录树结构;

根据所述目录树结构及i节点信息使用不同方法获取文件数据位置;

根据所述文件数据位置进行数据擦除。

可选地,作为本申请一个实施例,所述根据目录项对应的i节点信息清理所述目标文件的目录项包括:

获取目标文件所在目录的i节点号作为父节点号并获取目录项的i节点信息;

根据文件名长度以及目录项的填充原则计算目录项长度;

根据目录项长度获取目录项定位信息;

根据所述目录项定位信息以及目录项的特征信息擦除目录项中的已删除文件的文件名信息。

可选地,作为本申请一个实施例,所述根据文件系统日志对应的i节点信息清除目标文件所在文件系统的日志包括:

根据文件系统的日志i节点信息获取日志数据位置;

根据所述日志数据位置擦除除日志超级块外的所有日志数据块。

为了便于对本发明的理解,下面以本发明基于linux文件系统的文件彻底删除方法的原理,结合实施例中对目标文件进行删除的过程,对本发明提供的基于linux文件系统的文件彻底删除方法做进一步的描述。

具体的,所述文件彻底删除方法包括:

s1、确认目标文件所在磁盘分区的文件系统信息,读取超级块以及块组描述符表。

作为参考,图2为ext3文件系统的整体结构。其中可以根据块组描述符得到各块组的i节点表起始块号。

s2、根据目标文件的i节点号通过所述映射关系获取相应的i节点信息。在文件和目录的清理时,根据文件或文件目录的i节点号和每个块组包含的i节点数,计算该i节点所在块组和在块组中的相对i节点号,根据i-节点表起始块号和相对i节点号,进而得到该i节点信息所在偏移位置,i节点的偏移量计算方法为:i节点所在块组的i节点表起始块号*块大小+(相对i节点号-1)*i节点大小,根据偏移读取该i节点信息。

i节点信息包括:i-node节点的0x28-0x63这60字节,也可以称为15个块指针,以及该节点的标志属性。其中i-node0x20~0x23标志取值为u_int32_tinodeflag。

目录项存储在分配给目录的块中,因此目录项的信息需要通过目标文件所在目录的i节点信息分析得到。

日志清理时可以在超级块中得到日志块的i-节点号,一般为8号。

s3、根据目标文件的i节点信息清除所述目标文件的文件数据。

首先根据文件特征和i节点信息进行数据定位。文件特征指文件系统的目录树结构是否使用了hash树和是否启用了扩展属性。定位数据后即可进行数据擦除。具体方法如下:

针对ext2和ext3文件系统,主要在于确认目录树的结构是否使用了hash树。

如果没有启用hash树,称为基本目录项,依据15个块指针依次能得到该文件占用的块位置(直接块指针直接得到数据块,一级和二级间接块指针需要换算得到最后的数据块指针),那么在进行文件清理时,得到最终的数据位置,进行写0覆盖,即可完成该节点的数据擦除;

如果启用了hash树,称为hash索引目录项,则第一个块为索引块,记录着索引数据,并根据depth,如果是单层索引,则根据entries顺次记录目录文件的块号,最后分析得到目录文件的数据块;如果是多层索引则递归,需要读取的就是普通索引块,在得到数据块之后的操作,就和基本目录项一致了,对指定位置进行写0覆盖。

针对ext4文件系统,则除了确认是否使用了hash树,还需要确认扩展属性。

没有启用hash树,且没有扩展属性的为基本目录项,和ext2、ext3的基本目录项处理方法一致;

没有启用hash树,有扩展属性,则上述的15个块指针的60字节的数据,不是块指针数据而是区段树信息,以12字节段头+4个extent段的结构存在,对于叶子节点就是直接的目录项数据块,进行写0覆盖。

启用了hash树,没有扩展属性的,为hash索引目录项,和ext2、ext3的hash索引目录项的处理方法一致;

启用了hash树,有扩展属性的,则首先读区段树的段头,根据深度,如果是单层区段树结构,则记录所有叶子节点的块号,然后根据hash索引的结构,读取root索引块,然后同ext2、ext3的hash索引目录项的处理方法一致;如果是多层区段树,需要读取索引节点,根据索引节点读取到叶子节点,最后根据hash索引结构,读取root索引块,然后同ext2、ext3的hash索引目录项的处理方法一致。

s4、根据目标文件的目录项对应的i节点信息清理所述目标文件的目录项。

文件和目录的数据清理之外,还要注意目录项的清理。目录项用来存放文件及目录的i-节点号、目录项的长度、文件名等信息,它们存储在分配给目录的块中,如果要完全擦除文件的存在痕迹,就要将目录项中的文件名信息擦除。

因为目录项存在分配给目录的块中,所以文件或目录在清理前,先要获取该文件目录其所在目录的i节点号,我称该节点号为父节点号。

在清理了文件的数据块后,将文件删除,然后分析上面提到的父节点号的节点信息,拿到目录项所在块的块组描述符,得到这些块数据(i节点信息),并根据目录项的结构,顺次清理。

我们从块的第一个字节开始处理,依次得到i-节点号:4字节;目录项长度:2字节;名字长度:1字节;文件类型:1字节;文件名:变长。

根据文件名长度,就能计算出该目录项的实际长度,目录项长度虽然不固定但是一定是4b的倍数,如果没有达到4b边界,会在文件名后面加空字节达到4b的边界,且目录项前两个目录项一定是“.”和“..”,最后一个目录项的长度则指向本块的结尾处。

根据目录项长度,我们可以定位到下一个目录项。这样就可以依次得到该块的所有目录项。在实践中目录项定位有以下三种情况:

(1)如果读到i-节点号=0,说明该目录项是无用的,也就是对应的文件已经删除了,那么该目录项的文件名就应该擦除覆盖。

(2)如果读到的目录项的长度大于实际的目录项长度,说明中间有删除的目录项,使用长度跳过该目录项的索引,或者指向块尾。那么以实际目录项的长度为界,后面的需要擦除覆盖。

(3)目录项正常,但是i-node信息里有删除时间,说明该文件也已删除,需要擦除覆盖。

文件类型如果是文件,上述就完成痕迹擦除了,若是目录,则需要递归进去拿到最终目录信息,做上述处理。

s5、根据文件系统的日志对应的i节点信息清除所述目标文件所在文件系统的日志。

ext3和ext4日志文件系统需要清理日志,避免通过日志进行恢复数据。步骤s1和s2,可以在超级块中得到日志块的i-node节点号,一般为8号,根据步骤s3的数据定位方法,可以获取该i-node的所有的日志数据块,我们仅保留日志块的第一个块,也就是日志超级块,清除其他日志数据块,就可以避免通过日志进行数据恢复。

如图2示,该装置300包括:

系统读取单元310,所述系统读取单元310用于读取目标文件所在磁盘分区的超级块及块组描述符表并根据块组描述符表的内容结构获取各块组的i节点表起始块号;

信息获取单元320,所述信息获取单元320用于根据目标文件的i节点号和所在块组的i节点表起始块号获取相应i节点信息;

文件清除单元330,所述文件清除单元330用于根据目标文件对应的i节点信息清除所述目标文件的文件数据;

痕迹清理单元340,所述痕迹清理单元340用于根据目标文件的父目录的i节点信息清理所述目标文件的目录项;

日志清理单元350,所述日志清理单元350用于根据文件系统日志对应的i节点信息清除所述目标文件所在文件系统的日志。

可选地,作为本申请一个实施例,所述信息获取单元包括:

块组定位模块,配置用于根据目标文件的i节点号以及每个块组包含的i节点数获取该i节点所在块组及相对i节点号;

偏移计算模块,配置用于根据i节点所在块组的i节点表起始块号和相对i节点号计算该i节点所在的磁盘位置;

信息获取模块,配置用于根据所述位置获取相应i节点信息。

可选地,作为本申请一个实施例,所述文件清除单元包括:

文件特征模块,配置用于根据目标文件的i节点信息获取目标文件的扩展属性并根据所述扩展属性获取目标文件的目录树结构;

文件定位模块,配置用于根据目录树结构及i节点信息使用不同方法获取文件数据位置;

文件擦除模块,配置用于根据所述文件数据位置进行数据擦除。

可选地,作为本申请一个实施例,所述痕迹清理单元包括:

痕迹获取模块,配置用于获取目标文件所在目录的i节点号作为父节点号并获取目录项的i节点信息;

长度计算模块,配置用于根据文件名长度以及目录项的填充原则计算目录项长度;

痕迹定位模块,配置用于根据目录项长度获取目录项定位信息;

痕迹擦除模块,配置用于根据所述目录项定位信息以及目录项的特征信息擦除目录项中的已删除文件的文件名信息。

可选地,作为本申请一个实施例,所述日志清理单元包括:

日志定位模块,配置用于根据文件系统的日志i节点信息获取日志数据位置;

日志擦除模块,配置用于根据所述日志数据位置擦除除日志超级块外的所有日志数据块。

图3为本发明实施例提供的一种终端装置400的结构示意图,该终端装置300可以用于执行本申请实施例提供的基于linux文件系统的文件彻底删除方法。

其中,该终端装置400可以包括:处理器410、存储器420及通信单元430。这些组件通过一条或多条总线进行通信,本领域技术人员可以理解,图中示出的服务器的结构并不构成对本申请的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

其中,该存储器420可以用于存储处理器410的执行指令,存储器420可以由任何类型的易失性或非易失性存储终端或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。当存储器420中的执行指令由处理器410执行时,使得终端400能够执行以下上述方法实施例中的部分或全部步骤。

处理器410为存储终端的控制中心,利用各种接口和线路连接整个电子终端的各个部分,通过运行或执行存储在存储器420内的软件程序和/或模块,以及调用存储在存储器内的数据,以执行电子终端的各种功能和/或处理数据。所述处理器可以由集成电路(integratedcircuit,简称ic)组成,例如可以由单颗封装的ic所组成,也可以由连接多颗相同功能或不同功能的封装ic而组成。举例来说,处理器410可以仅包括中央处理器(centralprocessingunit,简称cpu)。在本申请实施方式中,cpu可以是单运算核心,也可以包括多运算核心。

通信单元430,用于建立通信信道,从而使所述存储终端可以与其它终端进行通信。接收其他终端发送的用户数据或者向其他终端发送用户数据。

本申请还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本申请提供的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-onlymemory,简称:rom)或随机存储记忆体(英文:randomaccessmemory,简称:ram)等。

因此,本申请通过获取目标文件所在磁盘分区的超级块以及块组描述符表得到各块组的i节点表起始块号,从而在已知目标文件i节点号的前提下能够获取相应的i节点信息,分析实现数据的定位和擦除。本发明能够保证彻底消除目标文件的磁盘数据和痕迹,并删除日志,避免通过技术手段恢复数据,本实施例所能达到的技术效果可以参见上文中的描述,此处不再赘述。

本领域的技术人员可以清楚地了解到本申请实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中如u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质,包括若干指令用以使得一台计算机终端(可以是个人计算机,服务器,或者第二终端、网络终端等)执行本发明各个实施例所述方法的全部或部分步骤。

本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1