dd loop arquivo de entrada para dispositivo de saída?

dd loop arquivo de entrada para dispositivo de saída?

Usar o /dev/zeropara apagar um HDD é muito lento, então vou usar um arquivo preparado de 1GB com aleatório ou zeros.

Mas como posso fazer um loop com esse arquivo dd?

dd if=loopfile of /dev/sdx 

Responder1

/dev/zeronão é nada lento, talvez tudo que você precise seja dd bs=1M. Deve fazer vários gigabytes por segundo, então o HDD/SSD é o gargalo.

# dd bs=1M status=progress if=/dev/zero of=/dev/null
234309550080 bytes (234 GB, 218 GiB) copied, 11 s, 21.3 GB/s

Ou apenas vá com shred.

# shred -v -n 1 /dev/eraseme

Isso deve acompanhar dados (pseudo) aleatórios na velocidade total do HDD. Se for zero, -n 0 -zmas com shredele não será mais rápido que dados aleatórios.

Responder2

O problema aqui para você é que o tamanho de bloco padrão ddé 512 bytes, ou seja, duas chamadas de sistema e duas solicitações de IO por KB. Você tem dois milhões deles por GB; não admira que seja lento.

  • Não use dd. Use cat(é muito mais rápido em muitas situações e raramente, ou nunca, mais lento):

    cat /dev/zero >/dev/sdX
    
  • Se você realmente precisa usar dd, aumente o tamanho do bloco para algo racional:

    dd if=/dev/zero bs=32M of=/dev/sdX
    
  • Se você estiver tentando apagar o disco com dados pseudoaleatórios, considereDBANcom uma única passagem. (Não se preocupe com múltiplas passagens; uma passagem é suficiente ou você precisa de umamartelo.)

informação relacionada