如何在
Windows上填充虚拟磁盘的可用空间以获得更好的压缩?
我想要一个简单的开源工具(或至少免费).它应该写一个尽可能大的文件满0并随后擦除它.只有一次传递(这不是出于安全原因,而是为了压缩,我们正在备份虚拟机).
应该从内部窗口而不是从磁盘运行.
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:有一个2.0版本的sdelete和sdelete64.归零时,它们似乎是错误的.它会在很长一段时间内停留在100%.有些人报告的时间长了10到40倍.旧版本1.61没有此问题.见https://social.technet.microsoft.com/Forums/en-US/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等其他堆栈上,需要单独回答.
在Windows上使用sysinternals工具
sdelete将所有空白空间清零.你想要的命令看起来像这个sdelete -z c:.
Usage: sdelete [-p passes] [-s] [-q] ... sdelete [-p passes] [-z|-c] [drive letter] ... -a Remove Read-Only attribute. -c Clean free space. -p passes Specifies number of overwrite passes (default is 1). -q Don't print errors (Quiet). -s or -r Recurse subdirectories. -z Zero free space (good for virtual disk optimization).
对于Linux,我建议你使用zerofree.