Linux跟windows不同,删除文件后不会先到回收站,无法直接进入回收站找回并还原,根据Linux文件保存原理,可以使用extundelete工具来实现误删文件数据的恢复。
本文转自——学领未来
【正文】
Linux文件系统中删除文件后,实际是将inode节点中文件的扇区删除,同时释放文件所占的数据块block,在这些数据块还没被系统重新分配给其他文件时,可以找回已删除的文件,为了防止没有新的数据写入,需要取消挂载文件所在的盘,此外,也可以将盘设置为只读模式。本文是使用umount取消挂载这一步骤来防止文件继续写入。
extundelete是基于Linux的一个数据恢复工具,它通过分析文件系统的日志,解析出所有文件的inode信息,从而可以恢复Linux下主流的ext3、ext4文件系统下被误删除的文件。extundelete会通过文件系统的inode信息(根目录的inode一般为2)来获得当前文件系统下所有文件的信息,包括存在的和已经删除的文件,这些信息包括文件名和inode。然后利用inode信息结合日志去查询该inode所在的block位置,包括直接块、间接块等信息。最后利用dd命令将这些信息备份出来,从而恢复数据文件。
一 环境准备
1.1 在虚拟机新增硬盘后,新建分区
fdisk /dev/sdb
fdisk -l 确认分区已经创建
1.2 格式化分区
mkfs -t ext3 /dev/sdb1
1.3 模拟生产使用新建文件夹,挂载到新建的分区,然后上传几个文件
mkdir /data
mount /dev/sdb1 /data/
二 文件删除及恢复
2.1 删除/data中刚上传的文件
2.2 开始恢复
2.2.1 取消挂载 /data,放着该分区有写入新数据,覆盖原来文件所占的block
umount /dev/sdb1
2.2.2 安装extundelete
2.2.3 查看/dev/sdb1 中的文件,可以看到有刚才已经删除的文件
extundelete /dev/sdb1 –inode 2
2.2.4 恢复文件,会在当前目录下新建 RECOVERED_FILES 的文件夹,文件会恢复到这个目录下
extundelete –restore-all /dev/sdb1