`
isiqi
  • 浏览: 16558159 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

教你恢复被误删除的Linux文件

阅读更多

作为一个多用户、多任务的操作系统,linux下的文件一旦被删除,是难以恢复的。尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但 是其他用户和一些有写盘动作的进程会很快覆盖这些数据。不过,对于家庭单机使用的linux,或者误删文件后及时补救,还是可以恢复的。

1、Ext2文件系统结构的简单介绍

在linux所用的Ext2文件系统中,文件是以块为单位存储的,默认情况下每个块的大小是1K,不同的块以块号区分。每个文件还有一个节点, 节点中包含有文件所有者,读写权限,文件类型等信息。对于一个小于12个块的文件,在节点中直接存储文件数据块的块号。如果文件大于12个块,那么节点在 12个块号之后存储一个间接块的块号,在这个间接块号所对应的块中,存储有256个文件数据块的块号(Ext2fs中每个块号占用4字节,这样一个块中所 能存储的块号就是1024/4=256)。如果有更大的文件,那么还会在节点中出现二级间接块和**间接块。

2、恢复被误删文件的方法

大多数linux发行版都提供一个debugfs工具,可以用来对Ext2文件系统进行编辑操作。不过在使用这个工具之前,还有一些工作要做。

首先以只读方式重新挂载被误删的文件所在分区。使用如下命令:(假设文件在/usr分区)

mount –r –n –o remount /usr -r表示只读方式挂载;-n表示不写入/etc/mtab,如果是恢复/etc上的文件,就加上这个参数。如果系统说xxx partion busy,可以用fuser命令查看一下是哪些进程使用这个分区上的文件:

fuser –v –m /usr

如果没有什么重要的进程,用以下命令停掉它们:

fuser -k –v –m /usr

然后就可以重新挂载这些文件系统了。

如果是把所有的文件统一安装在一个大的/分区当中,可以在boot提示符下用linux single进入单用户模式,尽量减少系统进程向硬盘写入数据的机会,要不干脆把硬盘挂在别的机器上。另外,恢复出来的数据不要写到/上面,避免破坏那些 有用的数据。如果机器上有dos/windows,可以写到这些分区上面:

mount –r –n /dev/hda1 /mnt/had

然后就可以执行debugfs:(假设linux在 /dev/hda5)

#debugfs /dev/hda5

就会出现debugfs提示符debugfs:

使用lsdel命令可以列出很多被删除的文件的信息:

debugfs:lsdel

debugfs: 2692 deleted inodes found.

Inode Owner Mode Size Blocks Time deleted

164821 0 100600 8192 1/ 1 Sun May 13 19:22:46 2001

…………………………………………………………

36137 0 100644 4 1/ 1 Tue Apr 24 10:11:15 2001

196829 0 100644 149500 38/ 38 Mon May 27 13:52:04 2001

debugfs:

列出的文件有很多(这里找到2692个),第一字段是文件节点号,第二字段是文件所有者,第三字段是读写权限,接下来是文件大小,占用块数,删除时间。

然后就可以根据文件大小和删除日期判断那些是我们需要的。比如我们要恢复节点是196829的文件:

可以先看看文件数据状态:

debugfs:stat <196829>

Inode: 196829 Type: regular Mode: 0644 Flags: 0x0 Version: 1

User: 0 Group: 0 Size: 149500

File ACL: 0 Directory ACL: 0

Links: 0 Blockcount: 38

Fragment: Address: 0 Number: 0 Size: 0

ctime: 0x31a9a574 -- Mon May 27 13:52:04 2001

atime: 0x31a21dd1 -- Tue May 21 20:47:29 2001

mtime: 0x313bf4d7 -- Tue Mar 5 08:01:27 2001

dtime: 0x31a9a574 -- Mon May 27 13:52:04 2001

BLOCKS:

594810 594811 594814 594815 594816 594817 ………………………………….

TOTAL: 38

然后就可以用dump指令恢复文件:

debugfs:dump <196829> /mnt/hda/01.sav

这样就把文件恢复出来了。退出debugfs:

debugfs:quit

另一种方法是手工编辑inode:

debugfs:mi <196829>

Mode [0100644]

User ID [0]

Group ID [0]

Size [149500]

Creation time [0x31a9a574]

Modification time [0x31a9a574]

Access time [0x31a21dd1]

Deletion time [0x31a9a574] 0

Link count [0] 1

Block count [38]

File flags [0x0]

Reserved1 [0]

File acl [0]

Directory acl [0]

Fragment address [0]

Fragment number [0]

Fragment size [0]

Direct Block #0 [594810]

…………………………….

Triple Indirect Block [0]

使用mi指令后每次显示一行信息以供编辑,其它行可以直接按回车表示确认,把deletion time改成0(未删除),Link count改成1。改好后退出debugfs:

debugfs:quit

然后用fsck检查/dev/hda5

fsck /dev/hda5

程序会说找到丢失的数据块,放在lost+found里面。这个目录里的文件就是我们要的东东。

分享到:
评论

相关推荐

    Linux XFS文件系统误删除文件恢复.pdf

    Linux XFS 文件系统误删除文件恢复 在 Linux 操作系统中,文件误删除是一种常见的故障,可能会导致重要文件的丢失。幸运的是,在 Linux XFS 文件系统中,误删除文件可以通过一定的方法恢复。本文将讨论 Linux XFS ...

    如何恢复误删除的Linux文件

    作为一个多用户、多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的。然而,对于家庭单机使用的 Linux,或者误删文件后及时补救,还是可以恢复的。 Ext2 文件系统结构 在 Linux 所用的 Ext2 文件系统中,...

    恢复Linux下误删除的文件

    恢复误删除的文件是一项复杂且挑战性的任务,需要对Linux文件系统和命令行工具有深入的理解。在实际操作中,务必小心谨慎,避免因操作错误导致数据的进一步丢失。同时,养成定期备份数据的好习惯也是避免数据丢失的...

    恢复误删除的Linux文件.pdf

    Linux 文件恢复技术 ...恢复被误删的 Linux 文件需要对 Ext2 文件系统结构有所了解,并且需要使用 debugfs 工具对文件系统进行编辑操作。同时,需要注意恢复文件时的注意事项,以免破坏系统文件。

    通过文件描述符恢复被误删除的文件(前提是文件正被某一个进程占用着,未被释放)

    在这个场景中,如果一个文件被误删除,但仍有进程持有着该文件的描述符,我们理论上可以利用这个描述符来恢复文件,因为文件在内存中的数据并没有被清除,只是其在文件系统上的链接被断开了。 首先,我们模拟了一个...

    Linux操作系统下如何能恢复误删除的文件.pdf

    本文将详细介绍在Linux环境下如何尝试恢复误删除的文件。 首先,理解Linux的Ext2文件系统结构是至关重要的。Ext2是最常见的Linux文件系统之一,它将文件以块为单位存储。每个文件都有一个称为inode的节点,其中包含...

    Linux系统rm命令误删除恢复PDF

    Linux系统不同于windows系统,在使用rm-rf命令误删除文件后不能通过类似于回收站的功能,所以在Linux系统当中此...当然Linux下也提供了一款恢复误删除数据的开源软件一ext3grep,利用此工具可以对误删除的数据进行恢复.

    Linux系统rm 命令误删除恢复.rar

    本资料包"Linux系统rm命令误删除恢复.rar"主要关注的是如何在误用`rm`命令后尽可能地恢复删除的数据。 首先,理解`rm`命令的基本用法是防止误操作的关键。`rm`命令的基本格式是`rm [选项] 文件或目录`,常用的选项...

    误删除文件找回 软件(带注册号)

    不过,幸运的是,有很多专门的软件可以帮助我们恢复这些被误删除的文件,这就是所谓的"误删除文件找回"软件。本文将深入探讨这类软件的工作原理、使用方法以及如何选择合适的软件。 首先,我们要理解文件在被删除后...

    Windows下Linux分区文件恢复软件

    总之,Windows下Linux分区文件恢复涉及对Linux文件系统的理解、选择合适的恢复软件以及正确执行数据恢复流程。在操作过程中要谨慎行事,以免造成数据的进一步损失。在面对数据丢失时,提前备份始终是最好的预防措施...

    Linux利用lsof/extundelete工具恢复误删除的文件或目录

    在Linux系统中,误删除...总结,虽然Linux没有像Windows那样的回收站功能,但通过`lsof`和`extundelete`工具,我们可以尝试在一定条件下恢复误删除的文件和目录。然而,最好的策略始终是定期备份重要数据,以防万一。

    linux文件误删恢复

    rhel6恢复ext4文件系统下误删除的文件详细解释与说明!!!!!!!!!!!!!!!!!!!!!!!!

    Fstab 文件误删除修复

    本篇将详细介绍如何在Linux环境下修复误删除的`fstab`文件。 首先,你需要准备一个Linux安装盘,这将作为恢复系统的工具。在错误发生后,你需要重新启动计算机并加载Linux安装盘。在启动过程中,遵循以下步骤: 1....

    (extundelete)Vim编辑器和恢复ext4下误删除的文件-Xmanager工具-随堂笔记.docx

    【Vim编辑器】 ...总之,熟练掌握Vim编辑器的使用以及了解如何在ext4文件系统下恢复误删除的文件,对于日常的Linux系统管理和维护至关重要。同时,使用远程连接工具如Xmanager能有效提升远程操作的便捷性。

    R-Linux(linux数据恢复工具) v3.0免费版.zip

    该软件可以帮助用户恢复Linux系统下丢失的文件,包含误删除,误格式化等造成的文件丢失等等,支持ext2fs文件系统,使用于Linux操作系统和若干的Unix。 R-Linux功能介绍 R-Linux专门为Linux/Unix数据恢复设计,...

    电信设备-恢复误删除文件的方法及移动终端.zip

    本压缩包“电信设备-恢复误删除文件的方法及移动终端.zip”包含了关于如何在这样的设备上执行数据恢复的专业指南。下面,我们将详细探讨这个主题。 首先,恢复误删除文件的方法主要分为以下几种: 1. **回收站恢复...

    鸟哥linux学习途中感言-误删除/bin目录

    当发生误删除情况时,恢复步骤通常包括使用备份(如果有的话)、利用救援模式或Live CD恢复文件系统,或者从其他相同系统的/bin目录中复制回来。 学习Linux源码也是一项重要的技能。Linux作为一个开源操作系统,其...

    linxu下误删除了数据后怎么办

    Linux 系统下,数据恢复是一个非常重要的任务,尤其是在误删除数据的情况下。作为运维人员,保证数据的安全是根本职责,因此了解数据恢复工具是非常必要的。本文将介绍 Linux 系统下常用的数据恢复工具 extundelete...

    Linux 误删文件恢复命令及方法.doc

    2. 如果是系统根分区被误删除,需要进入单用户模式,并以只读方式挂载根分区。 3. 数据一旦被新数据覆盖,将无法恢复,因此要尽快行动。 4. 即使使用`extundelete`,恢复成功的概率也并非100%,所以备份重要数据是...

Global site tag (gtag.js) - Google Analytics