前情
因手快误将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。