2014-10-21 162 views
1

比方說,我有一個10 MB的文件,並執行這些步驟:我可以用這種方法安全刪除文件嗎?

  1. 打開它在我最喜歡的編程語言,讀/寫
  2. 流中清除全部
  3. 寫明10 MB的隨機回到同流
  4. 將更改保存到磁盤
  5. 通過正常方式刪除文件

我能否確定新的10 MB在硬盤驅動器的扇區級別上成功覆蓋了舊的10 MB?或者是否有可能「刪除流中的所有內容」步驟刪除舊文件並可能將新的10 MB寫入新位置?

回答

3

數據仍然可以由專業人員訪問,他們知道自己在做什麼並且可以訪問磁盤上的原始數據(即不通過文件系統)。

你的程序基本上等同於Linux的shred命令,它包含以下警告:

注意:請注意使用shred一個非常重要的假設: 文件系統到位覆蓋數據。這是傳統的做法,但許多現代文件系統設計並不能滿足這種假設。文件系統的下面是示例在其上粉碎是 不有效,或不能保證有效地所有文件系統的模式:

  • 日誌結構或日誌文件系統,如與 AIX提供的那些和Solaris(和JFS,ReiserFS的,XFS,Ext3的,等等),該寫冗餘數據,並進行

  • 文件系統即使一些寫入 失敗,如基於RAID-文件系統

  • 文件系統製作快照UCH作爲Network Appliance公司的NFS服務器,在臨時地點緩存

  • 文件系統,如NFS 版本3級的客戶

  • 壓縮文件系統

還有其他情況爲好,如作爲具有磨損平衡的SSD。

2

不,因爲在任何現代文件系統提交都是原子的,你幾乎可以100%確定10Mb沒有覆蓋舊的10Mb,並且這是在我們考慮日誌文件系統實際上保證這一點之前。

0

簡短回答:不可以。

這可能取決於您的語言和操作系統。我有一種感覺,流調用被傳遞給操作系統,然後操作系統決定要做什麼,所以我會傾向於第二個問題是正確的,只是爲了安全起見。此外,磁性僞影將在刪除後出現,仍然可用於恢復所述數據。即使覆蓋全部爲零的相同扇區,也可能會使數據處於褪色狀態。一般建議做幾個刪除通行證。有關說明,請參閱here或使用開源C#文件粉碎機的here

對於Windows,你可以使用SDelete命令行實用程序,它實現了國防部的清理和消毒標準:

安全刪除應用程序覆蓋使用的顯示,使若干技術問題探討已刪除文件的磁盤上的數據 磁盤數據不可恢復,即使 使用恢復技術,可以讀取磁介質 中的模式,揭示微弱刪除的文件。

特別值得注意的:

壓縮,加密和稀疏由NTFS在16簇 塊進行管理。如果程序寫入此文件的現有部分NTFS 在磁盤上分配新空間以存儲新數據,並且在寫入新數據之後,釋放之前由該文件佔用的 的羣集。

相關問題