¿Cuál es la diferencia entre sdelete -c y -z?

24

Aprendí de este artículo a usar sdelete como un paso para reducir el archivo VDI:

sdelete -c c:

Pero, ¿qué significa el -c('Espacio libre limpio' como se describe en su texto de ayuda)? ¿No escribe espacio libre con cero? ¿Y qué pasa con -z(cero espacio libre)? ¿Cuál es la diferencia entre sdelete -c y -z?

Editar

Intenté el paso en el artículo mencionado anteriormente, pero no pude reducir el tamaño del .vidarchivo. Luego he seguido este post superusuario , y ha cambiado la opción -ca -z, y logré.

Por lo tanto, parece -zescribir ceros en el espacio libre y -cescribe algo más (posiblemente bits aleatorios).

Llama congelada
fuente

Respuestas:

21

Creo que este es un error común. Quizás la opción -z no estaba disponible en versiones anteriores. SDelete 1.61 dice

-z         Zero free space (good for virtual disk optimization)

Tenga en cuenta que al hacerlo, primero expandirá su disco duro al tamaño completo. Solo en el proceso de reducción de VMWare volverá a ser más pequeño.

Una prueba rápida en mi máquina:

-z took 1:01 minutes
-c took 2:11 minutes

Lo que indica que -z solo escribe ceros simples, mientras que -c es el estándar militar que borra DoD 5220.22-M como está escrito en el sitio web SDelete .

Thomas Weller
fuente
No hinchará el archivo si el software es algo inteligente. La mayoría de las aplicaciones de virtualización son. Acabo de probarlo en VMware Fusion, no aumentó el tamaño del archivo en absoluto.
Daniel B
1
Lamentablemente, VMWare Workstation Pro 12 expande el disco a tamaño completo.
Lebenita
-c y -z se anunciaron en 1.51 exactamente al revés (si eso fue solo un error en la descripción o las funciones también se invirtieron, no lo sé). La forma 1.61 tiene mucho más sentido, obviamente.
Lebenita
Acabo de comprobar con Windows 2012 y un nuevo archivo VHDX de 20 GB. La opción -z fue muy rápida (segundos) y el archivo de disco VHDX no aumentó de tamaño. La opción -c se está ejecutando mucho más lentamente y el VHDX está aumentando de tamaño. Entonces, -z es la opción preferida para un llamado disco duro virtual delgado / expansivo, especialmente si ha comprometido demasiado espacio en el disco. Pero no es tan seguro como la opción -c
munrobasher
1
Acabo de comprobar la última versión (2.0) y hay dos diferencias obvias. En primer lugar, hay una versión de 32 bits y 64 bits (sdelete.exe y sdelete64.exe). Pero también hay una sutil diferencia en el comando -c que preocupa. En v1.61, la opción -c decía "Limpiar espacio libre" pero en v2.0 dice "Poner a cero espacio libre". La opción -z también dice cero. ¿Ha perdido la opción de datos aleatorios?
munrobasher
5

Esto debería haberse publicado más apropiadamente como un comentario a la respuesta de Thomas, pero como todavía no puedo hacerlo, lo publico aquí.

Mezclar las opciones "-z" y "-c" es probablemente un "error común", porque SDelete ha cambiado el comportamiento de dichas opciones a lo largo de los años. Mirando las referencias proporcionadas a continuación, parece que SDelete primero tenía una opción "-z" que hizo la "limpieza estándar militar", luego agregó una opción "-c" para poner a cero el espacio libre, y luego entre v1.51 y v1. 61 cambió ese comportamiento al actual.

Referencias: Foro sysinternals.com y antigua página de inicio de SDelete en Microsoft TechNet a través de archive.org.

LN2
fuente
Esta no es una respuesta a la pregunta original. Para criticar o solicitar una aclaración de un autor, deje un comentario debajo de su publicación; siempre puede comentar sus propias publicaciones y, una vez que tenga suficiente reputación , podrá comentar cualquier publicación .
DavidPostill
44
Esta no es una respuesta a la pregunta original. Vuelve a leer la primera línea de la publicación. Si hay un mejor procedimiento para agregar información útil y / o pertinente a una respuesta ya existente para alguien que acaba de registrarse en el servicio, no dude en informarme.
LN2
"Si hay un mejor procedimiento para agregar información útil y / o pertinente a una respuesta ya existente para alguien que acaba de registrarse en el servicio, siéntase libre de iluminarme", no lo hay, lea los enlaces que proporcioné.
DavidPostill
Es interesante observar en 1.61, independientemente del interruptor que use, siempre dice "Poner a cero el espacio libre" (y en 1.51 siempre dice "Limpiar el espacio libre"). Eso es un poco engañoso, por un tiempo me hizo desconfiar de que "-c" era realmente "limpio" y no "cero".
rkagerer
5

Documentación actual (y versión del programa 2.01):

  • -c: Limpie el espacio libre. Especifique una cantidad de espacio de opción para dejar libre para que lo use un sistema en ejecución.
  • -z: Cero espacio libre (bueno para la optimización del disco virtual).

Pero en versiones anteriores se invirtió:

  • -c: Cero espacio libre (bueno para la optimización del disco virtual).
  • -z: Limpie el espacio libre.

ingrese la descripción de la imagen aquí

¿Pero qué hacen ellos?

Clean crea el archivo más grande que puede y lo llena con datos aleatorios y luego lo llena con ceros. Esto es lo que la mayoría de la gente piensa como limpiar , y es excesivo.

La desventaja es que si está utilizando un disco virtual, o dentro de una máquina virtual, o ejecutándolo en un espacio de almacenamiento: el sistema de almacenamiento subyacente se verá obligado a asignar recursos para mantener sus datos aleatorios y luego mantener cero. Esperemos que el sistema de almacenamiento subyacente se dé cuenta de que todo ese espacio que se acaba de asignar a su unidad puede recuperarse porque todos esos sectores simplemente contienen ceros.

-z Cero: simplemente escribe ceros en todos los sectores. Esta es la opción que desea, por muchas razones:

  • limpiar con datos aleatorios es excesivo (leer datos no es prácticamente posible; es decir, un bit a la vez aunque un microscopio no es factible)
  • algunos SSD pueden detectar que está escribiendo cero en un sector, y pueden usarlo para marcar el sector como libre (similar a un TRIM)
  • La mayoría de los sistemas de almacenamiento virtual (VMWare, Hyper-V, Discos virtuales de Windows, Espacios de almacenamiento) se dan cuenta de que está escribiendo un sector completo de ceros y aprovechan la oportunidad para recuperar espacio en el archivo de almacenamiento subyacente
  • Los SSD no sabrán que su objetivo final es esencialmente un TRIM glorificado, y (como los discos virtuales) se verán obligados a llenar sectores que ya contenían ceros, con no ceros, solo para que lo vuelva a llenar con ceros. Eso es terrible para tus SSD.

Fuente : monté un disco duro virtual y observé las operaciones de E / S que se llevaron a cabo en ambos modos.

tl; dr: Use -z Zero. Es más rápido, mejor, más seguro.

Ian Boyd
fuente