En general, no se puede actualizar todo el disco sin leer/escribir todo. fsck
es poco probable que proporcione lo que necesita; funciona con el sistema de archivos no el dispositivo subyacente, por lo tanto, en su mayoría solo escanea metadatos del sistema de archivos (inodos y otras estructuras del sistema de archivos).
badblocks -n
podría ser una opción para dd if=X of=X
. En cualquier caso, probablemente quieras usar bloques grandes para acelerar las cosas (para dd
algo como bs=16M
, para badblocks
esto sería -b 16777216
o -b $((1<<24))
en caparazones razonables). Probablemente también quieras usar conv=fsync
con dd
.
En cuanto a la seguridad de dd
con el mismo dispositivo de entrada y salida:lee el bloque de entrada y lo escribe en la salida, por lo que debería ser seguro (he vuelto a cifrar una partición cifrada como esta en varias ocasiones, creando dispositivos de bucle con el mismo dispositivo subyacente y diferentes contraseñas y luego dd
'ing de uno a otro), al menos para algunos tipos de medios físicos:por ejemplo, con unidades shingled definitivamente no es obvio para mí, que es 100% a prueba de fallas.