Чим відрізняється sdelete -c і -z?


24

Я дізнався з цієї статті використовувати sdelete як крок для зменшення VDI-файлу:

sdelete -c c:

Але що означає -c("Чистий вільний простір", як описано в його довідковому тексті)? Чи не пише це вільний простір з нулем? А як щодо -z(нульовий вільний простір)? Чим відрізняється sdelete -c і -z?

Редагувати

Я спробував цей крок у згаданій раніше статті , але не зміг зменшити розмір .vidфайлу. Потім я дотримувався цієї посади суперкористувача і змінив варіант -cна -z, і досяг успіху.

Отож, здається, -zзаписує нулі у вільний простір і -cпише щось інше (можливо випадкові біти).

Відповіді:


21

Я думаю, що це звичайна помилка. Можливо, параметр -z був недоступний у попередніх версіях. SDelete 1,61 каже

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

Зауважте, що це спочатку розширить ваш жорсткий диск до повного розміру. Тільки в процесі скорочення VMWare він знову стане меншим.

Швидкий тест на моїй машині:

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

Що вказує на те, що -z пише лише прості нулі, тоді як -c - це військовий стандарт, витираючи DoD 5220.22-M, як написано на веб-сайті SDelete .


Він не розмине файл, якщо програмне забезпечення дещо розумне. Більшість програм для віртуалізації є. Я просто спробував це у VMware Fusion, він зовсім не збільшив розмір файлу.
Даніель Б

1
На жаль, VMWare Workstation Pro 12 розширює диск на повний розмір.
Лебеніта

-c і -z рекламувалися в 1.51 саме навпаки (чи це була лише помилка в описі, або функції також були відмінені, я не знаю). Очевидно, що шлях 1,61 має набагато більше сенсу.
Лебеніта

Щойно перевірили Windows 2012 та новий VHDX-файл розміром 20 Гб. Опція -z була дуже швидкою (в секундах) і файл диска VHDX не збільшився в розмірі. Параметр -c працює набагато повільніше, а VHDX збільшується в розмірах. Тож -z є кращим варіантом для так званого тонкого / розширюваного віртуального жорсткого диска, особливо якщо у вас надмірна кількість дискового простору. Але це не так безпечно, як варіант -c
munrobasher

1
Щойно перевірили останню версію (2.0) і є дві очевидні відмінності. По-перше, існує 32-бітна і 64-бітна версія (sdelete.exe & sdelete64.exe). Але є і тонка різниця в команді -c, яка турбує. В v1.61 опція -c сказала "Очищення вільного простору", але в v2.0 написано "Нульовий вільний простір". Варіант -z також говорить про занулення. Чи втратив він випадковий параметр даних ??
munrobasher

5

Це слід було більш доцільно розмістити як коментар до відповіді Томаса, але оскільки я цього ще не можу зробити, я публікую його тут.

Змішування варіантів "-z" та "-c", ймовірно, є "поширеною помилкою", оскільки SDelete протягом багатьох років змінив поведінку зазначених варіантів. З огляду на подані нижче посилання здається, що спочатку SDelete мав опцію "-z", яка зробила "військовий стандарт витирання", потім додала опцію "-c" для нулювання вільного простору, а потім десь між v1.51 та v1. 61 переключив таку поведінку на поточну.

Посилання: Форум sysinternals.com та стара домашня сторінка SDelete в Microsoft TechNet через archive.org.


Це не відповідь на початкове запитання. Щоб критикувати або вимагати роз'яснення у автора, залиште коментар під їх публікацією - ви завжди можете коментувати свої власні публікації, і як тільки у вас буде достатня репутація, ви зможете коментувати будь-яку публікацію .
DavidPostill

4
Це не відповідь на початкове запитання. Будь ласка, перечитайте перший рядок публікації. Якщо є краща процедура додавання корисної та / або відповідної інформації до вже існуючої відповіді для когось, хто щойно підписався на службу, сміливо просвітите мене.
LN2

"Якщо є краща процедура додавання корисної та / або відповідної інформації до вже наявної відповіді для когось, хто щойно підписався на службу, не соромтесь просвітити мене" - немає, будь ласка, прочитайте надані нами посилання.
DavidPostill

Цікаво зазначити, що в 1,61, незалежно від того, яким перемикачем ви користуєтесь, завжди написано "Нульовий вільний простір" (а в 1.51 він завжди говорить "Очищення вільного простору"). Це трохи вводить в оману, на деякий час це викликало у мене недовіру до того, що "-c" насправді є "чистим", а не "нульовим" поведінкою.
rkagerer

5

Поточна документація (та версія 2.01 програми):

  • -c: Очистіть вільний простір. Вкажіть кількість опціону місця, щоб залишити його вільним для використання запущеною системою.
  • -z: Нульовий простір (добре для оптимізації віртуальних дисків).

Але в старих версіях це було зворотно:

  • -c: Нульовий простір (добре для оптимізації віртуальних дисків).
  • -z: Очистіть вільний простір.

введіть тут опис зображення

Але що вони роблять?

Clean створює найбільший файл, який він може, і заповнює його випадковими даними, а потім заповнює нулями. Це те, що більшість людей вважають протиранням , і це надмірно.

Мінус полягає в тому, що якщо ви використовуєте віртуальний диск, або всередині віртуальної машини, або запускаєте його на сховищі: система, що лежить в основі зберігання, буде змушена виділяти ресурси для зберігання випадкових даних, а потім утримувати нуль. Будемо сподіватися, що система, що лежить в основі, зрозуміє, що весь той простір, який тільки що був виділений для вашого накопичувача, може бути повернений, оскільки всі ці сектори просто містять нулі.

-z Нуль: Просто записує нулі у всі сектори. Цей варіант вам потрібен з багатьох причин:

  • протирання випадковими даними є надмірним (читання даних практично неможливо; тобто один біт за раз, хоча мікроскоп неможливий)
  • деякі SSD можуть виявити, що ви записуєте нуль у сектор, і можуть використовувати його для позначення сектору як вільного (подібно до TRIM)
  • більшість віртуальних систем зберігання (VMWare, Hyper-V, віртуальні диски Windows, простори зберігання) розуміють, що ви пишете цілий сектор нулів, і користуєтесь можливістю повернути простір у базовий файл зберігання
  • SSD-диски не знають, що ваша кінцева мета - це, по суті, прославлений TRIM, і (як і віртуальні диски) змушені заповнювати сектори, які вже містили нулі, ненулями, тільки щоб ви знову заповнили нулі. Це страшно для ваших SSD-дисків.

Джерело : Встановив віртуальний жорсткий диск і спостерігав за операціями вводу / виводу, які sdelete проводив в обох режимах.

tl; dr: Використовуйте -z Нуль. Це швидше, краще, безпечніше.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.