Não conheço nenhum software que detecte renomeações / movimentações em toda a hierarquia de pastas. Isso seria bastante lento, já que seria necessário verificar todos os arquivos para compará-los.
O recurso já foi proposto como um patch para o rsync (google para "rsync detect-renamed"), mas aparentemente ele nunca foi aceito no rsync.
O rsync tem uma versão limitada do que você está procurando:
-y, --fuzzy
This option tells rsync that it should look for a basis file for any destination file that is missing. The current algorithm looks in the same directory as the destination file for either a file that has an identical size and modified-time, or a similarly-named file. If found, rsync uses the fuzzy basis file to try to speed up the transfer.
Isso não funcionará se você mover arquivos entre diretórios.
Dito isto, a maioria dos programas de sincronização tem a opção de remover arquivos no destino se eles estiverem ausentes da origem, portanto, um movimento deve ser replicado como novo + delete, que requer mais cópias, mas funcionaria.
Se você quiser apenas comparar unidades, não sincronizá-las, basta escrever um pequeno script que lista todos os arquivos com seus nomes de arquivos (e talvez uma soma de verificação) e importá-los para uma planilha ou pequeno db. Em seguida, você pode classificar por nome de arquivo ou soma de verificação e comparar diretamente as listas de arquivos. Essa pode ser a rota mais fácil.