编辑

编辑

我从中学到本文使用删除缩小VDI文件的步骤:

sdelete -c c:

但是-c帮助文本中描述的“清除可用空间”是什么意思?它不是用零来表示可用空间吗?那么-z“零可用空间”又是什么意思呢?sdelete -c 和 -z 有什么不同?

编辑

我尝试了文章之前提到过,但未能减小文件大小.vid。然后我按照这个超级用户帖子-c,并将选项改为-z,就成功了。

因此,它似乎-z将零写入可用空间,并-c写入其他内容(可能是随机位)。

答案1

我认为这是一个常见的错误。也许 -z 选项在早期版本中不可用。SDelete 1.61 说

-z         Zero free space (good for virtual disk optimization)

注意,这样做会先将硬盘扩展到最大容量。只有在 VMWare 进行缩减的过程中,硬盘才会再次变小。

在我的机器上进行快速测试:

-z took 1:01 minutes
-c took 2:11 minutes

这表明 -z 只写入简单的零,而 -c 是军用标准擦拭DoD 5220.22-M 上写明SDelete 网站

答案2

当前文档(和程序版本 2.01):

  • -c清理可用空间。指定可供正在运行的系统使用的可用空间量。
  • -z零可用空间(有利于虚拟磁盘优化)。

但在旧版本则相反:

  • -c零可用空间(有利于虚拟磁盘优化)。
  • -z清理空闲空间。

在此处输入图片描述

但是他们做什么呢?

干净的创建最大的文件,并填充随机的数据,然后用零填充。大多数人认为这是擦拭,这太过分了。

缺点是,如果您使用的是虚拟磁盘,或者在虚拟机中,或者在存储空间上运行它:底层存储系统将被迫分配资源来保存随机数据,然后保存零。希望底层存储系统能够意识到刚刚分配给驱动器的所有空间都可以回收,因为所有这些扇区都只包含零。

-z零:简单地将所有扇区写入零。这是您需要的选项,原因如下:

  • 使用随机数据擦除是过度的(读取数据实际上是不可能的;也就是说,虽然使用显微镜一次读取一位数据是不可行的)
  • 有些 SSD 可以检测到你正在写入到一个扇区,并可以使用它来将该扇区标记为空闲(类似于 TRIM)
  • 大多数虚拟存储系统(VMWare、Hyper-V、Windows 虚拟磁盘、存储空间)都能意识到你正在写入整个零扇区,并借此机会回收底层存储文件中的空间
  • SSD 不会知道您的最终目标本质上是美化的 TRIM,并且(像虚拟磁盘一样)会被迫用非零填充已经包含零的扇区,而您只能再次用零填充。这对您的 SSD 来说很糟糕。

来源:安装一个虚拟硬盘,并观察 sdelete 在两种模式下进行的 I/O 操作。

tl;dr:使用 -z Zero。它更快、更好、更安全。

答案3

这应该更适合作为对托马斯的回答的评论发布,但由于我暂时不能这样做,所以我将其发布在这里。

混淆“-z”和“-c”选项可能是一个“常见错误”,因为 SDelete 多年来一直在改变这些选项的行为。查看下面提供的参考资料,似乎 SDelete 首先有一个“-z”选项,用于执行“军用标准擦除”,然后添加了一个“-c”选项用于将可用空间清零,然后在 v1.51 和 v1.61 之间的某个版本中将该行为切换为当前行为。

参考:sysinternals.com 论坛Microsoft TechNet 上的旧 SDelete 主页通过archive.org。

答案4

我无法评论,积分不够,请对帖子和未回答的旧话题表示歉意。

我相信-c它还会清理文件目录,使得已删除的文件名不可见,并且会清理完全存储在文件目录中的小于 1kB 的已删除文件(以及尾随块中的数据),同时-z仅清理文件存储块,而不提供完全的隐私。

至少这是微软网站上的描述,其中详细介绍了如何存储数据。

-z每分钟执行7 GB,-c每分钟执行3 GB(USB3.0)。

相关内容