Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux Ext2 檔案系統誤刪檔案救援實戰:debugfs 與手動 inode 修復

編輯:Linux 教學

Linux 多用戶多任務特性下,檔案一旦刪除極難恢復。雖 rm 僅在 inode 標記刪除、不清除資料,但其他用戶/寫入進程會快速覆蓋。單機家用環境或誤刪後及時搶救,仍有恢復可能。本文實戰演示 debugfs 與手動 inode 編輯兩大恢復法。

1. Ext2 檔案系統結構速覽

  • 以區塊(預設 1KB)儲存檔案,區塊號區分
  • 每檔一 inode:擁有者、權限、類型、資料區塊號
  • 小於 12 區塊:inode 直接存區塊號
  • 大於 12 區塊:inode 存間接區塊號(含 256 個區塊號),更大則有二/三級間接區塊

2. 恢復前置作業:唯讀重掛載分區

# 假設檔案在 /usr 分區
mount -o remount,ro /usr
# -r 唯讀;-n 不寫 /etc/mtab(恢復 /etc 時需加)

# 若提示 busy,查找佔用進程
fuser -vm /usr
# 停止非關鍵進程
fuser -kvm /usr

# 單一大分區可進單用戶模式:開機提示符輸入 linux single
# 恢復出來的資料勿寫回原分區,可掛載 DOS/Windows 分區存放
mount -o ro /dev/hda1 /mnt/hda

3. 方法一:debugfs 工具恢復(推薦)

假設 Linux 在 /dev/hda5:

debugfs /dev/hda5
debugfs: lsdel
# 列出已刪除 inode,欄位:Inode、Owner、Mode、Size、Blocks、Time deleted
# 依大小與刪除時間判斷目標,例 inode 196829

debugfs: stat <196829>
# 顯示 inode 詳細資訊,含 BLOCKS 清單

debugfs: dump <196829> /mnt/hda/01.sav
# 恢復檔案至指定路徑

debugfs: quit

4. 方法二:手動編輯 inode 修復

debugfs: mi <196829>
# 互動式修改各欄位,按 Enter 保持原值
# 關鍵修改:
Deletion time [0x31a9a574] 0    # 改為 0 表示未刪除
Link count [0] 1               # 改為 1 恢復連結計數
# 其他欄位保持預設

debugfs: quit
fsck /dev/hda5
# 系統提示發現遺失資料區塊,置入 lost+found 目錄,即為恢復檔案

關鍵提醒

  • 誤刪後立即停止寫入,掛載唯讀或進單用戶模式
  • 恢復資料勿寫回原分區,避免覆蓋其他可救資料
  • debugfs 操作需極度小心,建議先備份重要分區映像
Copyright © Windows教程網 All Rights Reserved