Force a full read

the most basic solution that will work for every filesystem and every type of block device without even mounting anything, but won’t actually check much except device-level checksums:

  sudo pv -X /dev/sda

or even just:

  sudo cat /dev/sda >/dev/null

and it’s pretty inefficient if the device doesn’t actually have much data, because it also reads (and discards) empty space.

for copy-on-write filesystems that store checksums along with the data, you can request proper integrity checks and also get the nicely formatted report about how well that went.

for btrfs:

  sudo btrfs scrub start -B /

or zfs:

  sudo zpool scrub -a -w

for classic (non-copy-on-write) filesystems that mostly consist of empty space I sometimes do this:

  sudo tar -cf - / | cat >/dev/null

the cat and redirection to /dev/null is necessary because GNU tar contains an optimization that doesn’t actually read anything when it detects /dev/null as the target.

On macOS / Linux you can use dd to “copy” everything from /dev/yourssd to /dev/null. Just be careful not to do it the other way! https://www.man7.org/linux/man-pages/man1/dd.1.html I have no idea if forcing a read is good / the right way. I’m just answering how to do it.

/dev/null is “empty” if you read it, its /dev/zero you dont want to dd onto your disk.

••• Tips

Reply by Email