The other suggestions are better if they can still read the drive, but if they fail on some sectors then try Diskpatch ($40).
Ghost et. al. will stop on an unreadable sector, but Diskpatch keeps going, so it copies whatever can be read, but it still works on a sector level so it isn't like using xcopy. After copiing a drive with some missing sectors you can run Scandisk on the new one and maybe reinstall some programs to fill-in the missing sectors. Some of the other utilities might do this but not AFAIK.
However Diskpatch does not retry bad sectors because, the author says, in his experience retrying was always futile.