extundelete工具恢复Linux删除文件

下载相应软件包

wget http://jaist.dl.sourceforge.net/project/e2fsprogs/e2fsprogs/1.41.14/e2fsprogs-1.41.14.tar.gz
wget http://jaist.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
wget http://jaist.dl.sourceforge.net/project/e2fsprogs/e2fsprogs/1.41.14/e2fsprogs-libs-1.41.14.tar.gz

安装顺序:e2fsprogs --> e2fsprogs-libs --> extundelete 逐一编译安装

tar xf e2fsprogs-1.41.14.tar.gz
cd e2fsprogs-1.41.14
./configure
make && make install
cd
tar -xf e2fsprogs-libs-1.41.14.tar.gz
cd e2fsprogs-libs-1.41.14
./configure
make && make install
cd ..
tar -xf extundelete-0.2.4.tar.bz2
cd extundelete-0.2.4
./configure

遇到下面的错误

centos configure: error: Can‘t find ext2fs library

解决办法:yum --y install  e2fsprogs.x86_64 e2fsprogs-devel.x86_64 e2fsprogs-libs.x86_64

make && make install

模拟实验环境:
新添加一块硬盘,重新启动系统,对其分区格式化成ext4,将其挂在到/backupdata目录上,建立测试文件和目录。

fdisk /dev/sdb
partprobe /dev/sdb
# mkfs.ext4 /dev/sdb1
# mkdir /backupdata/
# mount /dev/sdb1 /backupdata/
# mkdir /backupdata/gnutool-delete
# cd /backupdata/gnutool-delete
# man 7 man > file1.txt
# man 7 man > file2.txt
# mkdir folder; cd folder; man 7 man >file1.txt
# cd ../
#md5sum file*      获取文件校验码
06da9233bf8c0836e4d45e28dfb2b511  file1.txt
06da9233bf8c0836e4d45e28dfb2b511  file2.txt
# md5sum folder/file1.txt
06da9233bf8c0836e4d45e28dfb2b511  folder/file1.txt
# cd ../
删除测试文件或目录
[[email protected] backupdata]# rm -rf gnutool-delete/
将设备卸载或者改成只读,防止数据被覆盖使用
# cd ../
# umount /backupdata/
或者
# mount -o remount,ro /dev/sdb1
查询恢复数据信息,注意这里的--inode 2 这里会扫描分区 :
[[email protected] /]# extundelete /dev/sdb1 --inode 2
NOTICE: Extended attributes are not restored.
File name                                       | Inode number | Deleted status
.                                                 2
..                                                2
lost+found                                        11
gnutool-delete                                    12             Deleted
Deleted status标记为 Deleted 是已经删除的文件或目录

默认恢复到当前所在目录下的 RECOVERED_FILES 目录中去。准备一个可以读写的分区,注意不要再丢失数据的分区

1、恢复所有文件
extundelete /dev/sdb1 –restore-all

[[email protected] /]# extundelete /dev/sdb1 --restore-all
NOTICE: Extended attributes are not restored.
Looking through the directory structure for deleted files ...
0 recoverable inodes still lost.
[[email protected] /]# cd RECOVERED_FILES/gnutool-delete/
[[email protected] gnutool-delete]# ls
file1.txt  file2.txt  folder
查看校验码与之前所得是否完全一致
[[email protected] gnutool-delete]# md5sum file*
06da9233bf8c0836e4d45e28dfb2b511  file1.txt
06da9233bf8c0836e4d45e28dfb2b511  file2.txt
[[email protected] gnutool-delete]# md5sum folder/file1.txt
06da9233bf8c0836e4d45e28dfb2b511  folder/file1.txt

2、恢复目录
extundelete /dev/sdb1 —-restore-directory /backupdata/gnutool-delete

