Was ist der Unterschied zwischen sdelete -c und -z?

24

Ich habe aus diesem Artikel gelernt , sdelete als Schritt zum Verkleinern von VDI-Dateien zu verwenden:

sdelete -c c:

Aber was bedeutet -c"Freier Speicherplatz bereinigen" (wie im Hilfetext beschrieben)? Schreibt es keinen freien Speicherplatz mit Null? Und was ist mit -z(kein freier Speicherplatz)? Was ist der Unterschied zwischen sdelete -c und -z?

Bearbeiten

Ich habe den in dem Artikel erwähnten Schritt ausprobiert , konnte aber die Größe der .vidDatei nicht reduzieren . Dann folgte ich diesem Superuser-Beitrag und änderte die Option -czu -zund es gelang mir .

Es scheint also -zNullen zu schreiben, um Speicherplatz freizugeben, und -cetwas anderes zu schreiben (möglicherweise zufällige Bits).

Gefrorene Flamme
quelle

Antworten:

21

Ich denke, das ist ein häufiger Fehler. Möglicherweise war die Option -z in früheren Versionen nicht verfügbar. SDelete 1.61 sagt

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

Beachten Sie, dass dadurch Ihre Festplatte zunächst auf die volle Größe erweitert wird. Erst beim Verkleinern durch VMWare wird es wieder kleiner.

Ein kurzer Test auf meiner Maschine:

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

Was darauf hinweist, dass -z nur einfache Nullen schreibt, wohingegen -c der militärische Standard ist, der DoD 5220.22-M wie auf der SDelete-Website geschrieben löscht .

Thomas Weller
quelle
Es wird die Datei nicht aufblähen, wenn die Software etwas intelligent ist. Die meisten Virtualisierungsanwendungen sind. Ich habe es gerade in VMware Fusion ausprobiert, es hat die Dateigröße überhaupt nicht erhöht.
Daniel B
1
VMWare Workstation Pro 12 erweitert die Festplatte leider auf die volle Größe.
Lebenita
-c und -z wurden in 1.51 genau umgekehrt beworben (ob das nur ein Fehler in der Beschreibung war oder die Funktionen auch vertauscht wurden, weiß ich nicht). Der Weg von 1,61 macht natürlich viel mehr Sinn.
Lebenita
Ich habe es gerade mit Windows 2012 und einer neuen 20-GB-VHDX-Datei überprüft. Die Option -z war sehr schnell (Sekunden) und die VHDX-Festplattendatei wurde nicht größer. Die Option -c wird viel langsamer ausgeführt und der VHDX wird größer. Daher ist -z die bevorzugte Option für eine so genannte virtuelle Festplatte mit geringer / erweiterter Speicherkapazität, insbesondere wenn Sie zu viel Speicherplatz belegt haben. Aber es ist nicht so sicher wie die Option -c
Munrobasher
1
Habe gerade die neueste Version (2.0) überprüft und es gibt zwei offensichtliche Unterschiede. Erstens gibt es eine 32-Bit- und eine 64-Bit-Version (sdelete.exe & sdelete64.exe). Es gibt aber auch einen subtilen Unterschied im Befehl -c, der besorgt ist. In v1.61 lautete die Option -c "Freien Speicherplatz bereinigen", in v2.0 jedoch "Freien Speicherplatz auf Null setzen". Die Option -z zeigt auch Nullen an. Hat es die Zufallsdatenoption verloren?
Munrobasher
5

Dies hätte besser als Kommentar zu Thomas 'Antwort gepostet werden sollen, aber da ich das noch nicht kann, poste ich es hier.

Das Vertauschen der Optionen "-z" und "-c" ist wahrscheinlich ein "häufiger Fehler", da SDelete das Verhalten dieser Optionen im Laufe der Jahre geändert hat. Wenn man sich die unten angegebenen Referenzen ansieht, scheint es, dass SDelete zuerst eine Option "-z" hatte, die das "Löschen nach Militärstandard" durchführte, dann eine Option "-c" hinzufügte, um den freien Speicherplatz auf Null zu setzen, und dann irgendwo zwischen v1.51 und v1. 61 hat dieses Verhalten auf das aktuelle umgestellt.

Referenzen: sysinternals.com-Forum und alte SDelete-Homepage im Microsoft TechNet über archive.org.

