I have released today a disk surface scan tool for Linux, I’ve named it DiskScan.
The only other tools that were recommended for use so far were badblocks as a surface scan and fsck as a filesystem checker that will also read most of the disk surface, but not necessarily all of it. badblocks is limited to only telling you when a sector is not reading at all.
DiskScan on the other disk will scan the entire surface, will alert when a sector is unreadable and will also use the read timing to warn when a sector is having problems, as I believe that disk latency is what really matters to know if a disk is good or bad.
This is just the bare start for this project, there is a lot to do here and I hope to also create useful GUI to make it more accessible to those that do not swim in the CLI.
Other Unixes should work as well, the only pitfall I can think of are block device ioctl’s that I’m using that may not be portable but it should be easy to find a working replacement for each of them.
Edit: Created a diskscan project page