Eu acho que apenas rsync é userfull. porque?
diff é útil apenas para estruturas que mantêm arquivos e diretórios. Diff não fornece códigos de saída adequados quando usamos links simbólicos. Nessa situação, o diff pode retornar 2 códigos de saída, mesmo que src e dst sejam idênticos (horários, tamanhos, nomes, carimbos de data e hora, apontadores de links, etc).
dir, o sistema de arquivos não garante a ordem dos arquivos, mesmo que o conteúdo do diretório src e dst seja idêntico. Talvez você devesse filtrar a saída ls classificando-a. Mas ls puro exibe apenas nomes de nós.
talvez scripts que incluam diff, cmp, test -X para tipos de nó sejam úteis, mas lembre-se da sobrecarga causada por muitas execuções test / cmp. O script será muito lento.
Como de costume, se você quiser obter informações simples "dirs é / não é idêntico", você deve usar o rsync com a opção -n (dry). Se você quiser descobrir o que é diferente, use o comando diff.