如何将Windows上虚拟磁盘的可用空间归零以更好地压缩?
我想要一个简单的开源工具(或至少免费)。它可能应该写一个尽可能大的文件,0
然后将其擦除。仅一次通过(这不是出于安全原因,而是出于压缩目的,我们正在备份虚拟机)。
应该从Windows内部运行,而不是从磁盘运行。
在Linux上,我这样做是(作为用户):
cd
mkdir wipe
sudo sfill -f -l -l -z ./wipe/
编辑1:我决定使用已接受答案中的sdelete。我看了一下sdelete的帮助:
C:\WINDOWS\system32>sdelete /?
SDelete - Secure Delete v1.51
Copyright (C) 1999-2005 Mark Russinovich
Sysinternals - www.sysinternals.com
usage: sdelete [-p passes] [-s] [-q] <file or directory>
sdelete [-p passes] [-z|-c] [drive letter]
-c Zero free space (good for virtual disk optimization)
-p passes Specifies number of overwrite passes (default is 1)
-q Don't print errors (Quiet)
-s Recurse subdirectories
-z Clean free space
这是旧版本。我从第二次调用中使用了-c开关,这非常快(语法仅对V1.6之前的旧版本有效):
c:\>sdelete -c c: (OUTDATED!)
我有印象,这就是我想要的。sdelete工具易于使用且易于获取。
编辑2:正如scottbb在下面的回答中所指出的,2011年9月对该工具(版本1.6)进行了更改。-c和-z选项的含义已更改。从1.6开始的正确用法是
c:\>sdelete -z c:
编辑3:有sdelete和sdelete64的2.0版本。归零时,它们似乎有故障。它将在很长一段时间内被卡在100%的位置。有些人报告的时间长了10-40倍。较旧的版本1.61不会出现此问题。请参阅https://social.technet.microsoft.com/Forums/zh-CN/2ffb2539-34ba-4378-aa8a-941d243f117e/sdelete-hangs-at-100?forum=miscutils
编辑4:现在存在动态分配的虚拟磁盘空间的问题。如果您有一个100GB的磁盘未满,并且在主机上仅使用了30GB,则零填充不会显着增加磁盘的大小,因为这与动态分配的目的相矛盾。对于Oracle VM VirtualBox
https://superuser.com/q/907196/44402,有一个答案-但在其他堆栈(如VMWare,Xen,XenServer等)上,需要单独回答。
sdelete
是适合该工作的工具,但是2011年9月对该工具(1.6版)进行了更改,因此上述答案不正确。在-c
和-z
选项已更改的含义。现在正确的用法是sdelete -z c:\