How to rip a scratched DVD-Video? (a "cdparanoia for DVDs")

ddrescue

You can try ddrescue. I read recommendation for it, but I do not have experience.

There are two programs called ddrescue (see https://askubuntu.com/questions/211578/whats-the-difference-between-ddrescue-gddrescue-and-dd-rescue). Gnu ddrescue is the newer one and designed to overcome some of the problems in the older ddrescue.

Gnu ddrescue uses a map file and is able to write many times to the same output file without doing the same work again or overwrite previous successful reads. It will instead try to fill in the holes by looking at the map file to find out which sectors to try to read again.

The suggested usage for DVDs (from the Gnu ddrescue manual) is:

ddrescue -n -b2048 /dev/cdrom cdimage mapfile
ddrescue -d -r1 -b2048 /dev/cdrom cdimage mapfile

The first line will extract the easily readable data from the DVD. Second line will use direct disc access to try to read more and write it to the same output file.

k3b

I have good personnal experience with K3b, with proper settings: k3b --copy <device>

You get a large window, and a small copying window. Ignore the large one. You must click advanced setting in the small one. Then you click on "ignore reading errors" so that it will not stop at the first error. You also fix the number of reading attempts to a fairly low value since repeats can sometimes take a long time. I often set it at 1 on my first attempt, just to check how many sectors give me trouble.

If you click on options you can choose to only produce an ISO image on disk. And after clicking on image you can choose where to save it. Very often, a few missing sectors will not even be noticeable (even a few hundreds). But it all depends on where they are. K3b will tell you which sectors cannot be read.


dvdbackup

I usually use dvdbackup for exactly this task. I've used this tool when k3b was able to duplicate a DVD yet the disc was unplayable. Copying it with dvdbackup has worked every time.

You can download it from the main site, but it should be in your Distro's repositories as well.

Example

$ cd /dir/where/you/save/the/dvd
 
# insert DVD to be copied
$ dvdbackup -M
$ genisoimage -dvd-video -udf -o movie.iso /dir/where/you/save/the/dvd
$ eject /dev/dvd
 
# now insert a blank DVD
$ growisofs -Z /dev/dvd=movie.iso

NOTE: To make dvdbackup more verbose:

$ dvdbackup -M -i /dev/sr0 -p

Unstoppable Copier

There is this application which I've never used before but purports to do what you need. You can download it here.

excerpt

Recovers files from disks with physical damage. Allows you to copy files from disks with problems such as bad sectors, scratches or that just give errors when reading data. The program will attempt to recover every readable piece of a file and put the pieces together. Using this method most types of files can be made useable even if some parts of the file were not recoverable in the end.

The program can be used as a daily backup system using its batch mode functions. A list of transfers can be saved to a file and then run from the command line to perform the same batch of transfers on a regular basis without having to use the GUI interface. The program supports command line parameters which allow the application to be run from schedulers or scripts so it can be fully integrated into daily server tasks.

This an old KDE3 application so it took some effort to get it installed on Fedora 19. When I was able to invoke it I was a little underwhelmed. It copy files from media but it was questionable, IMO, how well it could recover files from scratched media. But it might be worth a look if you're desperate enough.

NOTE: I found that tool as well as references to dd, dvdbackup and ddrescue here in this blog post titled: Recovering damaged CDs or DVDs with Linux, so you might want to scan that post for ideas too.

dd

Unfortunately I think the best 2 options for doing this work in Linux are still dd and ddrescue. Basically you do the following with dd:

$ dd if=/dev/sr0 of=image.iso bs=2048 \
      conv=noerror,notrunc iflag=nonblock status=progress

The key option is conv=noerror, so dd will write the data to a .iso file and will continue to do so until you decide to throw in the towel on it.

References

  • How to Backup a Movie DVD via the Command Line on Fedora 14 & CentOS 5
  • dvdbackup - ArchWiki

As already mentioned, ddrescue and other tools that try to re-read DVDs. In addition to that, try it with different drives. Some can handle scratches better than others. With some luck you may get a complete image of the DVD if you use multiple drives to try to read the defective parts.

Finally you may be able to remove the scratches physically. You can buy a DVD repair kit for cheap but I've not had much success with them. If there's a DVD video rental place near you, many of them have devices that polish DVDs and offer the use of it for a small fee.