ext3分区修复linux,Linux下误删除后的恢复操作(ext3/ext4)

Linux是作为一个多用户、多任务的操作系统,文件一旦被删除是难以恢复的。尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是其他用户和一些有写盘动作的进程会很快覆盖这些数据。在日常工程中,谁也说不准永远不犯错误,万一哪天不小心误操作删除了一些重要文件,该怎么办呢??

莫慌!这里介绍一款神器extundelete,这是针对ext4文件格式下文件删除后的恢复工具,十分强大!!

下载到本机的/usr/local/src目录下

[root@slave-node ~]# cd /usr/local/src

[root@slave-node src]# tar -jvxf extundelete-0.2.0.tar.bz2

[root@slave-node src]# cd extundelete-0.2.0

[root@slave-node extundelete-0.2.0]# yum -y install e2fsprogs*                     //不然会提示找不到ext2fs库

[root@slave-node extundelete-0.2.0]# ./configure

[root@slave-node extundelete-0.2.0]# make && make install

2)执行删除操作(要是/根分区之外的分区,并且只能是文件删除后的恢复,目录删除不能恢复)

[root@slave-node ~]# df -T

Filesystem Type 1K-blocks Used Available Use% Mounted on

/dev/sda3 ext4 151189708 2370020 141139688 2% /

tmpfs tmpfs 32960412 0 32960412 0% /dev/shm

/dev/sda1 ext4 198337 26798 161299 15% /boot

/dev/sda2 ext4 806346400 201304 765185096 1% /home

[root@slave-node ~]# cd /home/

[root@slave-node home]# echo "123456"> test1

[root@slave-node home]# echo "hahahahha" > wangshibo

[root@slave-node home]# ls

lost+found test1 wangshibo zabbix

删除文件

[root@slave-node home]# rm -rf test1 wangshibo

[root@slave-node home]# ls

lost+found zabbix

3)数据删除后的恢复操作

首先恢复前,卸载需要恢复文件的分区

[root@slave-node ~]# umount /home/               //如果卸载失败,就用命令"fuser -k /home"结束使用此分区的进程树

[root@slave-node ~]# df -T

Filesystem Type 1K-blocks Used Available Use% Mounted on

/dev/sda3 ext4 151189708 2370024 141139684 2% /

tmpfs tmpfs 32960412 0 32960412 0% /dev/shm

/dev/sda1 ext4 198337 26798 161299 15% /boot

使用extundelete查看分区上存在的文件,如下:

--inode 为查找某i节点中的内容,使用2则说明为搜索,如果需要进入目录搜索,只须要指定目录I节点即可

[root@slave-node ~]# extundelete --inode 2 /dev/sda2

WARNING: Extended attributes are not restored.

Loading filesystem metadata ... 6250 groups loaded.

Contents of inode 2:

0000 | ed 41 00 00 00 10 00 00 84 10 49 58 82 10 49 58 | .A........IX..IX

0010 | 82 10 49 58 00 00 00 00 00 00 04 00 08 00 00 00 | ..IX............

0020 | 00 00 00 00 07 00 00 00 21 24 00 00 00 00 00 00 | ........!$......

0030 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

0050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

0060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

0070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

0080 | 00 00 00 00 00 00 00 00 11 10 00 00 00 00 00 00 | ................

0090 | 00 00 00 00 00 00 00 00 62 0e 49 58 62 0e 49 58 | ........b.IXb.IX

00a0 | 62 0e 49 58 00 00 00 00 00 00 00 00 00 00 00 00 | b.IX............

00b0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

00d0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

00f0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

Inode is Allocated

Group: 0

File mode: 16877

Low 16 bits of Owner Uid: 0

Size in bytes: 4096

Access time: 1481183364

Creation time: 1481183362

Modification time: 1481183362

Deletion Time: 0

Low 16 bits of Group Id: 0

Links count: 4

Blocks count: 8

File flags: 0

File version (for NFS): 0

File ACL: 0

Directory ACL: 0

Fragment address: 0

Direct blocks: 9249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

Indirect block: 0

Double indirect block: 0

Triple indirect block: 0

File name | Inode number | Deleted status

Directory block 9249:

. 2

.. 2

lost+found 11

haha 12 Deleted

zabbix 17432577

test1 12 Deleted