LN2
quelle
Dies ist keine Antwort auf die ursprüngliche Frage. Wenn Sie einen Autor kritisieren oder um Klärung bitten möchten, hinterlassen Sie einen Kommentar unter seinem Beitrag. Sie können jederzeit Ihre eigenen Beiträge kommentieren. Wenn Sie über eine ausreichende Reputation verfügen, können Sie jeden Beitrag kommentieren .
DavidPostill
4
Dies ist keine Antwort auf die ursprüngliche Frage. Bitte lesen Sie die erste Zeile des Beitrags noch einmal. Wenn es ein besseres Verfahren gibt, um einer bereits vorhandenen Antwort nützliche und / oder sachdienliche Informationen für jemanden hinzuzufügen, der sich gerade für den Dienst angemeldet hat, können Sie mich gerne aufklären.
LN2
"Wenn es ein besseres Verfahren gibt, um einer bereits vorhandenen Antwort nützliche und / oder relevante Informationen für jemanden hinzuzufügen, der sich gerade für den Dienst angemeldet hat, können Sie mich aufklären."
DavidPostill
Es ist interessant, in 1.61 zu vermerken, unabhängig davon, welchen Schalter Sie verwenden, immer "Freien Speicherplatz auf Null setzen" (und in 1.51 immer "Freien Speicherplatz reinigen"). Das ist ein bisschen irreführend, für eine Weile hat es mich misstrauen lassen, dass "-c" tatsächlich "sauber" und nicht "null" war.
Rkagerer
5

Aktuelle Dokumentation (und Programmversion 2.01):

  • -c: Reinigen Sie den freien Speicherplatz. Geben Sie eine optionale Menge an Speicherplatz an, die von einem laufenden System verwendet werden kann.
  • -z: Kein freier Speicherplatz (gut für die Optimierung der virtuellen Festplatte).

In älteren Versionen war es jedoch umgekehrt:

  • -c: Kein freier Speicherplatz (gut für die Optimierung der virtuellen Festplatte).
  • -z: Reinigen Sie den freien Speicherplatz.

Bildbeschreibung hier eingeben

Aber was machen sie?

Bereinigen erstellt die größte Datei, die es kann, und füllt sie mit zufälligen Daten und füllt sie dann mit Nullen. Dies ist, was die meisten Leute als Abwischen betrachten , und es ist übertrieben.

Der Nachteil ist, dass, wenn Sie eine virtuelle Festplatte oder eine virtuelle Maschine verwenden oder diese auf einem Speicherplatz ausführen, das zugrunde liegende Speichersystem gezwungen ist, Ressourcen zuzuweisen, um Ihre zufälligen Daten zu speichern, und dann Null. Dann wird das zugrunde liegende Speichersystem hoffentlich erkennen, dass der gesamte Speicherplatz, der gerade Ihrem Laufwerk zugewiesen wurde, zurückgefordert werden kann, da alle diese Sektoren einfach Nullen enthalten.

-z Null: Schreibt einfach Nullen in alle Sektoren. Dies ist die Option, die Sie aus vielen Gründen wünschen:

  • Das Löschen mit zufälligen Daten ist ein Overkill (das Lesen von Daten ist praktisch nicht möglich, dh ein Bit nach dem anderen, obwohl ein Mikroskop nicht möglich ist).
  • Einige SSDs können erkennen, dass Sie eine Null in einen Sektor schreiben , und können diese verwenden, um den Sektor als frei zu markieren (ähnlich wie bei einem TRIM).
  • Die meisten virtuellen Speichersysteme (VMWare, Hyper-V, virtuelle Windows-Laufwerke, Speicherbereiche) erkennen, dass Sie einen ganzen Sektor von Nullen schreiben, und nutzen die Gelegenheit, um Speicherplatz in der zugrunde liegenden Speicherdatei zurückzugewinnen
  • SSDs werden nicht wissen, dass Ihr Endziel im Wesentlichen ein verherrlichter TRIM ist, und müssen (wie die virtuellen Laufwerke) Sektoren, die bereits Nullen enthielten, mit Nicht-Nullen füllen, damit Sie sie erneut mit Nullen füllen. Das ist schrecklich für deine SSDs.

Quelle : Hängte eine virtuelle Festplatte ein und beobachtete die E / A-Vorgänge, die sdelete in beiden Modi ausführte.

tl; dr: Benutze -z Zero. Es ist schneller, besser und sicherer.

Ian Boyd
quelle