救火专用---别再说rm -rf 不可以恢复

工作中难免因为意外或其他情况,导致rm -rf误删文件,这个时候,救火专用 extundelete 就派上了用场;

下载地址:http://extundelete.sourceforge.net/

注意:

1:此工具安装依赖e2fspogs 和 e2fslibs 两个包,在RH/Centos系列上包的名字为 e2fsprogs和

e2fsprogs-lib

2:此工具适用于ext3/ext4 文件系统

3:该工具基于硬盘的恢复倒是强大,但是基于目录和文件的恢复尚未测试成功过

原理:

虽然该工具用起来相当简单,但是理解其原理比使用它更重要。

1> inode概念:

首先就是inode的概念:在系统层面,文件储存在硬盘上,以扇区为最小存储单元,以块为文件存取单元,文件存储在块中,在格式化的时候自然就分为数据区和inode区,数据区存放数据,inode存放除了文件名以为的所有文件信息即元数据,包括文件大小,时间,权限等,通过 stat filename 可以查看文件的inode信息。

2> rm过程:

inode存放文件元数据,也会占用磁盘空间,df -i 可以查看inode总数和已经使用的数量,有时候会出现磁盘空间尚且足够,但是就是创建不了文件,就有可能是inode空间用完了。

据我理解 rm实际上就跟数据库中truncate一样,只是删除了该文件的元数据,真正的数据依然存储在block上,等待着被覆盖,所以做rm恢复时和做truncate恢复时一样,尽快恢复,否则一旦数据被覆盖就真的恢复不了了。

理解了inode的概念和rm后,再来理解extundele的恢复原理就相对简单了:

首先extundele会利用文件系统的inode信息获取当前文件系统下的所有文件的inode信息,包括存在的以及被删除的,再通过日志信息来获得相应inode所在的block位置,再利用dd命令将这些信息备份出来,也就恢复了文件。

安装:

[[email protected]
extundelete-0.2.4]# yum install e2fsprogs* -y

[[email protected] top]# ls

extundelete-0.2.4.tar.bz2

[[email protected] top]#
bunzip2  extundelete-0.2.4.tar.bz2

[[email protected] top]# ls

extundelete-0.2.4.tar

[root[email protected] top]#
tar -xvf extundelete-0.2.4.tar

extundelete-0.2.4/

extundelete-0.2.4/acinclude.m4

extundelete-0.2.4/missing

extundelete-0.2.4/autogen.sh

extundelete-0.2.4/aclocal.m4

extundelete-0.2.4/configure

extundelete-0.2.4/LICENSE

extundelete-0.2.4/README

extundelete-0.2.4/install-sh

extundelete-0.2.4/config.h.in

extundelete-0.2.4/src/

extundelete-0.2.4/src/extundelete.cc

extundelete-0.2.4/src/block.h

extundelete-0.2.4/src/kernel-jbd.h

extundelete-0.2.4/src/insertionops.cc

extundelete-0.2.4/src/block.c

extundelete-0.2.4/src/cli.cc

extundelete-0.2.4/src/extundelete-priv.h

extundelete-0.2.4/src/extundelete.h

extundelete-0.2.4/src/jfs_compat.h

extundelete-0.2.4/src/Makefile.in

extundelete-0.2.4/src/Makefile.am

extundelete-0.2.4/configure.ac

extundelete-0.2.4/depcomp

extundelete-0.2.4/Makefile.in

extundelete-0.2.4/Makefile.am

[[email protected]
extundelete-0.2.4]# ./configure

Configuring
extundelete 0.2.4

Writing generated
files to disk

[[email protected] extundelete-0.2.4]# make && make install

测试准备:

[[email protected]
/]# mount /dev/sdc1  /top

[[email protected] /]# cd
/top

[[email protected] top]#

[[email protected] top]# ls

lost+found

[[email protected] top]#
mkdir rm

[[email protected] top]# ls

lost+found  rm

[[email protected] top]#
man rm >> rm01.txt

