GNU ddrescue is a data recovery tool for disk drives, DVDs, CDs, and other digital storage media.
It copies raw blocks of storage, such as disk sectors, from one device or file to another, while handling read errors in an intelligent manner to minimize data loss by scraping good sectors from partially read blocks.
GNU ddrescue is written in the C++ programming language, and is available as open-source software that was originally released in 2004.
ddrescue uses a sophisticated algorithm to copy data from disk drives, and other storage devices, causing as little additional damage, if they are failing, as possible.
ddrescue also features a fill mode, able to selectively overwrite parts of the output file, which has uses such as wiping data, marking bad areas or even, in some cases, repair damaged sectors.