Linux 檔案系統(ext3/ext4)刪除檔案實為釋放 inode 與區塊,資料實體暫時殘留於磁碟,若未被覆寫,理論可恢復。但操作風險高,需謹慎。
mount -o remount,ro /dev/sdXn。# 1. 進入 debugfs
debugfs /dev/sdXn
# 2. 查找被刪除的 inode
debugfs: lsdel
# 列出最近刪除的 inode 號與檔案名片段
# 3. 恢復特定 inode
debugfs: dump <inode號> /tmp/recovered_file
# 或批次恢復目錄
debugfs: rdump <inode號> /tmp/restore_dir
# 4. 退出
debugfs: quit
# 安裝
yum install extundelete # 或 apt-get install extundelete
# 恢復單一檔案
extundelete /dev/sdXn --restore-file path/to/deleted/file
# 恢復整個目錄
extundelete /dev/sdXn --restore-directory path/to/deleted/dir
# 恢復所有已刪除
extundelete /dev/sdXn --restore-all
輸出預設在當前目錄下的 RECOVERED_FILES/。
若分區為 SSD 且啟用 TRIM,資料區塊可能已被控制器清空,恢復機率極低。平時建立 rsync、git、快照備份才是根本之道。