实用工具SDelete

安全地删除没有任何特殊属性的文件相对而言简单而直接:安全删除程序使用安全删除模式简单地覆盖文件。较为复杂的是安全地删除 Windows NT/2K 压缩、加密和稀疏文件,以及安全地清理磁盘可用空间。

压缩、加密和稀疏文件由 NTFS 以 16 群集块方式管理。如果某个程序向此类文件的现有部分写入数据,则 NTFS 会分配磁盘上的新空间来存储新数据,并在写入新数据后取消分配该文件先前占用的群集。NTFS 采取此保守方法的原因与数据完整性有关,而且对于压缩和稀疏文件,这样可以在出现新分配大于现有分配(新的压缩数据大于旧的压缩数据)的情况下正确应对。因此,覆盖此类文件时将不能成功地从磁盘中删除文件的内容。

为了处理上述类型的文件,SDelete 依赖碎片整理 API。利用 碎片整理 API,SDelete 可以精确地判断磁盘中哪些群集由属于压缩、稀疏和加密文件的数据占用。 SDelete 在了解哪些群集包含该文件的数据后,就可以打开磁盘进行原始访问并覆盖这些群集。

可用空间的清理问题提出了另一项挑战。由于 FAT 和 NTFS 没有为应用程序提供直接寻址可用空间的方法,因此 SDelete 具有以下两个选择之一。第一个选择是它可以像处理压缩、稀疏和加密文件那样,打开磁盘以进行原始访问并覆盖可用空间。此方法面临一个很大的问题:即使 SDelete 被编码为完全能够计算 NTFS 和 FAT 驱动器的可用空间部分(这并非微不足道),它也会遭遇与系统上发生的活动文件操作发生冲突的风险。例如,假设 SDelete 确定某个群集可用,而就在此时文件系统驱动程序(FAT、NTFS)决定为另一应用程序正在修改的文件分配该群集。文件系统驱动程序会将新数据写入该群集,然后 SDelete 跟随而来并覆盖了刚刚写入的数据:该文件的新数据丢失了。如果为文件系统元数据分配该群集,则问题会更糟,因为 SDelete 会破坏文件系统的磁盘结构。

第二种方法即 SDelete 所采用的方法是间接覆盖可用空间。首先,SDelete 分配它所能分配的最大文件。SDelete 使用非缓存文件 I/O 完成此任务,这样就不会将 NT 文件系统缓存的内容扔掉,也不会用与 SDelete 的占用大量空间的文件相关联的无用数据替代这些内容。因为非缓存文件 I/O 必须是扇区(512 字节)对齐的,所以可能存在一些不能为 SDelete 文件分配的剩余空间(即使 SDelete 无法进一步扩大该文件)。为了获取任何剩余空间,SDelete 接下来会分配它能够分配的最大缓存文件。对于这两个文件, SDelete 都执行安全覆盖,并且确保所有以前可用的磁盘空间都被安全地清理。

在 NTFS 驱动器上,分配和覆盖这两个文件并非 SDelete 的全部工作。SDelete 还必须用适合 MFT 记录的文件填充 NTFS MFT(主文件表)的任何现有可用部分。一个 MFT 记录的大小通常为 1KB,而磁盘上的每个文件或目录都至少需要一个 MFT 记录。小文件都整个存储在各自的 MFT 记录中,而对于不适合一个记录的文件,则会为其分配 MFT 外部的群集。SDelete 为处理可用 MFT 空间而必须完成的全部工作就是分配它能够分配的最大文件 - 当该文件占用 MFT 记录中的所有可用空间时,NTFS 将防止该文件增大,因为磁盘中没有剩余的可用群集(它们正被 SDelete 先前分配的两个文件占用)。然后,SDelete 将重复此过程。当 SDelete 甚至无法再创建新文件时,它会知道 MFT 中所有先前可用的记录都已完全被安全覆盖文件填充。

为了覆盖您删除的文件的文件名,SDelete 会将该文件重命名 26 次,每次都用连续的字母字符替换文件名中的每个字符。例如,“foo.txt”经过第一次重命名后将变为“AAA.AAA”。

SDelete 在清理磁盘可用空间时不能安全删除文件名的原因是,删除文件名需要直接操作目录结构。目录结构可能具有包含已删除文件名的可用空间,但可用目录空间不能分配给其他文件。因此, SDelete 无法分配此可用空间以便安全地覆盖它。

SDelete 的用法

SDelete 是一个带有许多选项的命令行实用工具。按照任何给定用法,都可以使用它删除一个或多个文件和/或目录,或者清理逻辑磁盘上的可用空间。SDelete 将通配符接受为目录或文件说明符的一部分。

用法:sdelete [-p passes] [-s] [-q]
sdelete [-p passes] -z [drive letter]

-p passes

指定覆盖操作的执行遍数

-s

对子目录执行递归操作

-q

不显示错误(静默模式)