[[email protected] top]#
man rm >> rm02.txt

[[email protected] top]# ls

lost+found  rm 
rm01.txt  rm02.txt

[[email protected] top]# cd
rm

[[email protected] rm]# man
rm >> rm03.txt

[[email protected] rm]# man
rm >> rm01.txt

[[email protected] top]#
pwd

/top

[[email protected] top]# ls

lost+found  rm 
rm01.txt  rm02.txt

[[email protected] top]# rm
-rf ./*

[[email protected] top]# ls

恢复测试:

首先需要umount该文件所在磁盘,或者以read only方式重新挂载

umount  /top

or

mount -o remount,ro /top

使用extundelete工具恢复,会在当前目录下生成一个RECOVERED_FILES目录,相应文件恢复到该目录下

1> 恢复单个文件

[[email protected] tmp]#
extundelete  /dev/sdc1  --restore-file  ‘/top/rm01.txt‘

NOTICE: Extended
attributes are not restored.

Loading filesystem
metadata ... 40 groups loaded.

Loading journal
descriptors ... 47 descriptors loaded.

Failed to restore
file /top/rm01.txt

Could not find
correct inode number past inode 2.

Try altering the
filename to one of the entries listed below.

File name                                       | Inode
number | Deleted status

.                                                
2

..                                               
2

lost+found                                        11             Deleted

rm                                               
131073         Deleted

rm01.txt                                         
12             Deleted

rm02.txt                                         
13             Deleted

extundelete:
Operation not permitted while restoring file.

extundelete:
Operation not permitted when trying to examine filesystem

[[email protected] tmp]# ls
RECOVERED_FILES/

恢复失败

2>恢复目录

[[email protected] tmp]#
extundelete  /dev/sdc1  --restore-directory  ‘/top/rm‘

NOTICE: Extended
attributes are not restored.

Loading filesystem
metadata ... 40 groups loaded.

Loading journal
descriptors ... 47 descriptors loaded.

Failed to restore
file /top/rm

Could not find
correct inode number past inode 2.

Try altering the
filename to one of the entries listed below.

File name                                       | Inode
number | Deleted status

.                                                
2

..                                               
2

lost+found                                        11             Deleted

rm                                               
131073         Deleted

rm01.txt                                         
12             Deleted

rm02.txt                                         
13             Deleted

extundelete:
Operation not permitted while restoring directory.

extundelete:
Operation not permitted when trying to examine filesystem

[[email protected] tmp]# ls
RECOVERED_FILES/

恢复失败

3>恢复整个磁盘

[[email protected] tmp]#
extundelete  /dev/sdc1  --restore-all

NOTICE: Extended
attributes are not restored.

Loading filesystem
metadata ... 40 groups loaded.

Loading journal
descriptors ... 47 descriptors loaded.

Searching for
recoverable inodes in directory / ...

6 recoverable inodes
found.

Looking through the
directory structure for deleted files ...

0 recoverable inodes
still lost.

[[email protected] tmp]# ls
RECOVERED_FILES/

rm  rm01.txt 
rm02.txt

恢复成功

时间: 2024-12-13 03:01:23

救火专用---别再说rm -rf 不可以恢复的相关文章

rm -rf 删除文件恢复

一.extundelete安装 1.安装依赖包 # yum install e2fsprogs* -y 2.下载并安装extundelete # wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2 # tar -jxvf extundelete-0.2.4.tar.bz2 # cd extundelete-0.2.4 # ./configure --

Ubuntu 16.04使用rm -rf误删文件恢复方法收集

说明:不一定有效,需要不断尝试 一.lsof 文件刚刚被删除,想要恢复,先尝试lsof. lsof |grep data.file1 cp /proc/xxx/xxx/xx /dir/data.file1 如果lsof不能看到文件,那么就需要使用恢复软件进行恢复. 要做的第一件事是立刻卸载被误删除文件所在的分区,或者重新以只读方式挂载此分区. umount /dev/part 或 mount -o remount,ro /dev/part 删除一个文件,就是将文件inode(inode 是操作系

find ./ -name *.bak | xargs rm -rf

##################################################################################################### #find ... -exec rm {} \; 可以把find命令查找到的结果删除,其区别简单的说是前者是把find发现的结果一次性传给exec选项,这样当文件数量较多的时候,就可能会出现"参数太多"之类的错误. -exec   必须由一个   ;   结束,而因为通常   shel

rm -rf误删文件的恢复(extundelete工具的使用)

实战:extundelete恢复数据的过程 在数据被误删除后,第一时间要做的是卸载被删除数据所在的磁盘或磁盘分区,如果是系统根分区的数据遭到误删除,就需要将系统进入单用户,并且将根分区以只读模式挂载.这样做的原因很简单,因为将文件删除后,仅仅是将文件的inode结点中的扇区指针清零,实际文件还存储在磁盘上,如果磁盘以读写模式挂载,这些已删除的文件的数据块就可能被操作系统重新分配出去,在这些数据块被新的数据覆盖后,这些数据就真的丢失了,恢复工具也回力无天.所以,以只读模式挂载磁盘可以尽量降低数据块

rm -rf / 好屌!

我真的做了这个实验,结果是,系统彻底坏了.. 不管怎样,总算体验了一把- $sudo rm -rf / --no-preserve-root 执行命令: 执行中: 执行结束,系统彻底用不了了: 谢谢虚拟机^_^ 其实,我搜了下,有不少人也做过这个实验,这个 BBGamerUK 还录了像: https://www.youtube.com/watch?v=SIIweirHwek 这里还有一个发了很久的,比较热烈的讨论: http://serverfault.com/questions/587102/

前端js正则的一个实例:过滤“rm -rf /”

最近开发cmdb,有个需求是要求脚本中不能含有"rm -rf /"命令,如果含有这个命令,前端弹出警告框提示. 这里需要用test方法来测试字符串,符合模式时返回true,否则返回false. 我先从控制台调试一下: 可以看到,匹配OK了. 前端代码如下: var re = /rm -rf \/$/;  //匹配"rm -rf /"命令 if (re.test('your commands')) {     alert('您输入的命令含有"rm -rf /

使用lsof恢复rm -rf删除后的文件

在Linux系统中使用rm -rf删除文件后,其实文件只是从磁盘中移除,文件内容还是在系统后台等待回收,此时可以使用系统进程号将文件考贝出来,内容不会有更改. 1.删除一个文件 [[email protected] logs]# ll access.log -rw-r--r-- 1 root root 11723908 Jun 14 16:02 access.log[[email protected] logs]# rm -rf access.log 2.查看文件在后台的进程[[email pr

用ext3grep恢复rm -rf 误删除的文件

Linux作为企业级服务器,数据安全性至关重要,任何有价值的数据被误删除都是不能容忍的,甚至可能带来大的灾难!作为linux系统管理员,一定要有 数据保护意思,不但要做好数据备份工作,还应该有在将重要数据误删除后恢复的能力.在这里给大家介绍一个开源的数据恢复工具ext3grep,该工具可以 恢复rm –rf误删除的文件 一.ext3grep的原理:利用ext3grep恢复文件并不依赖于任何文件格式,首先ext3grep利用root的inode来获取文件系统中所有的文件信息,包括存在的或已删 除的

centos rm -rf 恢复删除的文件

Linux有时候执行了 rm -rf 等操作误删了文件绝对是一件可怕的事情,好在有一些解决的办法可以临时救急.这时我们就要用到一款叫做extundelete的工具了. 目录[-] 依赖 安装 查找要恢复的驱动器名 运行恢复 恢复单个文件 恢复一个目录 恢复整个分区 Linux下执行 rm 并不会真正删除,而是将inode节点中的扇区删除,同时释放数据块.在数据块被系统重新分配前,这部分数据还是可以找回来的. 网上说在删除文件后要立即unmount这个分区,这样做其实是为了让外界不再写入,我们也可