[[email protected] backupdata]# mount
/dev/sdb1 on /backupdata type ext4 (rw)
[[email protected] backupdata]# mkdir 123
[[email protected] backupdata]# cd 123
[[email protected] 123]# touch 456 789
[[email protected] 123]# ll
总用量 0
-rw-r--r-- 1 root root 0 5月   7 23:40 456
-rw-r--r-- 1 root root 0 5月   7 23:40 789
[[email protected] backupdata]# ll
总用量 20
drwxr-xr-x 2 root root  4096 5月   7 23:40 123
drwx------ 2 root root 16384 5月   7 23:37 lost+found
[[email protected] backupdata]# rm -rf 123
[[email protected] backupdata]# cd ..
[[email protected] /]# umount /backupdata/
[[email protected] /]# extundelete /dev/sdb1 --inode 2
NOTICE: Extended attributes are not restored.
Triple indirect block: 0
File name                                       | Inode number | Deleted status
.                                                 2
..                                                2
lost+found                                        11
123                                               12             Deleted
Deleted status标记为 Deleted 是已经删除的文件或目录

3、恢复文件
extundelete /dev/sdb1 --restore-files /backupdata/gnutool-delete/file1.txt
4、恢复多个文件
创建一个空白文件,内容为要恢复的文件列表,一个文件一行

vim restore
/backupdata/gnutool-delete/file1.txt
/backupdata/gnutool-delete/file2.txt
/backupdata/gnutool-delete/folder/file1.txt
extundelete /dev/sdb1 —-restore-files ‘restore‘
5、根据时间恢复
假如删除的时间大概是2014-05-04 14:30

[[email protected] ~]# date -d "may 04 14:30" +%s
1399185000 得出秒数

恢复此时间后删除的所有文件
/usr/local/bin/extundelete /dev/sdb1 --after 1399185000 --restore-all

6、根据文件的inode恢复
extundelete /dev/sdb1 --restore-inode 77883

7、查看命令帮助
extundelete --help

8、通过文件打开的PID和文件的句柄来恢复

环境描述:
当前系统中有多个用户登录,其中一个用户对某个文件进行修改,另一个用户对文件执行了删除操作。
例如通过cat命令往文件里输入内容
[[email protected] ~]# cat >> /tmp/restore
hello
hi
haha

而在另一个终端删除这个文件
[[email protected] ~]# rm -rf /tmp/restore

解决方法:
通过文件打开的PID和打开文件的句柄来恢复
[[email protected] ~]# lsof |grep -i delete |grep restore
cat       23308      root    1w      REG    8,5        1473 /tmp/restore (deleted)
[[email protected] ~]# ls /proc/23308/fd
fd/     fdinfo/
[[email protected] ~]# cd /proc/23308/fd
[[email protected] fd]# ls
0  1  2
[[email protected] fd]# cp 1 /tmp/restore
[[email protected] fd]# cat /tmp/restore
hello
hi
haha

ok文件恢复了

应用总结:extundelete基于整个磁盘的恢复功能较为强大,基于目录和文件的恢复还不够完善。如果误删除了文件,记住对磁盘不要进行任何操作,保留好现场.

extundelete工具恢复Linux删除文件,布布扣,bubuko.com

时间: 2024-08-07 08:38:53

extundelete工具恢复Linux删除文件的相关文章

利用extundelete工具恢复Centos6.5中误删除的文件

实验目的:利用extundelete工具恢复误删除的文件实验环境:在Linux系统中安装一台Centos6.5在Centos6.5中新增磁盘并创建分区,模拟删除并进行回复的操作设置文件共享权限,使虚拟机可使用宿主机上的文件(需要使用宿主机上的安装包)yum仓库提前安装完成,可直接使用实验安装包:e2fsprogs-libs-1.41.12-18.e16.x86_64.rpmlibcom err-devel-1.41.12-18.el6.x86_64.rpme2fsprogs-devel-1.41

Linux删除文件夹命令实例

