作為Steam的老玩家,可能都注意到了一個細節:遊戲的安裝過程往往耗時較長,但卸載卻能在瞬息間完成。
例如,以現在的網絡速度,在Steam上安裝200G遊戲可能需要1-2個小時,但卸載卻僅需1-2秒。這到底是怎麼回事呢?
Steam卸載界面
在Steam上點擊卸載按鈕後,雖然遊戲從菜單中消失了,但遊戲文件並沒有被徹底刪除,而是通過將存儲區域標記為“空白”,從而讓系統認為這些區域可以寫入新數據。這種操作速度很快,因為它不需要實際移動或刪除大量數據。
通俗點講:Steam花了1-2秒告訴你的系統,這裡已經沒有東西了,你可以隨便寫入了。
再舉一個例子:當你手動刪除大文件時,會有提醒:文件過大無法放入回收站,是否徹底刪除?這個操作非常地快,這就是相同的原理。
文件過大刪除提示
而簡單的文件恢復原理就是取消已經標記的“空白”,這樣文件就能恢復回來了。而那些恢復不了的文件大概率就是被覆蓋了。
windows文件刪除原理
NTFS結構簡介
在 Windows 操作系統中,常見的文件系統有 FAT(File Allocation Table)、NTFS(New Technology File System)等。NTFS 是目前廣泛使用的文件系統,這裡以NTFS舉例分析。
NTFS 使用主文件表(MFT,Master File Table)來存儲文件和目錄的信息。MFT 中的每個記錄(稱為文件記錄)大小通常為 1KB,它包含了文件的各種屬性,如文件名、文件大小、時間戳、數據存儲位置等。
對於文件的數據存儲,NTFS 採用簇(cluster)的概念。簇是磁盤空間分配的最小單位,文件的數據被存儲在一個或多個簇中。
文件刪除過程
標記刪除操作(NTFS)
當用戶在 Windows 中刪除一個文件時,系統首先會在 MFT 中對應的文件記錄上進行標記。這個標記通常是將文件記錄中的一個特定字段(如 “已刪除” 標誌位)進行設置。例如,文件記錄中的一個字節可能會從表示 “正常” 狀態的值變為表示 “已刪除” 狀態的值。
系統並不會立即清除文件的數據內容。文件的數據所佔用的簇仍然保留在磁盤上,只是這些簇被標記為可以被重新使用。這就好比在圖書館中,一本書被標記為 “已廢棄”,但書的內容(數據)還在書架(磁盤)上,只是書架位置(簇)可以被用來放置新的書(新的數據)。
目錄項處理(NTFS)
對於文件所在的目錄,其目錄項也會被更新。目錄項是存儲在目錄文件中的記錄,用於記錄文件名和對應的文件記錄在 MFT 中的位置等信息。當文件被刪除時,目錄項可能會被部分清除或者標記為無效。
例如,文件名可能會被刪除或者用特殊字符填充,文件記錄在 MFT 中的索引位置可能會被清除,這樣在正常的目錄瀏覽操作中就不會再顯示這個文件。