Is there any powerful program in Mac to check the health status - mainly bad sectors - of an external (USB) hard disk, and to recover them?
Two options are already built in
Both tools focus on the filesystem level which usually is not a problem because bad sectors tend to get handled by the drive itself. If you want to go the whole mile there is always Drive Genius which offers extensive options including "Realtime bad-block scanning and an extended block verification that stress tests the read/write validity".
You cannot recover data from a bad sector. Disk Utility will not detect bad sectors, nor will fsck. These will cross check index files on the drive and correct them as needed.
When a hard drive detects a bad sector it's supposed to remap it to a spare sector if a spare sector is available. There can also be weak sectors which are readable by the drive but with great difficulty.
NONE of the operating system tools will do scans for bad sectors on a hard drive. You need third party tools to do that. Rather than provide a list re-hashing the merits of each I'd ask readers to refer to the list in the following link:
Everyone will have their own opinions on which one is best. My guess is that if they made that list, they're good.
Another word about external vs. internal HDs. Unless 3rd party support is added, USB and Firewire drives will not be SMART capable. SMART can report a certain number of developing problems with an internal hard drive that may be critical, but they won't get reported if they're on USB/FireWire drives.
Hope this helps....