linux删除文件夹命令 在用Linux的时分,有时分要删除一个文件夹,常常会提示次此文件非空,没法删除,这个时分,必需运用rm -rf命令.关于一些小白用户常常在运用Linux命令,会十分当心,以免搞出一些事情,下面小编将教细致教大家如何运用linux命令删除文件夹,需求的请珍藏. linux删除文件夹命令实例: rm -rf /var/log/httpd/access 将会删除/var/log/httpd/access目录以及其下所有文件.文件夹 linux删除文件命令实例: rm -f /

回收站清空了,怎么恢复回收站删除文件

回收站作为电脑的垃圾站,我们往往会把某一文件删除投放到回收站中,并不代表这一文件是没有任何用处的,很有可能是我们不小心将重要的文件误删了,因此,当我们手贱的将回收站清空后就傻眼了.那么,回收站被清空了,该怎么恢复回收站删除文件呢? 不论是Windows还是mac系统,在删除文件时,只是给文件打上一个已删除的标志,真正的数据依然保存在硬盘上,用户如果可以进入数据区域,对数据进行还原和恢复,是可以轻松找回数据的. Easyrecovery是一款专为数据恢复而生的数据恢复软件,致力于保证计算机数据安全

extundelete工具恢复文件(ext4 ,xfs)

extundelete 当数据被误删后,第一时间要做的就是卸载被删除数据所在的分区,如果是根分区,就需要进入系统单用户模式,将根分区以只读模式挂载.这样做是因为,文件被删除仅仅是将文件的inode节点中的扇区指针清零,实际文件还存储在磁盘上,如果磁盘继续以读写模式挂载,这些已删除的文件数据块就可能被操作系统重新分配出去,一旦被新数据覆盖,这些数据就真的丢失了. 做好预防措施之后,可以用extundelete工具进行数据恢复,下文介绍利用此工具恢复ext4和xfs格式的文件系统. ext4 要想使

使用grep恢复被删除文件内容【转】

http://www.cnblogs.com/ggjucheng/archive/2012/10/07/2714311.html Unix/Linux下,最危险的命令恐怕就属rm命令了,每次在root下使用这个命令的时候,我都要盯着命令行看上几分钟才敢把回车敲下去. 以前,看到同事在脚本中使用rm命令 —— rm {$App_Dir}/* .因为脚本没有判断变量$App_Dir是否为空,结果,在一次用root操作的时候,整个操作系统一下就不见了,还好只是开发机.从此,我们大家都再也不敢使用rm命

Linux删除文件夹命令

linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可. 直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字 -r 就是向下递归,不管有多少级目录,一并删除 -f 就是直接强行删除,不作任何提示的意思 工具/原料 Linux rm命令 步骤/方法 1.  删除文件夹实例:     rm -rf /var/log/httpd/access     将会删除/var/log/httpd/access目录以及其下所有

Linux 删除文件夹和文件的命令

linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可.直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字-r 就是向下递归,不管有多少级目录,一并删除-f 就是直接强行删除,不作任何提示的意思 方法/步骤 1 删除文件夹实例:rm -rf /var/log/httpd/access将会删除/var/log/httpd/access目录以及其下所有文件.文件夹 2 删除文件使用实例:rm -f /var/log

linux删除文件未释放空间问题处理

或者 /根分区满了 (我的根分区是/dev/sda1,/dev/sda1满了) http://blog.csdn.net/donghustone/article/details/7085240 linux里的文件被删除后,空间没有被释放是因为在Linux系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用.解决方法:1.先df -lh查看一下磁盘使用状况2.找到被

linux删除文件后沒有释放空间

在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的文件夹结构上解除链接(unlink).然而假设文件是被 打开的(有一个进程正在使用),那么进程将仍然能够读取该文件,磁盘空间也一直被占用.而我删除的是oracle的告警log文件删除的时候文件应该正在被使用. 首先获得一个已经被删除可是仍然被应用程序占用的文件列表,例如以下所看到的:lsof |grep deleted