Question: It seems that there are many tools out there for Mac OS X that test a hard drive for bad blocks by doing a Read/Verify pass. That is, they read a block, then read it a second time, and verify that both reads yielded the same results.

I need a tool that does a non-destructive Read/Write/Verify pass. It should read each block, write those same contents back out, and then read it again to verify. That way every block gets written, giving the hard drive a chance to spare out bad blocks. But since the same contents that were just read get written back out, it doesn’t destroy data that wasn’t already lost.

I’m aware of several tools that can do Read/Verify, but I’m not aware of any that do Read/Write/Verify. Are there any tools that do what I want?

Unix / open source tools that compile and run on Mac OS X are fair game too.

Answer: You might want to have a look at badblocks(8), a command-line tool from GNU/Linux. There is a port for Darwin, which you can get from MacPorts:

sudo port -v install e2fsprogs

Having a look at the manual, you can read the -n and -w options’ paragraphs:

-n Use non-destructive read-write mode.By default only a non-destructiveread-only test is done. This optionmust not be combined with the -woption, as they are mutuallyexclusive.

-w Use ?write-mode ?test. ?With ?thisoption, badblocks scans for bad blocksby writing some patterns (0xaa, 0x55,0xff, 0x00) on every block of thedevice, reading every block andcomparing the contents. ?This optionmay not be combined with the -noption, as they are mutuallyexclusive.

Hopefully this is what you are looking for.