Você sempre pode fazer algo assim para obter as diferenças.
diff -u <( cd path1 ; find . -printf "chown %U:%G %p; chmod %m %p \n" | sort ) \
<( cd path2 ; find . -printf "chown %U:%G %p; chmod %m %p \n" | sort )
Seria então trivial hackear algo que realiza as mudanças necessárias.