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

UNIX 刪除檔案救援策略:從 i-node 結構到四大內容恢復法

編輯:Windows 技巧

UNIX 檔案刪除後難恢復的根本原因

DOS/Windows 刪除檔案仍保留檔名、長度、起始簇號等資訊;UNIX 完全依賴 i-node (索引節點) 描述檔案屬性、資料區塊表等,刪除時 i-node 被清空,直接恢復幾乎不可能,必須另闢蹊徑。

標準 UNIX 檔案卷結構

  1. 開機區塊 (Boot Block): 第 1 扇區 512 bytes,根檔案系統專有。
  2. 超級區塊 (Super Block): 第 2 扇區,描述檔案系統結構 (i-node 長度、總區塊數、空閒區塊/節點登記表等),結構見 /usr/include/sys/filsys.h。
  3. i-node 表: 緊接超級區塊,長度由 s_isize 決定,描述檔案屬性、長度、擁有者、資料區塊表等,結構見 /usr/include/sys/ino.h。
  4. 目錄結構: 目錄本身也是檔案,內容為 (i-node 號 2 bytes + 檔名 14 bytes) 陣列,含 . (本目錄)、.. (父目錄) 及一般檔案項。

刪除過程分析

  • 刪除檔案: 依 i-node 位址表逐一釋放資料區塊 → 清空 i-node → 釋放 i-node。檔案內容實際保留於磁碟。
  • 刪除目錄: 遞迴刪除目錄下所有檔案 → 刪除目錄本身 (同檔案刪除流程)。
  • 不同指令差異:
    rm:標準流程。
    mv file1 file2:釋放 file2 資料區塊 → file1 改名為 file2 → 釋放 file2 原 i-node。
    > file:新檔僅申請 i-node 不寫內容;清空舊檔則釋放資料區塊、長度歸零。

四大恢復策略

1. 現場未破壞:依磁碟分配演算法恢復

前提:刪除後無寫入操作、僅刪一檔。系統建檔依特定演算法分配區塊,刪除釋放回分配表,重建檔案時分配結果相同。UNIX 檔案最後一區塊尾部全 0,可作為結束判斷。
步驟:
① 申請 i-node (# > /tmp/xx)
② 呼叫 getnextfreeblock() 取得區塊號記入位址表
③ 讀區塊判斷尾部是否全 0,否則回 ②,是則 ④
④ fstat 取 /tmp/xx i-node 號,寫入位址表、計算長度寫入 di_size
⑤ 回寫 i-node 表完成恢復。
注意:分配演算法因版本異;SCO UNIX 5.0 用動態鏈表,恢復更易 (找鏈表尾)。

2. 現場已破壞:依內容恢復 (實用性更高)

UNIX 多程序、多用戶,開關機、硬體/通訊故障皆寫日誌,現場極易破壞。四種內容恢復法:

  1. 關鍵字搜尋法: 知檔案部分內容且長度 ≤ 1 區塊,搜尋全檔案系統找含該位元組串的區塊,填入 i-node 恢復。演算法:df -k 確認裝置名 → searchfs() 逐區塊讀取比對 comp() 條件。
  2. 精確長度搜尋法: 知確切位元組數,推算最後一區塊有效長度 (其餘全 0),搜尋符合條件區塊,多候選再用其他條件篩選。
  3. 內容關聯法: 知檢查和或上下文關聯,搜尋全系統嘗試匹配關聯條件區塊。
  4. 環境比對法: 找相同硬體、同版本 UNIX、同安裝步驟的機器建立基準環境,比對兩系統同分區內容,推斷被刪檔案大致位置,縮小搜尋範圍至可逐一觀察/嘗試。

具體實作依賴特定 UNIX 版本檔案系統結構與區塊分配演算法,本文提供通用思路與策略框架。

Copyright © Windows教程網 All Rights Reserved