Generalmente non puoi davvero aggiornare l'intero disco senza leggerlo/scriverlo tutto. fsck è improbabile che fornisca ciò di cui hai bisogno:funziona con il file system non il dispositivo sottostante, quindi esegue principalmente la scansione dei metadati del file system (inode e altre strutture del file system).
badblocks -n potrebbe essere un'opzione per dd if=X of=X . In ogni caso probabilmente vorrai usare blocchi grandi per velocizzare le cose (per dd qualcosa come bs=16M , per badblocks questo leggerebbe -b 16777216 o -b $((1<<24)) in gusci ragionevoli). Probabilmente vorrai usare anche conv=fsync con dd .
Per quanto riguarda la sicurezza di dd con lo stesso dispositivo di input e output:legge il blocco dall'input e lo scrive nell'output, quindi dovrebbe essere sicuro (ho crittografato nuovamente una partizione crittografata come questa in diverse occasioni, creando dispositivi loop con lo stesso dispositivo sottostante e diversi password e poi dd 'dall'uno all'altro) - almeno per alcuni tipi di supporti fisici:ad esempio con le unità a scandole non è assolutamente ovvio per me che sia a prova di errore al 100%.