前情
因手快誤將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。