debugfs恢复linux上rm误删的文件

时间:2024-02-20 21:42:05

前情

因手快误将Linux系统上辛苦编写的代码直接rm误删,由于未将代码更新到git,代码改动又比较大,重写起来太费劲,因此想着怎样才能恢复误删的文件。

 

网上查了许多资料,目前总结出一个比较实用于自己的恢复方法,记录于此:

 

神器debugfs

 

1 执行sudo debugfs -w /dev/sda1 命令,进入debugfs模式,其中sda1是你所在的分区,因人而异。

2 执行lsdel,列出最近所有删除的文件,结果是按时间顺序从老到新排列

  结果格式类似:

    Inode Owner Mode Size Blocks Time deleted
    8934222 14456 100664 592 1/ 1 Wed Aug 26 11:49:48 2015

  如果结果太多,可以直接执行如下命令: echo lsdel | debugfs /dev/sda1 > lsdel.out

  如此可将结果输出成本地文件。

3 从列出的删除结果中,或从保存的结果文件中找到被删除的文件,可根据删除时间、文件所有者确认。找到被删除文件后,第一个数字为inode号。

4 在debugfs模式下,执行 dump <123456> /tmp/123456.bak,可将被删除的文件恢复,其中123456为被删除文件的inode号。

5 确认恢复的文件是否为期望的文件。

 

后记

祝文件恢复成功,愿不再手快直接rm。