Opzione ds bs command alla fine del disco


10

Se dovessi usare il ddcomando come segue:

dd if=/dev/zero of=/dev/sdX bs=16M

Cosa succede alla fine del disco se non è un multiplo esatto di 16M? Significa che l'ultima porzione rimanente del disco non è azzerata?

Ho notato in https://www.marksanborn.net/howto/wiping-a-hard-drive-with-dd/ , scrive che il governo degli Stati Uniti usa

dd if=/dev/urandom of=/dev/sda bs=8b conv=notrunc

L' conv=notruncopzione è il modo per assicurarsi che ogni ultimo byte venga cancellato?

dd 

Risposte:


12

L'intero dispositivo di output viene cancellato indipendentemente dal fatto che la sua dimensione sia un multiplo della dimensione del blocco a cui si passa ddo meno.

Il notruncflag non ha alcun effetto quando l'output è un file di dispositivo, poiché il troncamento di un file di dispositivo non ha alcun effetto. Se l'output fosse un file normale, avrebbe l'effetto di non troncare il file di output prima della scrittura, il che su alcuni filesystem significa che i vecchi dati vengono sovrascritti (invece di scrivere nuovi blocchi di dati e lasciare il resto non attaccato), tuttavia ciò non sarebbe utile poiché questa proprietà non è garantita da tutti i filesystem e inoltre il comando non solo sovrascriverà il file, ma continuerà anche a scrivere fino a quando non viene riempito il disco di output (o si verifica qualche altro errore).

Invece di usare dde preoccuparti se lo stai usando correttamente (come succede, funziona in questo caso particolare, ma è complicato e talvolta non funziona ), basta usarecat .

cat /dev/zero >/dev/sdX

Nonostante la credenza popolare sul web, non c'è assolutamente nulla di magico ddche lo rende in qualche modo più adatto alla scrittura su un disco. La magia è nei /devfile. Qualsiasi strumento in grado di far fronte a dati binari, come qualsiasi moderno cato head, può fare lo stesso lavoro, a ddmeno che non passi bandiere come seeko skip.

Si noti che un problema condiviso da dded catè che in caso di operazione riuscita, si risolveranno in "Nessuno spazio sul dispositivo" (ENOSPC). Se lo inserisci in uno script, dovrai verificare che l'errore sia ENOSPC o utilizzare un metodo diverso. Un metodo più affidabile consiste nel determinare innanzitutto le dimensioni del dispositivo (ad es. Utilizzando /proc/partitionssotto Linux), quindi scrivere esattamente il giusto numero di byte con uno strumento come head.

size=$(</proc/partitions awk '$4 == "sdX" {print $3}')
head -c "${size}k" /dev/zero >/dev/sdX

8

Non ci sono problemi: ddscrive fino alla fine ( No space left on device), a meno che non rimanga senza input, sia limitato count=xo si verifichi un altro errore (ad esempio settori danneggiati, cavo scadente, ecc.).

Se il tuo obiettivo shredè sovrascrivere un intero blocco, è più facile da usare.

shred -v -n 1 /dev/deleteme     # pseudorandom data
shred -v -n 0 -z /dev/deleteme  # zeroes

O cryptsetupper i dati casuali con una fase di verifica (gli zero vengono crittografati in dati casuali; i dati casuali vengono decifrati di nuovo a zero).

O blkdiscardper SSD.

O wipefsse si tratta solo di ricominciare da capo, senza forzatamente sbarazzarsi di tutto ciò che hai mai archiviato su un disco.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.