I've been hacking on a directory comparison and sync front end in Emacs that uses rsync, diff, cmp, and Ediff to do all its comparison and syncing under the hood. Its primary differentiation vs. Ediff alone is a flat view of all the differing files in a directory tree, rather than Ediff's single directory per session.