La forma más sencilla en Linux de obtener el tamaño del disco es con blockdev --getsz
:
sudo -s
dd bs=512 if=/dev/zero of=/dev/sdx count=2048 seek=$((`blockdev --getsz /dev/sdx` - 2048))
El tamaño de cada partición está disponible en /proc/partitions
. El siguiente comando muestra el tamaño de sdx
(en unidades de kB):
awk '$4 == "sdx" {print $3}' </proc/partitions
Así:
dd if=/dev/zero of=/dev/sdx bs=1k count=1024 \
seek=$(($(awk '$4 == "sdx" {print $3}' </proc/partitions) - 1024))
Usar la función de búsqueda para llegar al final del recorrido funciona muy bien, es decir:
buscar=$((blockdev --getsz /dev/sda
- 2048))
Sin embargo, cuando use esto, le recomiendo que sepa que su valor de conteo es correcto o que no lo use en absoluto. La razón por la que digo esto es que las unidades pueden tener sectores de 512 bytes o sectores de 4k, y si usa esta solución con una unidad que tiene sectores de 4k, no irá al final de la unidad con ese valor de conteo, y puede perder la información de RAID al final (me encontré con esto).