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