我們真的把不需要的文件刪掉了嗎?

前一久手誤把裝音樂的文件夾的刪掉了(shift+Delete),然後在網上搜了一下解決辦法,抱著試試看的心態找了一個軟體——Easyrecovery。

你妹的居然把刪掉的東西都給恢復了,三觀都塌陷,當時我就震驚了。

那我在這裡想問一下

(1)我們平時刪掉的文件都哪裡去了,既然可以恢復的話還能稱為「刪除」嗎?

(2)那些被「刪除」的文件是以什麼形式存在的,為什麼它們不佔據儲存空間?(刪掉之後這些文件所佔的空間不是都已經騰空了,類似Easyrecovery的軟體怎麼能憑空給我恢復出來呢)

(3)怎麼樣才能以非物理方法把文件數據徹底刪除掉?

謝謝


使用任何存儲介質的目的無非記錄信息。在有計算機之前一直用的是紙,我們可以考慮一下,如何用計算機的方法,在紙上記錄信息。

  1. 我們有一張巨大的白紙,你可以想像這張紙非常非常大。這是我們的存儲介質。
  2. 你可以在紙上寫字,不過一張特別大的紙是沒法直接用的,至少用著很不方便。所以我們把他裁開,分成一頁一頁的。把每頁編上頁碼,同時做一個目錄。這個過程叫做格式化。我們在這張紙上建立了一個文件系統。紙還是那張紙,不過我們現在把它做成一個筆記本,更方便使用了。預留的目錄會用掉部分頁,這也是為什麼格式化以後,可用空間變少了。這個目錄後面附有一張使用情況表,按順序每一格代表一頁。如果這頁寫有筆記,我們就給它塗黑,代表已使用。
  3. 寫入數據的過程就和在筆記本上面裡面寫筆記一樣。我們先看看使用情況表,找到一個空頁,翻到這頁開始記筆記。你不僅要寫入筆記的具體內容,這個內容有長有短,還要在目錄內順手記上一筆,比如從某頁開始寫入了什麼內容。然後在使用情況表中把對應這幾頁的地方塗黑。這就是你在寫入文件時做的事情。
  4. 這裡還有個有趣的地方。由於目錄這東西,每一條後面跟著一個頁碼。也就是說它實際上是以「頁」為單位的。那麼如果我一條筆記只有一個字,他也會佔用一整頁。計算機也是這樣,不過計算機是以「簇」為單位的。你可以把它當成「頁」的另一種寫法。舉個例子來說。你可以新建一個文本文檔,裡面只打一個字,保存後看看文件屬性。一般大小會是一到兩個位元組,這取決於你打的是中文還是英文,但佔用空間會是4KB。這是NTFS文件系統默認使用的簇大小,其他系統也是類似的。

  5. 發現有些筆記記錯了,想刪掉。由於這筆記本很厚,想找到筆記的內容,翻起來很麻煩。所以就直接在目錄上,對應的條目中標記個「已刪除」,或者把這個條目整個刪掉就好了。記得刪除以後在使用情況表中把對應這幾頁的格子清空。
  6. 再次記筆記的時候,還是先看那張表。找到一個空的格子,這個可能是原來用過,後來被清空的頁。我們翻到對應的頁,擦掉原有的筆記,重新寫上新的就好了。其他的就和第一次記筆記一樣,添加目錄,然後在使用表中重新塗黑這頁對應的格子。
  7. 新的筆記比原來刪除的筆記內容要多,原有筆記假設有5頁,新筆記有10頁,原來留下的空頁寫不下,而5頁過後還有別的內容。我們可以現在這裡記錄5頁的內容,然後剩下的5頁寫在筆記本最後面的空頁處。這樣整個筆記被分割成兩部分,只要在第一部分最後寫上跳轉到xx頁就可以了。這叫做文件碎片。
  8. 筆記本使用久了以後,裡面形成碎片的筆記就會很多,用起來很不好方便。我們可以把整個筆記本拆開,把同一個筆記的不同部分放在一起,形成連貫的內容。同時重新編寫目錄。這個過程叫做碎片整理。實際上的做法更加麻煩。是將這些亂七八糟的碎片不停的抄來抄去,挪來挪去,直到大部分的筆記拼在一起。而不會直接拆開筆記本,不然這時候萬一斷電那就麻煩了。

