sdelete -c和-z有什么区别?


24

我从本文中学到了使用sdelete作为收缩VDI文件的步骤:

sdelete -c c:

但是-c(帮助文本中描述的“清洁自由空间”)是什么意思?它不是写零的可用空间吗?那-z(零自由空间)呢?sdelete -c和-z有什么区别?

编辑

我尝试了前面提到的文章中的步骤,但是未能减小.vid文件的大小。然后,我关注了此超级用户帖子,并将选项更改-c-z,并成功。

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

Answers:


21

我认为这是一个常见错误。也许-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是擦拭SDelete网站上写的DoD 5220.22-M 的军事标准


如果软件有些智能,它不会膨胀文件。大多数虚拟化应用程序都是。我只是在VMware Fusion中尝试过,它根本没有增加文件大小。
丹尼尔B

1
不幸的是,VMWare Workstation Pro 12确实将磁盘扩展到了完整大小。
Lebenita 2015年

-c和-z在1.51中完全相反地宣告(无论是描述中的错误还是功能不正确,我都不知道)。很明显,1.61方式更有意义。
Lebenita

刚刚在Windows 2012和新的20GB VHDX文件中进行了检查。-z选项非常快(秒),并且VHDX磁盘文件的大小没有增加。-c选项运行速度慢得多,VHDX的大小也在增加。因此,-z是所谓的精简/扩展虚拟硬盘的首选选项,尤其是在您已用完承诺的磁盘空间的情况下。但这不如-c选项安全
munrobasher 2015年

1
刚检查了最新版本(2.0),有两个明显的区别。首先,有32位和64位版本(sdelete.exe和sdelete64.exe)。但是,-c命令中还有一个细微的差异,这令人担忧。在v1.61中,-c选项表示“清理可用空间”,而在v2.0中,其表示“清零可用空间”。-z选项还表示清零。它丢失了随机数据选项吗?
munrobasher

5

应该将它更恰当地发布为对Thomas的回答的评论,但是由于我还不能这样做,所以我将其发布在这里。

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

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


不是原始问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论-您可以随时对自己的帖子发表评论,一旦您拥有足够的声誉,就可以在任何帖子中发表评论
DavidPostill

4
不是原始问题的答案。不过,请重读帖子的第一行。如果有更好的过程可以为刚刚注册该服务的某人向现有答案中添加有用和/或相关的信息,请随时给我启发。
LN2 2014年

“如果有更好的程序为刚注册该服务的人添加有用的和/或相关的信息到已经存在的答案中,请随时给我启发”-没有,请阅读我提供的链接。
DavidPostill

有趣的是,在1.61中无论使用哪个开关,它总是显示“清零可用空间”(而在1.51中,它始终显示“清净可用空间”)。这有点误导,有一段时间使我不相信“ -c”实际上是“干净”而不是“零”行为。
rkagerer '16

5

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

  • -c清洁可用空间。指定一个可选的空间量,以供运行中的系统使用。
  • -z零可用空间(适用于虚拟磁盘优化)。

但是在旧版本中,它被逆转了:

  • -c零可用空间(适用于虚拟磁盘优化)。
  • -z清洁可用空间。

在此处输入图片说明

但是他们怎么办?

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

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

-z零:仅将零写入所有扇区。由于多种原因,这是您想要的选项:

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

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

tl; dr:使用-z零。它更快,更好,更安全。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.