WHDD is a HDD diagnostic and data recovery tool for Linux. It can test a hard drive with reads and writes, while providing intuitive visualization of the process. It also has a function for copying a device, with algorithms optimized for least harm to already-defective source devices. It works with your hard drives at a low level by sending ATA commands, which means that the system doesn't freeze while accessing damaged devices (the device is soft-reset on timeout).