想想前面說過刪除筆記的方法。想要恢復已經被刪除的筆記,首先要確保一點,就是原來記筆記的這幾頁沒有被寫入新的內容。如果確實是這樣,那麼很簡單。標記為刪除的直接恢復即可。如果這個目錄條目被刪掉了。那麼只要從頭翻一遍筆記本,把找到的筆記重新編個目錄條目就行了。EasyRecovery乾的就是這事。

統計存儲空間的時候,只看目錄後面那張使用情況表。數一數有多少塗黑的格子就知道用了多少頁了。至於空白的那些究竟有沒有內容,這點用不著關心。反正這些都是可以再次記筆記的地方。

無論是直接刪除條目,還是使用「已刪除」標記。筆記的內容實際上都還在本子里。想要徹底刪除也很簡單,你在筆記的那幾頁寫點別的東西就可以了。比如寫點垃圾信息,抄點小廣告什麼的。只要把原來的內容覆蓋掉就可以了。那些文件粉碎軟體就是這麼乾的。

我盡量不用任何專業詞語來解釋這個問題,因而某些地方描述的可能不是非常精確,不過計算機使用存儲介質大概就是這種方法。具體到不同的文件系統,某些操作會不大一樣。原理上都差不太多。


[原創]數據恢復基礎與常用數據恢復軟體使用自己很久很久以前的一篇帖子.

我們的文件是如何刪除的

文件是保存在硬碟中的(當然還有其他儲存介質這裡不做討論了),這個地球人都知道,系統讀取文件時,從硬碟的目錄區DIR讀取了文件的相關信息,比如說吧文件名啦,文件的大小啦,文件的修改日期,文件的位置(數據區DATA的簇號)…….之後就可以知道數據的位置,再讀取就行了。而硬碟在記錄文件時,先要將文件的信息:文件名,文件的大小,文件的修改日期(不包括文件的位置)記錄到DIR區,之後在DATA區選一塊空地,放進去,順便往DIR區記錄位置。

而文件的刪除卻很簡單,只是把DIR區文件的第一個字元改為E5(常規刪除,如果你用軟體覆蓋了,就不是如此了,數據也不能恢復了)這也就是說,文件的數據並沒有被覆蓋,也就為為恢復創造了可能。

PS:各個文件系統都有不同的原理,這裡只是將的普遍原理,如要深究維基百科上有較詳細的解釋。

安全刪除有很多工具


(1)我們平時刪掉的文件都哪裡去了,既然可以恢復的話還能稱為「刪除」嗎?

答:文件還在磁碟里,前提是所在磁碟區域沒有被覆蓋。刪除是指在操作系統層面不可見,好比你註銷一個手機號,你去運營商那裡辦理了註銷手續,這個號碼對你來說就是不可用的(你做了刪除操作),但是這個號碼本身並沒有消失,如果你後悔了,又想用這個號碼了,你可以向運營商申請『恢復』。如果在你後悔之前,又有別人想申請這個號碼,那運營商就會把這個號分配給被人,對你來說這個『文件』就不可能恢復了。

(2)那些被「刪除」的文件是以什麼形式存在的,為什麼它們不佔據儲存空間?(刪掉之後這些文件所佔的空間不是都已經騰空了,類似Easyrecovery的軟體怎麼能憑空給我恢復出來呢

答,文件是以二進位存儲在磁碟上的,理論上來說它么不僅佔領的空間比文件本身要大,多出來的空間是管理空間,具體來說保存在文件系統中。所謂刪掉,從文件系統角度來說只是標記這部分空間可用,可用意味著可以被覆蓋,文件系統不會主動修改這些數據,只有當新數據沒有空間存儲的時候才會覆蓋這些無效數據空間。easy recovery就是通過分析文件系統數據結構,來查找這些被標記為無效的數據文件,進而讀取它們達到恢復的效果。

(3)怎麼樣才能以非物理方法把文件數據徹底刪除掉?

簡單說,把硬碟寫滿,用不同數據重複寫幾次就好了。


刪除的不是文件,而是文件的索引。只要原來文件存儲的空間沒有被重寫,就可以找回來的。


推薦閱讀:

硬碟因誤格式化導致數據丟失有無補救辦法?
技術 | Netflix AWS 應用深度解析
計算機已知一個地址,得到這個地址指向的內容,時間是常數級的嗎?如何實現的?
才不是呢!
解壓縮操作為什麼不吃CPU?

TAG:計算機 | 硬體 | 硬碟 | 電腦硬體 |