I don't have a solution other than to use rsync, I used diff on about 1.7TB of data which includes hundreds of thousands if not millions of small files to ensure nothing was missing or corrupt.
diff didn't even get past the first large directory without spitting that error out.
Keep in mind I used "diff -r" because that means recursive, otherwise it wouldn't compare all files and subdirectories and would be a false way of doing it.
diff, exhaustedi, rsync, tb, includes, ensure, corrupt, didn, directory, spitting, quot, recursive, wouldn, subdirectories,