rsync has a --dry-run / -n flag that would tell you which files would be synced. Combined with --archive /-a it runs recursively.
That said, it's assumes file paths are matching between source and destination, so if things are scattered, it might not work well.
If you're really scattered, I'd consider using a simple python script to walk directories and create a json file with results (maybe the sha256 for key and filename, size, absolute path, and created/modified stamps as fields). Then when you hit a duplicate key, you can dump the results and prompt a delete.
Or something. I'm just spit balling here.