我们说我有一个10 MB的文件并完成以下步骤:
我可以确定新的10 MB成功覆盖了硬盘中扇区级别的旧10 MB吗?或者"擦除流中的所有内容"步骤删除旧文件并可能将新的10 MB写入新位置?
答案 0 :(得分:3)
知道他们正在做什么的专业人员仍然可以访问数据,并且可以访问磁盘上的原始数据(即无需通过文件系统)。
您的程序基本上等同于Linux shred
命令,该命令包含以下警告:
注意:请注意,Shred依赖于一个非常重要的假设: 文件系统将数据覆盖到位。这是传统的 做事的方式,但许多现代文件系统设计不满足这一点 假设。以下是Shred所在的文件系统示例 无效或不保证在所有文件系统模式下都有效:
日志结构或日志文件系统,例如随附的文件系统 AIX和Solaris(以及JFS,ReiserFS,XFS,Ext3等)
写入冗余数据的文件系统,即使有些写入也会继续执行 失败,例如基于RAID的文件系统
制作快照的文件系统,例如Network Appliance的NFS服务器
缓存在临时位置的文件系统,例如NFS 版本3客户
压缩文件系统
还有其他情况,例如带磨损均衡的SSD。
答案 1 :(得分:2)
不,因为在任何现代文件系统提交都是原子的,你可以几乎100%肯定10Mb没有覆盖旧的10Mb,而且在我们考虑实际保证这一点的日志文件系统之前。
答案 2 :(得分:0)
简短回答:不。
这可能取决于您的语言和操作系统。我有一种感觉,流调用传递给操作系统,然后操作系统决定做什么,所以我倾向于你的第二个问题是正确的,只是为了安全起见。此外,在删除之后将存在磁性伪像,其仍可用于恢复所述数据。即使用全零覆盖相同的扇区,也可能使数据处于衰落状态。通常建议多次删除。有关解释,请参阅here;有关开源C#文件粉碎机,请参阅here。
对于Windows,您可以使用SDelete命令行实用程序来实现国防部清除和清理标准:
安全删除应用程序会覆盖已删除文件的磁盘数据 使用显示的磁盘数据甚至可以使磁盘数据无法恢复 使用可以读取磁介质模式的恢复技术 揭示弱删除的文件。
特别值得注意的是:
压缩,加密和稀疏由16位集群中的NTFS管理 块。如果程序写入这样的文件NTFS的现有部分 在磁盘上分配新空间以存储新数据 已编写新数据,先前已取消分配集群 被文件占用。