Qual é a diferença entre sdelete -c e -z?

24

Aprendi com este artigo a usar o sdelete como uma etapa para reduzir o arquivo VDI:

sdelete -c c:

Mas o que significa -c('Espaço livre limpo', conforme descrito no texto de ajuda)? Não escreve espaço livre com zero? E o que dizer -z(espaço livre zero)? Qual é a diferença entre sdelete -c e -z?

Editar

Tentei a etapa do artigo mencionado anteriormente, mas não reduzi o tamanho do .vidarquivo. Depois segui a postagem do superusuário , alterei a opção -cpara -ze obtive sucesso.

Parece que -zgrava zeros para liberar espaço e -cescreve outra coisa (bits aleatórios, possivelmente).

Chama Congelada
fonte

Respostas:

21

Eu acho que isso é um erro comum. Talvez a opção -z não estivesse disponível nas versões anteriores. SDelete 1,61 diz

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

Observe que isso fará com que primeiro expanda seu disco rígido para o tamanho máximo. Somente no processo de redução do VMWare, ele se tornará menor novamente.

Um teste rápido na minha máquina:

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

O que indica que -z escreve apenas zeros simples, enquanto -c é o padrão militar que limpa o DoD 5220.22-M, como está escrito no site da SDelete .

Thomas Weller
fonte
Não inchará o arquivo se o software for um pouco inteligente. A maioria dos aplicativos de virtualização é. Eu apenas tentei no VMware Fusion, não aumentou o tamanho do arquivo.
Daniel B
1
Infelizmente, o VMWare Workstation Pro 12 expande o disco para o tamanho máximo.
Lebenita 27/08/2015
-c e -z foram anunciados na versão 1.51 exatamente ao contrário (se isso foi apenas um erro na descrição ou se as funções também foram revertidas, não sei). A maneira 1,61 faz muito mais sentido, obviamente.
Lebenita 28/08/2015
Acabei de verificar com o Windows 2012 e um novo arquivo VHDX de 20 GB. A opção -z foi muito rápida (segundos) e o arquivo do disco VHDX não aumentou de tamanho. A opção -c está executando muito mais lentamente e o VHDX está aumentando de tamanho. So -z é a opção preferida para o chamado disco rígido virtual fino / expansível, especialmente se você tiver comprometido o espaço em disco. Mas não é tão segura como a opção -c
munrobasher
1
Apenas verifiquei a versão mais recente (2.0) e há duas diferenças óbvias. Em primeiro lugar, há uma versão de 32 e 64 bits (sdelete.exe & sdelete64.exe). Mas há também uma diferença sutil no comando -c que preocupa. Na v1.61, a opção -c dizia "Limpando espaço livre", mas na v2.0 dizia "Zeroing free space". A opção -z também diz zerar. Perdeu a opção de dados aleatórios?
munrobasher
5

Isso deveria ter sido postado de maneira mais apropriada como um comentário à resposta de Thomas, mas como ainda não posso fazer isso, posto aqui.

A mistura das opções "-z" e "-c" é provavelmente um "erro comum", porque o SDelete mudou o comportamento dessas opções ao longo dos anos. Observando as referências fornecidas abaixo, parece que o SDelete primeiro teve uma opção "-z" que executava a "limpeza de padrão militar", depois adicionou uma opção "-c" para zerar o espaço livre e, em seguida, entre as v1.51 e v1. 61 mudou esse comportamento para o atual.

Referências: Fórum sysinternals.com e a antiga página inicial do SDelete no Microsoft TechNet via archive.org.

LN2
fonte
Esta não é uma resposta para a pergunta original. Para criticar ou solicitar esclarecimentos a um autor, deixe um comentário abaixo da postagem - você sempre pode comentar em suas próprias postagens e, quando tiver reputação suficiente , poderá comentar em qualquer post .
DavidPostill
4
Esta não é uma resposta para a pergunta original. Leia novamente a primeira linha da postagem. Se houver um procedimento melhor para adicionar informações úteis e / ou pertinentes a uma resposta já existente para alguém que acabou de se inscrever no serviço, fique à vontade para me esclarecer.
LN2
"Se houver um procedimento melhor para adicionar informações úteis e / ou pertinentes a uma resposta já existente para alguém que acabou de se inscrever no serviço, sinta-se à vontade para me esclarecer" - não há, leia os links que forneci.
DavidPostill
É interessante notar na 1.61, independentemente de qual opção você usa, sempre diz "Zeroing free space" (e na 1.51, sempre diz "Cleaning free free space"). Isso é um pouco enganador, por um tempo me fez desconfiar que "-c" era realmente um comportamento "limpo" e não "zero".
Rkagerer
5

Documentação atual (e versão do programa 2.01):

  • -c: Limpe o espaço livre. Especifique uma quantidade opcional de espaço para deixar livre para uso por um sistema em execução.
  • -z: Espaço livre zero (bom para otimização do disco virtual).

Mas nas versões mais antigas era revertida:

  • -c: Espaço livre zero (bom para otimização do disco virtual).
  • -z: Limpe o espaço livre.

insira a descrição da imagem aqui

Mas o que eles fazem?

O Clean cria o maior arquivo possível e o preenche com dados aleatórios e, em seguida, preenche com zeros. Isso é o que a maioria das pessoas pensa como limpeza , e é um exagero.

A desvantagem é que, se você estiver usando um disco virtual, ou dentro de uma máquina virtual, ou executando-o em um espaço de armazenamento: o sistema de armazenamento subjacente será forçado a alocar recursos para armazenar dados aleatórios e, então, manter zero. Felizmente, o sistema de armazenamento subjacente perceberá que todo o espaço que acabou de ser alocado à sua unidade pode ser recuperado porque todos esses setores simplesmente contêm zeros.

-z Zero: Simplesmente grava zeros em todos os setores. Esta é a opção que você deseja, por vários motivos:

  • limpar com dados aleatórios é um exagero (a leitura de dados não é praticamente possível; ou seja, um bit de cada vez, embora um microscópio não seja viável)
  • alguns SSDs podem detectar que você está gravando zero em um setor e podem usá-lo para marcar o setor como livre (semelhante a um TRIM)
  • a maioria dos sistemas de armazenamento virtual (VMWare, Hyper-V, discos virtuais do Windows, espaços de armazenamento) percebe que você está gravando um setor inteiro de zeros e aproveita a oportunidade para recuperar espaço no arquivo de armazenamento subjacente
  • Os SSDs não saberão que seu objetivo final é essencialmente um TRIM glorificado e (como os discos virtuais) serão forçados a preencher setores que já continham zeros, com não zeros, apenas para que você os preencha novamente com zeros. Isso é terrível para seus SSDs.

Fonte : Montou um disco rígido virtual e observou as operações de E / S que o sdelete levou nos dois modos.

tl; dr: use -z Zero. É mais rápido, melhor e mais seguro.

Ian Boyd
fonte