El tamaño de bloque que dd
procesará count
de está determinado por el argumento bs
( ibs
, obs
) para dd
:
bs=BYTES
read and write up to BYTES bytes at a time (default: 512);
overrides ibs and obs
Eso está de acuerdo con esta nueva la página de manual ; Cuando supe que en SunOS 4 estaba más claro que "bs" estaba para "tamaño de bloque":
bs=n
Sets both input and output block sizes to n bytes, superseding ibs= and obs=. If
no conversion other than sync,noerror , and notrunc is specified, each input
block is copied to the output as a single block without aggregating short blocks.
Y como puede ver en esta respuesta las primeras versiones de Unix utilizaban un "bloque" de 512 bytes, o unidad de asignación, en los sistemas de archivos. ¡Es por eso que el valor predeterminado actual para dd
bs
sigue siendo 512 bytes!
También puede especificar otras unidades de tamaño; por ejemplo, bs=5M
para tener un tamaño de bloque de 5 Megabytes:
N and BYTES may be followed by the following multiplicative suffixes:
c =1, w =2, b =512, kB =1000, K =1024, MB =1000*1000, M =1024*1024,
xM =M, GB =1000*1000*1000, G =1024*1024*1024, and so on for T, P, E,
Z, Y.
En tu caso, no importa a qué bs
esté configurado, si eliges count=0
¡no escribirás nada! Si deja bs
sin establecer y elige count=1
, escribirá 512 bytes.
Este estricto control sobre el "tamaño de bloque" tiene mucho más sentido cuando se trata de cintas u otros dispositivos secuenciales limitados. Si escribe 128k bloques de datos en una unidad de cinta con un tamaño de bloque de 64k, ¡acaba de perder la mitad de sus datos! Escribir en un archivo (sistema), a diferencia de un dispositivo real, es mucho más indulgente sobre la asignación de espacio para lo que quieras darle.