Adding Error Correcting Codes (ECC) to your backups is definitely a good thing. You trade off some amount of extra space to gain some robustness in the form of data redundancy.
vdmfec looks like a nice little tool. By default, it assumes a block size of b=1024 bytes, and it writes out N=18 blocks for every K=14 blocks of input. This means that by default, the output size is inflated by N-K=4 blocks for every 14 blocks, for a size increase of about 29%. You can play with the parameters K and N to get more or less redundancy, although my feeling is that the defaults are probably okay for most uses.
You need to be aware of a couple of potential gotchas, though. First, according to the man page:
Note that the N, K, and blocksize parameters are NOT written to the
output! You must specify the same parameters when you run the decoder.
(Actually, the decoder is capable of explicitly detecting an invalid K
value, but incorrect blocksize or N values will result in bad blocks
and decode failure.)
So remember to document the particular parameters you use for each of your backups. Even if you always use the defaults, it may be a good idea to explicitly document those values, since defaults can change in newer versions of the program.
Secondly, the man page says this:
The decoder is capable of reading from non-seekable media such as
pipes, however, buffer underruns are not detected and will result in
failure. Also, when reading from a pipe the entire file must be read.
Reading from a seek-able stream can be faster because only K good
blocks out of N need to be read.
This means that it is best (and safest) to put
vdmfec last in your command pipeline when creating your backups. E.g.:
tar -cf - /data | gzip | vdmfec > /backups/data.tgz.vdm
By doing the
vdmfec encoding last when backing-up, it means you can use the
vdmfec decoder on a seekable file instead of on a non-seekable pipe when restoring, and thus avoid the potential problems that can arise when using pipes. E.g.:
vdmfec_decode /backups/data.tgz.vdm | zcat | tar -xf -
In summary, I would say that
vdmfec is a good tool to use to make your backups more robust against data loss due to errors caused by media degradation. Today's hard drives are using ever higher bit densities to achieve their ever increasing multi-terabyte capacities, so I think it is definitely worth adding some extra redundancy to backups, just for safety.
And finally: Another tool that has a similar function to
par2 (man page), but it works in an entirely different way.
par2 may be a more suitable tool if you find you need to
split your archive files, since
par2 was developed to add ECC to large files split into numerous smaller files (e.g. for posting to USENET binaries groups).