¿Cómo llenar a cero el espacio libre de un disco virtual en Windows para una mejor compresión?
Me gustaría una herramienta de código abierto simple (o al menos gratis) para eso. Probablemente debería escribir un archivo lo más grande posible 0
y luego borrarlo. Solo una pasada (esto no es por razones de seguridad, sino por compresión, estamos haciendo una copia de seguridad de las máquinas virtuales).
Debe ejecutarse desde el interior de Windows y no desde un disco.
En Linux lo hago así (como usuario):
cd
mkdir wipe
sudo sfill -f -l -l -z ./wipe/
Edición 1: decidí usar sdelete de la respuesta aceptada. Eché un vistazo a la ayuda del 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
Esta es una versión antigua. Usé el modificador -c de la segunda invocación y esto fue bastante rápido (la sintaxis solo es válida para versiones anteriores a V1.6):
c:\>sdelete -c c: (OUTDATED!)
Tengo la impresión de que esto hace lo que quiero. La herramienta sdelete es fácil de usar y fácil de obtener.
Edición 2: Como señaló scottbb en su respuesta a continuación, hubo un cambio en la herramienta en septiembre de 2011 (versión 1.6) Las opciones -c y -z han cambiado de significado. El uso correcto desde 1.6 en adelante es
c:\>sdelete -z c:
Edición 3: hay una versión 2.0 de sdelete y sdelete64. Parecen tener errores al poner a cero. Parecerá estar atascado al 100% durante tiempos extremadamente largos. Algunas personas han informado de 10 a 40 veces más. La versión anterior 1.61 no tiene este problema. Ver https://social.technet.microsoft.com/Forums/en-US/2ffb2539-34ba-4378-aa8a-941d243f117e/sdelete-hangs-at-100?forum=miscutils
Edición 4: ahora está el problema del espacio de disco virtual asignado dinámicamente . Si tiene un disco de 100GB que no está lleno y usa solo 30GB en el host, el relleno cero no debería aumentar dramáticamente el tamaño del disco porque eso contradice el propósito de la asignación dinámica . Hay una respuesta para Oracle VM VirtualBox
https://superuser.com/q/907196/44402 , pero en otras pilas como VMWare, Xen, XenServer, etc., esto debe responderse por separado.
sdelete
es la herramienta adecuada para el trabajo, pero un cambio de septiembre de 2011 a la herramienta (versión 1.6) hace que las respuestas anteriores sean incorrectas. Las opciones-c
y-z
han cambiado de significado. El uso correcto ahora essdelete -z c:\
Respuestas:
En Windows, use la herramienta sysinternals sdelete para poner a cero todo el espacio vacío. El comando que desea se vería así
sdelete -z c:
.Para Linux te sugiero que uses zerofree .
fuente
Windows ya tiene una herramienta de línea de comando integrada que hace esto: CIPHER. Ver su / W opción.
Entonces, el comando completo sería: cipher / w: c: (reemplace c: con la letra de la unidad real)
(escribe ceros en el espacio no utilizado, luego 0xff, por lo que debe mirarlo y detenerlo con ctrl-c cuando comienza a escribir 0xff; no es ideal, pero es gratuito y ya está disponible en Windows desde XP al menos)
fuente
SDelete no pondrá a cero el espacio para la compactación de un disco virtual. SDelete comienza poniendo a cero el espacio libre, pero luego lo llena con 0xff y luego bytes aleatorios Consulte Cómo preparar un archivo de disco duro virtual de Virtual Server 2005 para enviarlo a los Servicios de soporte técnico de Microsoft Para obtener información sobre cómo configurar un VHD para compactación
Precompact.exe puede ser difícil de encontrar por alguna razón. Encontré una copia descargable por separado aquí . Sin embargo, si tiene una PC virtual con Windows, también puede obtenerla desde% programfiles (x86)% \ Windows Virtual PC \ Integration Components \ Precompact.iso
fuente
trim
(a partir de Win7 e Hyper-V 2012), no hay necesidad de cero antes de la compactación. La utilidad PreCompact solo puso a cero partes del disco con archivos eliminados, la parte que nunca se había utilizado no se tocó. El uso de algo asísdelete
llenaría el disco dinámico a un tamaño estático, que luego podría compactarse nuevamente solo al tamaño realmente utilizado.fsutil
no es de código abierto, pero se envía con Windows y, por lo tanto, no cuesta nada extra. Lo usé para poner a cero el espacio libre en una unidad WD 250 GB 7200 RPM vacía (F:
). Esto es lo que ejecuté desde la línea de comando:Que mostró este informe:
Usé
Total # of avail free bytes
en los siguientes comandos:Tomó alrededor de 4 horas escribir 250 GB de ceros.
fuente
Yo también había estado buscando una forma de usar Cipher para escribir solo 0x00 y luego salir al comenzar a escribir 0xFF en el espacio libre. Esto permitirá que se comprima el máximo espacio libre. Se me ocurrió el siguiente trabajo básico de PowerShell
reemplace d: \ con la unidad requerida
Saludos Simon
fuente
Si está utilizando VMware, una forma mucho mejor es utilizar las herramientas integradas en VMware para recuperar cualquier espacio no utilizado en la unidad virtual.
Utilicé esto para reducir el tamaño del disco virtual de 28 gigabytes a 13 gigabytes. Su experiencia puede ser diferente.
Cuando intenté usar
sdelete -z c:
, en realidad aumentó el tamaño de las unidades virtuales a 30 gigabytes, que era su tamaño máximo.Consulte el sitio web de VMware y Compacte un disco duro virtual , que se encuentra debajo
Using VMware Workstation > Configuring and Managing Devices > Configuring and Maintaining Virtual Hard Disks
.Actualizar
A veces, las herramientas GUI no son tan confiables como las herramientas de línea de comandos. Me he encontrado con problemas donde las herramientas de la GUI fallan, pero las herramientas de línea de comandos funcionan bien. Aquí están las opciones para
VMware Desktop 10
:Aquí hay un ejemplo de reducción de un disco. Esta línea de comando funcionó, a pesar de que el mismo comando de la GUI falló:
El mensaje de error que comienza
VizDiskLib
es nuevo en VMware Desktop 10 y puede ignorarse de forma segura.fuente
Google-up Eraser 5.8.8 32-bit ¡ Funciona bien incluso en Windows XP SP3 !
fuente
Mit,
Descubrí que el script de PowerShell de Simon hizo exactamente lo que necesita, sin los problemas de versiones de sdelete. (cambia haciendo cosas diferentes en diferentes versiones)
Tenía un problema, ese cifrado seguía funcionando, pero lo solucioné.
Modifiqué aún más el script para limpiar la carpeta temporal:
Deberá reemplazar F: \ con su letra de unidad en ambos lugares.
fuente
¿Por qué las herramientas de terceros, cuando Windows ya incluye todo lo que necesitará?
1)
format X: /fs:XXXX /p:#
, dondeX
está la letra de unidad;XXXX
es el sistema de archivos, Yeither y#
es el número de pases;2)
clean
comando diskpart : http://technet.microsoft.com/library/cc766465.aspx , http://support.microsoft.com/kb/300415 ;Por cierto, tampoco necesita más que un solo pase: de lo contrario, un reclamo es información desactualizada para estrategias de escritura / escritura de disco obsoletas, personas que empujan productos, impulsadas por paranoia o bs transmitidas como "asesoramiento experto".
Editar: nvm, se perdió la parte del espacio libre ...
fuente