Well, that's splitting hairs.
Eh, no, it isn't.
There's a pretty big difference between doing a checksum of each checksum, and doing a checksum of a huge list of checksums.
But I'm still under the impression that an MD5 checksum already includes integrity verification in itself. ie. if the MD5 checksum file is corrupted, it won't work nor give false results with the actual backed up data. Therefore getting checksums of checksums isn't necessary or even useful - just having multiple copies is enough. Correct me if I'm wrong.
You're wrong; the checksum isn't self-correcting.
It's only a checksum of other data.
My point is that the list of checksums -- which for 500 GB of data can very well mean a pretty large file -- is also exposed to the same risk of bit rot per byte as any other kind of data.
Bit rot may change the printed hash of d41d8cd98f00b204e9800998ecf8427e to d41d8cd98f00b204e98%0998ecf8427e (obviously wrong) or d41d8cd98f00b204e9810998ecf8427e (possibly correct for some file).
Now if you have a checksum that's wrong, how can you know if it's the checksum or the file that's wrong?
Knowledge of the MD5 hash algorithm may rescue you, as may software coded by someone with knowledge of the algorithm.
I
know that if I change _one_ bit in the middle of a JPEG, it will probably still display seemingly identically to the original, but that the checksum will be very different:
91f4fa04f6a82e7ec87e664eef1e3165
9366_Kurt_Maflin.jpg823375454caf2a0a3670a858c8cfc87e
9366_Kurt_Maflin2.jpgHowever, checking this for a large file of checksums may be impractical, and it's really cheap to make a checksum of the file itself, and just store that, too.
There are several ways of doing it; I kindof like storing the md5sum of the checksum file in the file name of the checksum file (example is based on the bash shell in a unix or cygwin environment):
1) Create a list of checksums of JPEGs, raw files and Photoshop files in the file md5$sums:$ md5sum *.jpg *.CR2 *.psd > md5sums
2) Generate a checksum of the file md5sums:$ sum=$(md5sum md5sums|cut -f1 -d' ')
3) Rename the file:$ mv md5sum $sum
4) Check the result:$ ls -l md5*
-rw-r--r-- 1 jani jani 168 Jan 14 01:14 md5sums.8d11a346ebd32e93a5a6adcebd55dee6
Now if I do a checksum of the file, and I get something else than what follows the dot, I know I have a problem.