1 、问题描述

        Linux服务器进行多个文件打包时,将压缩包和原文件放在同一目录下,使用rm -rf 删除原文件时,误将压缩包也删掉,以致文件无法找回。

2、问题分析及处理

        文件误删后,就快速网上查询恢复办法,使用系统自还工具debugfs进行恢复,然而文件虽恢复,但文件内容已被清空重写,使用lsdel命令也查询不到刚被删除的文件,分析原因可能是其它用户和一些写盘动作的进程会很快覆盖这些数据,也可能是lsdel只能查询存在ext2分区下的文件。对于家庭单机使用的Linux,或者误删后及时补救,使用debugfs有可能会恢复。

        谨记:多个文件打包时,一定要将压缩包先转移出去,跟原文件不在同一目录下,再去删除原文件。

3、这里以/root/software目录下的a.log文件为例,整理了使用debugfs恢复被删文件的方法。

1)root用户登录,获取被删文件目录所在的分区

# df /root/software   //获取被删文件目录所在的分区

2)使用系统自还工具debugfs进行修复

# debugfs

 

3)打开目录所在分区

debugfs:  open /dev/mapper/vg_iotdb-lv_root

4)用ls -d查看刚刚删除文件的目录

debugfs:  ls -d /root/software

5)显示有<>尖括号的就是要找的文件Inode号

debugfs:  logdump -i <88342707>

6)输入quit退出

7)恢复文件,执行如下命令

# dd if=/dev/mapper/vg_iotdb-lv_root of=/root/software/a.log bs=2304 count=1 skip=353370149

其中,/dev/mapper/vg_iotdb-lv_root 为目录所在分区,/root/software/a.log 为被删文件

Bs 的值和offset一致,skip的值和block一致

8)至此,文件恢复成功,查看文件大小和内容是否正确。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