如何恢复linux上删除的文件第1部分

如何恢复linux上删除的文件第1部分

ID:34460981

大小:100.40 KB

页数:18页

时间:2019-03-06

如何恢复linux上删除的文件第1部分_第1页
如何恢复linux上删除的文件第1部分_第2页
如何恢复linux上删除的文件第1部分_第3页
如何恢复linux上删除的文件第1部分_第4页
如何恢复linux上删除的文件第1部分_第5页
资源描述:

《如何恢复linux上删除的文件第1部分》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、对于很多Linux的用户来说,可能有一个问题一直都非常头疼:对于那些不小心删除的数据来说,怎样才能恢复出来呢?大家知道,在Windows系统上,回收站中保存了最近使用资源管理器时删除的文件。即便是对于那些在命令行中删除的文件来说,也有很多工具(例如recover4all,FinalDataRecovery)可以把这些已经删除的文件恢复出来。在Linux下这一切是否可能呢?实际上,为了方便用户的使用,现在Linux上流行的桌面管理工具(例如gnome和KDE)中都已经集成了回收站的功能。其基本思想是在桌面管理工具中捕获对文件的删除操作,将要

2、删除的文件移动到用户根目录下的.Trash文件夹中,但却并不真正删除该文件。当然,像在Windows上一样,如果用户在删除文件的同时,按下了Shift键并确认删除该文件,那么这个文件就不会被移动到.Trash文件夹中,也就无从恢复了。此时,习惯了使用Windows上各种恢复工具的人就会顿足捶胸,抱怨Linux上工具的缺乏了。但是请稍等一下,难道按照这种方式删除的文件就真的无从恢复了么?或者换一个角度来看,使用rm命令删除的文件是否还有办法能够恢复出来呢?背景知识在开始真正进行实践之前,让我们首先来了解一下在Linux系统中,文件是如何进行

3、存储和定位的,这对于理解如何恢复文件来说非常重要。我们知道,数据最终以数据块的形式保存在磁盘上,而操作系统是通过文件系统来管理这些数据的。ext2/ext3是Linux上应用最为广泛的文件系统,本文将以ext2文件系统为例展开介绍。我们知道,在操作系统中,文件系统是采用一种层次化的形式表示的,通常可以表示成一棵倒置的树。所有的文件和子目录都是通过查找其父目录项来定位的,目录项中通过匹配文件名可以找到对应的索引节点号(inode),通过查找索引节点表(inodetable)就可以找到文件在磁盘上的位置,整个过程如图1所示。图1.文件数据定位

4、过程对于ext2类型的文件系统来说,目录项是使用一个名为ext2_dir_entry_2的结构来表示的,该结构定义如下所示:清单1.ext2_dir_entry_2结构定义structext2_dir_entry_2{__le32inode;/*索引节点号*/__le16rec_len;/*目录项的长度*/__u8name_len;/*文件名长度*/__u8file_type;/*文件类型*/charname[EXT2_NAME_LEN];/*文件名*/};在Unix/Linux系统中,目录只是一种特殊的文件。目录和文件是通过file_t

5、ype域来区分的,该值为1则表示是普通文件,该值为2则表示是目录。对于每个ext2分区来说,其在物理磁盘上的布局如图2所示:图2.ext2分区的布局从图2中可以看到,对于ext2文件系统来说,磁盘被划分成一个个大小相同的数据块,每个块的大小可以是1024、2048或4096个字节。其中,第一个块称为引导块,一般保留做引导扇区使用,因此ext2文件系统一般都是从第二个块开始的。剩余的块被划分为一个个的块组,ext2文件系统会试图尽量将相同文件的数据块都保存在同一个块组中,并且尽量保证文件在磁盘上的连续性,从而提高文件读写时的性能。至于一个分

6、区中到底有多少个块组,这取决于两个因素:1.分区大小。2.块大小。最终的计算公式如下:分区中的块组数=分区大小/(块大小*8)这是由于在每个块组中使用了一个数据块位图来标识数据块是否空闲,因此每个块组中最多可以有(块大小*8)个块;该值除上分区大小就是分区中总的块组数。每个块组都包含以下内容:1.超级块。存放文件系统超级块的一个拷贝。2.组描述符。该块组的组描述符。3.数据块位图。标识相应的数据块是否空闲。4.索引节点位图。标识相应的索引节点是否空闲。5.索引节点表。存放所有索引节点的数据。6.数据块。该块组中用来保存实际数据的数据块。在

7、每个块组中都保存了超级块的一个拷贝,默认情况下,只有第一个块组中的超级块结构才会被系统内核使用;其他块组中的超级块可以在e2fsck之类的程序对磁盘上的文件系统进行一致性检查使用。在ext2文件系统中,超级块的结构会通过一个名为ext2_super_block的结构进行引用。该结构的一些重要域如下所示:清单2.ext2_super_block结构定义structext2_super_block{__le32s_inodes_count;/*索引节点总数*/__le32s_blocks_count;/*块数,即文件系统以块为单位的大小*/_

8、_le32s_r_blocks_count;/*系统预留的块数*/__le32s_free_blocks_count;/*空闲块数*/__le32s_free_inodes_count;/*空

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。