web-dev-qa-db-fra.com

Quelle est la différence entre sdelete -c et -z?

J'ai appris de cet article à utiliser sdelete comme étape pour réduire le fichier VDI:

sdelete -c c:

Mais que signifie le -c ("Espace libre" décrit dans son aide)? N'écrit-il pas d'espace libre avec zéro? Et que dire de -z (zéro espace libre)? Quelle est la différence entre sdelete -c et -z?

Modifier

J'ai essayé l'étape de l'article mentionné précédemment, mais je n'ai pas réussi à réduire la taille du fichier .vid. Ensuite, j'ai suivi cet article de superutilisateur et modifié l'option -c en -z, et j'ai réussi.

Il semble donc que -z écrit des zéros pour libérer de l'espace, et -c écrit autre chose (éventuellement des bits aléatoires).

23
Frozen Flame

Je pense que c'est une erreur commune. Peut-être que l'option -z n'était pas disponible dans les versions précédentes. SDelete 1.61 dit

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

Notez que cela étendra d'abord votre disque dur à la taille complète. Ce n’est que lors du processus de contraction de VMWare qu’il redeviendra plus petit.

Un test rapide sur ma machine:

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

Ce qui indique que -z n’écrit que des zéros simples alors que -c est l’effacement standard militaire DoD 5220.22-M tel qu’il est écrit sur le SDelete site web .

20
Thomas Weller

Documentation actuelle (et version du programme 2.01):

  • -c: Nettoyer l'espace libre. Spécifiez une quantité d'espace à laisser libre pour une utilisation par un système en cours d'exécution.
  • -z: Zéro espace libre (bon pour l'optimisation de disque virtuel).

Mais dans , les versions précédentes étaient inversées:

  • -c: Zéro espace libre (bon pour l'optimisation de disque virtuel).
  • -z: Nettoyer l'espace libre.

enter image description here

Mais que font ils?

Nettoyer crée le fichier le plus volumineux possible, le remplit de données aléatoires , puis le remplit de zéros. C’est ce que la plupart des gens considèrent comme un effacement , et c’est exagéré.

L'inconvénient est que si vous utilisez un disque virtuel, ou dans une machine virtuelle, ou si vous l'exécutez sur un espace de stockage: le système de stockage sous-jacent sera obligé d'allouer des ressources pour stocker des données aléatoires, puis à zéro. Espérons que le système de stockage sous-jacent se rendra compte que tout l’espace qui vient d’être alloué à votre lecteur peut être récupéré, car tous ces secteurs contiennent simplement des zéros.

- z Zero: Écrit simplement des zéros dans tous les secteurs. C'est l'option que vous voulez, pour plusieurs raisons:

  • l’effacement avec des données aléatoires est excessif (la lecture des données n’est pas pratiquement possible; c’est-à-dire un bit à la fois, bien qu’un microscope ne soit pas réalisable)
  • certains disques SSD peuvent détecter que vous écrivez zéro dans un secteur et l'utiliser pour marquer le secteur comme libre (semblable à une TRIM)
  • la plupart des systèmes de stockage virtuels (VMWare, Hyper-V, disques virtuels Windows, espaces de stockage) réalisent que vous écrivez un secteur entier de zéros et saisissez l'occasion pour récupérer de l'espace dans le fichier de stockage sous-jacent
  • Les disques SSD ne sauront pas que votre objectif ultime est essentiellement une TRIM glorifiée et (comme les disques virtuels) être obligés de remplir des secteurs contenant déjà des zéros, avec des non-zéros, pour que vous les remplissiez à nouveau. C'est terrible pour vos SSD.

Source : monté un disque dur virtuel et regardé les opérations d'E/S que sdelete a prises dans les deux modes.

tl; dr: utilisez -z zéro. C'est plus rapide, mieux, plus sûr.

5
Ian Boyd

Cela aurait dû être posté de manière plus appropriée en tant que commentaire sur la réponse de Thomas, mais comme je ne peux pas le faire pour le moment, je le publie ici.

Mélanger les options "-z" et "-c" est probablement une "erreur commune", car SDelete a modifié le comportement de ces options au fil des ans. En regardant les références fournies ci-dessous, il semble que SDelete ait d’abord une option "-z" qui effectue le "balayage standard militaire", puis une option "-c" pour la réduction à zéro de l’espace libre, puis quelque part entre v1.51 et v1. 61 a basculé ce comportement vers le comportement actuel.

Références: sysinternals.com Forum et ancienne page d’accueil de SDelete sur Microsoft TechNet via archive.org.

5
LN2