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

21

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

sdelete -c c:

Mas o que significa o -c ('Limpar espaço livre' conforme descrito em seu texto de ajuda)? Não escreve espaço livre com zero? E quanto a -z (espaço livre zero)? Qual é a diferença entre sdelete -c e -z?

Editar

Eu tentei o passo no artigo mencionado anteriormente, mas não conseguiu reduzir o tamanho do arquivo .vid . Então eu segui esta postagem de superusuário , e mudei a opção -c para -z e foi bem-sucedido.

Portanto, parece que -z escreve zeros para liberar espaço, e -c escreve outra coisa (possivelmente bits aleatórios).

    
por Frozen Flame 30.04.2014 / 08:01

3 respostas

18

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

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

Observe que isso expandirá primeiro seu disco rígido para o tamanho total. Somente no processo de encolhimento da 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 apenas grava zeros simples, enquanto -c é a limpeza padrão militar DoD 5220.22-M conforme escrito no site do SDelete .

    
por 30.04.2014 / 09:16
5

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

Misturar as opções "-z" e "-c" é provavelmente um "erro comum", porque o SDelete mudou o comportamento das opções ao longo dos anos. Olhando para as referências fornecidas abaixo, parece que o SDelete primeiro tinha uma opção "-z" que fazia o "militar standard wiping", então adicionava uma opção "-c" para zerar o espaço livre, e depois entre v1.51 e v1. 61 mudou esse comportamento para o atual.

Referências: Fórum sysinternals.com e edeleccione a página inicial do SDelete no Microsoft TechNet através do archive.org.

    
por 03.12.2014 / 16:36
1

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

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

Mas em versões antigas, foi revertido:

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

Mas o que eles fazem?

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

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

-z Zero: Simplesmente escreve 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; isto é, um bit de cada vez, embora um microscópio não seja viável)
  • alguns SSDs podem detectar que você está escrevendo 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á escrevendo um setor inteiro de zeros e aproveita a oportunidade para recuperar espaço no arquivo de armazenamento subjacente
  • Os SSDs não sabem que o seu objetivo final é essencialmente um TRIM glorificado e (como os discos virtuais) ser forçado a preencher setores que já continham zeros, com não zeros, apenas para preenchê-lo com zeros novamente. Isso é terrível para seus SSDs.

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

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

    
por 20.04.2018 / 14:43