比方說,我有一個10 MB的文件,並執行這些步驟:我可以用這種方法安全刪除文件嗎?
- 打開它在我最喜歡的編程語言,讀/寫
- 流中清除全部
- 寫明10 MB的隨機回到同流
- 將更改保存到磁盤
- 通過正常方式刪除文件
我能否確定新的10 MB在硬盤驅動器的扇區級別上成功覆蓋了舊的10 MB?或者是否有可能「刪除流中的所有內容」步驟刪除舊文件並可能將新的10 MB寫入新位置?
比方說,我有一個10 MB的文件,並執行這些步驟:我可以用這種方法安全刪除文件嗎?
我能否確定新的10 MB在硬盤驅動器的扇區級別上成功覆蓋了舊的10 MB?或者是否有可能「刪除流中的所有內容」步驟刪除舊文件並可能將新的10 MB寫入新位置?
數據仍然可以由專業人員訪問,他們知道自己在做什麼並且可以訪問磁盤上的原始數據(即不通過文件系統)。
你的程序基本上等同於Linux的shred
命令,它包含以下警告:
注意:請注意使用shred一個非常重要的假設: 文件系統到位覆蓋數據。這是傳統的做法,但許多現代文件系統設計並不能滿足這種假設。文件系統的下面是示例在其上粉碎是 不有效,或不能保證有效地所有文件系統的模式:
日誌結構或日誌文件系統,如與 AIX提供的那些和Solaris(和JFS,ReiserFS的,XFS,Ext3的,等等),該寫冗餘數據,並進行
文件系統即使一些寫入 失敗,如基於RAID-文件系統
文件系統製作快照UCH作爲Network Appliance公司的NFS服務器,在臨時地點緩存
文件系統,如NFS 版本3級的客戶
壓縮文件系統
還有其他情況爲好,如作爲具有磨損平衡的SSD。
不,因爲在任何現代文件系統提交都是原子的,你幾乎可以100%確定10Mb沒有覆蓋舊的10Mb,並且這是在我們考慮日誌文件系統實際上保證這一點之前。
簡短回答:不可以。
這可能取決於您的語言和操作系統。我有一種感覺,流調用被傳遞給操作系統,然後操作系統決定要做什麼,所以我會傾向於第二個問題是正確的,只是爲了安全起見。此外,磁性僞影將在刪除後出現,仍然可用於恢復所述數據。即使覆蓋全部爲零的相同扇區,也可能會使數據處於褪色狀態。一般建議做幾個刪除通行證。有關說明,請參閱here或使用開源C#文件粉碎機的here。
對於Windows,你可以使用SDelete命令行實用程序,它實現了國防部的清理和消毒標準:
安全刪除應用程序覆蓋使用的顯示,使若干技術問題探討已刪除文件的磁盤上的數據 磁盤數據不可恢復,即使 使用恢復技術,可以讀取磁介質 中的模式,揭示微弱刪除的文件。
特別值得注意的:
壓縮,加密和稀疏由NTFS在16簇 塊進行管理。如果程序寫入此文件的現有部分NTFS 在磁盤上分配新空間以存儲新數據,並且在寫入新數據之後,釋放之前由該文件佔用的 的羣集。