Opción de comando dd bs al final del disco


10

Si tuviera que usar el ddcomando de la siguiente manera:

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

¿Qué sucede al final del disco si no es un múltiplo exacto de 16M? ¿Eso significa que la última porción restante del disco no está puesta a cero?

Me di cuenta en https://www.marksanborn.net/howto/wiping-a-hard-drive-with-dd/ , escribe que el gobierno de los EE. UU. Usa

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

¿Es la conv=notruncopción la forma de garantizar que se borre hasta el último byte?

dd 

Respuestas:


12

Todo el dispositivo de salida se borra independientemente de si su tamaño es un múltiplo del tamaño de bloque al que pasa ddo no.

El notruncindicador no tiene efecto cuando la salida es un archivo de dispositivo, porque truncar un archivo de dispositivo no tiene ningún efecto. Si la salida fuera un archivo normal, tendría el efecto de que el archivo de salida no se trunca antes de escribir, lo que en algunos sistemas de archivos significa que los datos antiguos se sobrescriben (en lugar de escribir nuevos bloques de datos y dejar el resto sin adjuntar), sin embargo, esto no sería útil ya que esta propiedad no está garantizada por todos los sistemas de archivos y, además, el comando no solo sobrescribirá el archivo, sino que también seguirá escribiendo hasta que se llene el disco de salida (o se produzca algún otro error).

En lugar de usar ddy preocuparse por si lo está usando correctamente (como sucede, funciona en este caso particular, pero es complicado y a veces no funciona ), solo usecat .

cat /dev/zero >/dev/sdX

A pesar de la creencia popular en la web, no hay absolutamente ninguna magia ddque lo haga de alguna manera más adecuado para escribir en un disco. La magia está en los /devarchivos. Cualquier herramienta que pueda hacer frente a datos binarios, como cualquier moderno cato head, puede hacer el mismo trabajo que a ddmenos que pase indicadores como seeko skip.

Tenga en cuenta que un problema compartido por ddy cates que en una operación exitosa, se producirá un error con "No queda espacio en el dispositivo" (ENOSPC). Si coloca esto en un script, deberá verificar que el error sea ENOSPC o usar un método diferente. Un método más confiable es determinar primero el tamaño del dispositivo (por ejemplo, usarlo /proc/partitionsen Linux), luego escribir exactamente el número correcto de bytes con una herramienta como head.

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

8

No hay ningún problema: las ddescrituras hasta el final ( No space left on device), a menos que se quede sin entrada, esté limitado count=xu ocurra otro error (por ejemplo, sectores defectuosos, cable defectuoso, etc.).

Si sobrescribir un dispositivo de bloque completo es su objetivo, shredes más fácil de usar.

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

O cryptsetuppara datos aleatorios con un paso de verificación (los ceros se cifran en datos aleatorios; los datos aleatorios se descifran nuevamente a ceros).

O blkdiscardpara los SSD.

O wipefssi solo se trata de comenzar desde cero, no deshacerse por la fuerza de todo lo que alguna vez almacenó en una unidad.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.