-z

清理可用空间

时间: 2024-09-28 20:55:47

实用工具SDelete的相关文章

CSS3实例资源收集:11个CSS3开发实用工具

文章简介:11 个让你更好进行CSS3开发的实用工具/资源. 层叠样式表是用来描述表达语义或者是一种标记语言编写的文档中的外观和格式的一种样式语言,这种标记语言也可以是HTML,也可以在XML文档中使用.CSS3被分成几个独立的文件成为模块,每个模块还具有不同的扩展功能,此外,不同的模块有不同的稳定性和状态. 1) proCSSor 2) Code Beautifier 3) Styleneat CSS3 速查表 4) css-3-cheat-sheet 5) css3_color_names

常用的Facebook Apps实用工具

Facebook平台下的有很多优秀的Apps实用工具,大量的第三方工具极大扩展了Facebook的功能和应用,给Facebook带来了巨大的成功.在Facebook海量的实用工具中,我挑选了几个优秀的Apps推荐给大家,安装后会令大家的Facebook功能得到很大的增强,以下是这些应用程序清单和介绍. Twitter - 可以将Twitter发布的信息同步到Facebook,也可以在Facebook发布信息到Twitter上,这是Twitter官方页面推荐的实用工具,同步速度非常快,Twitte

Javascript实用工具:帮助你的JS开发更简单

文章简介:Javascript开发变得更轻松的实用工具. 1) Heatmapjs heatmap.js是一个JavaScript library可用于利用html5canvas元素来基于你的生成Web热图(heatmaps). Heatmap.js用来生成基于用户自定义数据上的web 热图,内嵌html5 画布元素. 2) Jqapi 和其他 jQuery 开发者一样,我花费了很多时间在查找文档上面.jQAPI 这个网站提供了更好友好的jQuery 文档功能,所以现在我都是在这个网站寻找帮助.

SQL Server 2005命令提示实用工具

本文汇总了SQL Server 2005命令提示实用工具,供参考学习应用. 实用工具 说明 安装位置 bcp 实用工具 用于在 Microsoft SQL Server 实例和用户指定格式的数据文件之间复制数据. x:Program FilesMicrosoft SQL Server90ToolsBinn dta 实用工具 用于分析工作负荷并建议物理设计结构,以优化该工作负荷下的服务器性能. x:Program FilesMicrosoft SQL Server90ToolsBinn dtexe

SQL Server bcp 实用工具

server  bcp 实用工具bcp 实用工具在 Microsoft SQL Server 2000 实例和数据文件之间以用户指定的格式复制数据.语法bcp {[[database_name.][owner].]{table_name | view_name} | "query"}    {in | out | queryout | format} data_file    [-m max_errors] [-f format_file] [-e err_file]    [-F f

使用用于SQL Server的IIS虚拟目录管理实用工具

iis|server|虚拟目录 在使用 HTTP 访问 Microsoft? SQL Server? 2000 数据库之前,必须安装适当的虚拟目录.在运行 Microsoft Internet 信息服务 (IIS) 的计算机上,使用用于 SQL Server 的 IIS 虚拟目录管理实用工具(在"SQL Server 工具"程序组中单击"在 IIS 中配置 SQL XML 支持")定义并注册新的虚拟目录,即所谓的虚拟根.该实用工具指示 IIS 在新的虚拟目录和 Mi

使用用于 SQL Server 的 IIS 虚拟目录管理实用工具

iis|server|虚拟目录 使用用于 SQL Server 的 IIS 虚拟目录管理实用工具在使用 HTTP 访问 Microsoft? SQL Server? 2000 数据库之前,必须安装适当的虚拟目录.在运行 Microsoft Internet 信息服务 (IIS) 的 计算机上,使用用于 SQL Server 的 IIS 虚拟目录管理实用工具(在"SQL Server 工具"程序组中单击"在 IIS 中配置 SQL XML 支持")定义 并注册新的虚拟

Pig系统分析(7) Pig实用工具类

Explain Explain是Pig提供的调试工具,使用explain可以输出Pig Lation的执行计划.值得一提的是,explain支持-dot选项,将执行计划以DOT格式输出, (DOT是一种图形描述语言,请参考http://zh.wikipedia.org/zh/DOT%E8%AF%AD%E8%A8%80) 代码实现详见org.apache.pig.impl.plan.DotPlanDumper,这部分实现为我们设计执行计划可视化提供了参考. 下图部分截取了使用Graphviz打开物

Collections类中的实用工具

Collections类中含有其他大量有用的实用工具(如表二): enumeration(Collection) 为自变量产生原始风格的Enumeration(枚举) max(Collection),min(Collection) 在自变量中用集合内对象的自然比较方法产生最大或最小元素 max(Collection,Comparator),min(Collection,Comparator) 在集合内用比较器产生最大或最小元素 nCopies(int n, Object o) 返回长度为n的一个