Yes you could try out GNU ddrescue (e.g. called as "gddrescue" package in Ubuntu or Debian GNU/Linux <=after installed, afaik in Linux-console window listed as "ddrescue".
I have got very good Results with ddrescue: For other: This is only for Blu-rays without Bus-encryption and for obselete HD-DVD format, which most probably doesn't make use of Bus encryption, and CDs and DVDs, and for HDDs, FLoppy drives of course
In ddrescue when a
mapfile is specified, you can stop and resume the rescue process at any time, eg. very useful when inserting Disc and rescueing further via different optical drives.
https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html
EXAMPLES:
(Step 1): Reading only good sectors, and afaik small contiguos area segments of multiple easily recoverable sectors, skipping both, the trimming and the scraping phase
Code:
ddrescue --sector-size=2048 -N -n -v -v /dev/sr0 Star_Trek_Enterprise_S1_DISC1_STE_S1_D1.iso mapfile_Star_Trek_Enterprise_S1_DISC1_STE_S1_D1
"-N, --no-trim : Skip the trimming phase. Especially useful in the first parts of a multi-part rescue."
"-n, --no-scrape : Skip the scraping phase. Avoids spending a lot of time trying to rescue the most difficult parts of the file"
----
(Step 2): Resuming further rescue attempt,
with trimming, but with
out scraping
Code:
ddrescue --sector-size=2048 -n -v -v /dev/sr0 Star_Trek_Enterprise_S1_DISC1_STE_S1_D1.iso mapfile_Star_Trek_Enterprise_S1_DISC1_STE_S1_D1.log
----
(Step 3):
With scraping, but with
out trimming, trimming was done before in previous step (step 2).
Code:
ddrescue --sector-size=2048 -N --complete-only -v -v /dev/sr0 Star_Trek_Enterprise_S1_DISC1_STE_S1_D1.iso mapfile_Star_Trek_Enterprise_S1_DISC1_STE_S1_D1.log
You also could remove "-N" parameter away in this step 3, as trimming was done in step 2, and in the mapfile from step 2 the trimming results are marked and stored, so in step 3 after done step 2 ,ddrescue also knows without -N parameter, that it don't nead to trim (again).
-N, --no-trim : Skip the trimming phase. Especially useful in the first parts of a multi-part rescue.
-n, --no-scrape : Skip the scraping phase. Avoids spending a lot of time trying to rescue the most difficult parts of the file
(Step 4):
Code:
ddrescue --sector-size=2048 --complete-only --retry-passes=3 -v -v /dev/sr0 Star_Trek_Enterprise_S1_DISC2_STE_S1_D1.iso mapfile_Star_Trek_Enterprise_S1_DISC1_STE_S1_D1.log
"--retry-passes=n: Exit after the given number of retry passes. Defaults to 0. -1 means infinity. Every bad sector is tried only once in each pass. To retry bad sectors detected on a previous run, you must specify a non-zero number of retry passes."
(5th step): repeating 2nd step but reading backward, which helped a bit on a few of the most stubborn sectors
Code:
ddrescue --sector-size=2048 --complete-only -R --retry-passes=3 -v -v /dev/sr0 Star_Trek_Enterprise_S1_DISC2_STE_S1_D1.iso mapfile_Star_Trek_Enterprise_S1_DISC1_STE_S1_D1.log
--
--complete-only : means when e.g. resuming the process in a drive which report higher (wrong) sector count, this helps.
"Ddrescue aligns its I/O buffer to the sector size so that it can be used for direct disc access or to read from raw devices. For efficiency reasons, also aligns it to the memory page size if page size is a multiple of sector size. On some systems, ddrescue can't determine the size of a raw device, so an explicit '--size' or '--complete-only' option may be needed."
"--complete-only : Limit rescue domain to the blocks listed in the mapfile. Don't read new data beyond mapfile limits. This is useful when reading from devices of undefined size (like raw devices), when the drive returns an incorrect size, or when reading from a partial copy. It can only be used after a first rescue attempt, possibly limited with the '--size' option, has produced a complete mapfile."
"-R, --reverse : Reverse the direction of all passes (copying, trimming, scraping and retrying). Every pass that is normally run forwards will now be run backwards, and vice versa. '--reverse' does not modify the size of the blocks copied during each phase, just the order in which they are tried."