wangshibo 13 Deleted

如上可以看出,被删除的两个文件test1和wangshibo已经被找到,状态为已经删除。

接下来就将它们恢复出来:

[root@slave-node ~]# extundelete --restore-inode 12 /dev/sda2

WARNING: Extended attributes are not restored.

Loading filesystem metadata ... 6250 groups loaded.

Loading journal descriptors ... 46 descriptors loaded.

Restored inode 12 to file RECOVERED_FILES/file.12

[root@slave-node ~]# extundelete --restore-inode 13 /dev/sda2

WARNING: Extended attributes are not restored.

Loading filesystem metadata ... 6250 groups loaded.

Loading journal descriptors ... 46 descriptors loaded.

Restored inode 13 to file RECOVERED_FILES/file.13

[root@slave-node ~]# ls RECOVERED_FILES/

file.12 file.13

[root@slave-node ~]# mount /dev/sda2 /home/              //重新挂载home分区

[root@slave-node ~]# mv RECOVERED_FILES/file.12 /home/test1

[root@slave-node ~]# mv RECOVERED_FILES/file.13 /home/wangshibo

再次查看home分区,发现删除的文件已经恢复回来了,很强大!!!

[root@slave-node ~]# cd /home/

[root@slave-node home]# ls

lost+found test1 wangshibo zabbix

[root@slave-node home]# cat test1

123456

[root@slave-node home]# cat wangshibo

hahahahha

------------------------------------------------------------------------------------------------------

上面介绍的是在ext4文件格式下的文件删除后的恢复,那如果是ext3文件格式下的文件删除后想恢复,怎么办呢?

可以使用debugfs工具,这是linux系统自带工具,debugfs恢复Ext3的文件系统中被rm、rm -f 掉的文件。

实例说明:

[root@slave-node ~]# df -T

Filesystem Type 1K-blocks Used Available Use% Mounted on

/dev/sda3 ext3 151189708 2370036 141139672 2% /

tmpfs tmpfs 32960412 0 32960412 0% /dev/shm

/dev/sda1 ext3 198337 26798 161299 15% /boot

创建一个文件

[root@slave-node ~]# mkdir test

[root@slave-node ~]# echo "123456" > /root/test/test.file

删除文件

[root@slave-node ~]# rm -rf /root/test/test.file

接着运用系统自带工具debugfs来恢复已删除的文件

首先打开,刚刚被删除文件所在的分区

注意上面显示的有<>尖括号内的数字就是我们要找的文件Inode号,执行logdump –i <8654024>

[root@slave-node ~]#debugfs

debugfs 1.41.12 (17-May-2010)

debugfs: open /dev/sda3

debugfs: ls -d /root/test

8654023 (12) . 8519681 (4084) .. <8654024> (4072) test.file

debugfs:logdump -i 8654024

FS block 1006 logged at sequence 404351, journal block 7241

(inode block for inode 15):

Inode: 15 Type: regular Mode: 0664 Flags: 0×0 Generation: 0

User: 0 Group: 0 Size: 20

File ACL: 0 Directory ACL: 0

Links: 1 Blockcount: 8

Fragment: Address: 0 Number: 0 Size: 0

ctime: 0×48159f2d — Mon Apr 28 15:25:57 2008

atime: 0×48159f27 — Mon Apr 28 15:25:51 2008

mtime: 0×4806f070 — Thu Apr 17 12:08:40 2008

Blocks: (0+1): 102348

No magic number at block 7247: end of journal.

执行完命令后,显示了一屏信息,需要注意的是下面Blocks这一行后面的值(如上信息,需要记住Blocks这一行后面的数字102348)

输入quit,退出debugfs

debugfs: quit

[root@slave-node ~]#

执行如下命令进行恢复:

[root@slave-node ~]# dd if=/dev/sda3 of=/tmp/test.file.bk bs=4096 count=1 skip=102348

1+0 records in

1+0 records out

4096 bytes (4.1 kB) copied, 0.0110028 s, 372 kB/s

最后查看tmp目录下,发现已经恢复了我们之前删除的文件内容

[root@slave-node ~]# cd /tmp/

[root@slave-node tmp]# cat test.file.bk

[root@slave-node tmp]# mv test.file.bk /root/test.file

[root@slave-node tmp]# cat /root/test.file

123456

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值