Fighting the DVD Bitrot

There has been a time when DVDs where the main medium for backups and for acquiring audiovisual content. These days might long be over but I still have quite a collection that I would like to keep. Unfortunately their lifetime is not endless and most of my devices no longer have a DVD drive. And those that I still have are not very reliable anymore and have started refusing to read more and more of those DVDs lately. So it was time to think about how to preserve the content and make it more easily usable with current devices.

Due to the sheer number of DVDs I have, I shied away from backing them up on a hard disk for a long time as there is too much work involved. But pressure was mounting so I thought a bit about how to automate the process as much as possible.

Reading Old DVDs Reliably

The main problem automating the process was that many DVDs could not be read correctly anymore in any of the drives I had. That makes automation very hard. So I started a bit to experiment how to best clean the DVDs in the hope that this would improve the situation. My first approach was to use a microfiber cloth to clean the surface. This helped in some but not all cases but the effect was temporary. Using a wet tissue did not improve the situation either and adding soap to the mix also had no additional effect. But then I tried some of antiseptic gel everyone now carries through these pandemic times and this worked tremendously well! But it was a bit smelly so I decided to look for yet another solution. I ended up with glass cleaner, which also contains alcohol and this worked just as well and is much easier to apply and remove than the gel. Perfect!

How To Automate the Process

The second hurdle to overcome was how to automate the backup process. So far I only knew of GUI tools to do the job. Not ideal for automation. The Linux tool of choice that seems to be able copy data from just about any spinning optical media is ‘Brasero’. It has a limited set of command line options which were nevertheless enough to get the job done. Unfortunately, Brasero insists on putting the resulting ISO file in the home directory, there is no option to modify the path. However, it is possible to change the home directory path in Bash itself which did the trick for me:

# Change the HOME directory

export HOME=/home/martin/Desktop/backup

# Run Brasero: Note: Only shows that it is finished 
# in the GUI, Use CTRL-C to end...

brasero -c /dev/sr0 --image-file --immediately

This way I could automate the process enough so I could do it while working on other things without breaking concentration too much. Whenever a backup was finished I would just have to put in another DVD and run the same command again. That can be done with little thought for the process. The only additional action required for some old DVDs was to rename the backup ISO files to identify the content. It seems like in the early days, little thought was spent on giving DVDs a reasonable name.

Simultaneous Backup with Several Drives

To further speed things up I wanted to run the backup process with two DVD drives simultaneously. It turns out that Brasero only wants one instance to run at a time. So I had to connect my second DVD drive to another notebook. For convenience, however, I wanted to control everything from one computer. For this, SSH is your friend! However, since Brasero insists on popping up a GUI and show the backup progress there, one additional thing is required. One solution is to make the display known in the SSH session (export DISPLAY=:0) so the GUI will appear on the other computer. That works but it is a bit inconvenient as one has to look for progress on two screens. So I chose to use ssh with the ‘-x’ option which forwards the GUI over the ssh tunnel to my main computer. An excellent solution. One little quirk: Forwarding X does not work when the home directory is changed with the export command above. But that’s something I could live with.

Drive Speed

Drive speed is another thing to be aware of. One of my external USB connected DVD drives could read DVDs at around 8 MByte/s while the other could only do 4 MByte/s. When you have many DVDs to convert, that difference is quite noticeable. Unfortunately, there seems to be no easy way to find out how fast a device is. The specs of both drives I have indicate a read speed of 8 MByte/s so it seems one manufacturer ‘exaggerated’ a bit… In other words, a cheap ‘no-name’ drive might not be the best solution even if the specs look good.

Backup Costs per DVD

One more thought about the cost of storage. Today, external USB attached 8 TB disk drives cost around 150 euros. A backup ISO image of a DVD is around 8 GB at most. Therefore, the cost of backing up one DVD without compressing the content is 15 cents, or 30 cents if you store your backup on two drives in case one of them fails in the future before data is yet again migrated to a newer drive. In other words, quite affordable these days.

One thought on “Fighting the DVD Bitrot”

  1. For more problematic DVDs I can recommend GNU ddrescue. Despite its name the implementation is not based on dd. It’s fairly easy to use, just run “ddrescue /dev/sr0 /path/to/image.img /path/to/logfile.log”. ddrescue first tries to get the “easy” parts of the disk and skips areas with bad sectors or areas that are slow, and then focusses on the skipped sectors in subsequent passes. The logfile stores what sectors have been rescued and which ones are still missing, so it can continue when restarting ddrescue with other options or in case of a system crash. ddrescue has a number of options that can be tweaked to optimize the recovery process, but those are mostly relevant on a case-by-case basis. I’d still recommend the “-P32” option to get a hex preview of some recovered data. I also heard different DVD drives can have various levels of success, with ddrescue you can get an incomplete image from one drive and then retry the bad sectors on another drive

Comments are closed.