如何在 Windows 上將虛擬磁碟的可用空間歸零以實現更好的壓縮?
如何在 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:**有一個 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:
。用法:sdelete [-p pass] [-s] [-q] ... sdelete [-p 通過] [-z|-c] [驅動器號] ... -a 刪除只讀屬性。 -c 清理可用空間。 -p pass 指定覆蓋次數(預設為 1)。 -q 不列印錯誤(安靜)。 -s 或 -r 遞歸子目錄。 -z 零可用空間(有利於虛擬磁碟優化)。
對於 Linux,我建議您使用zerofree。
Windows 已經有一個內置的命令行工具可以執行此操作:CIPHER。查看它的 /W 選項。
所以完整的命令是:cipher /w:c: (將*c:*替換為實際的驅動器號)
(它將零寫入未使用的空間,然後是 0xff,所以當它開始寫入 0xff 時,您必須觀察它並使用 ctrl-c 停止它 - 不理想,但它是免費的,並且至少從 XP 開始在 Windows 中已經可用)