Como você mostrou, system/nrcalc é um link simbólico no sistema local, mas é um diretório no servidor remoto. Se o diretório no sistema remoto não estiver vazio, o rsync se recusará a apagá-lo (para abrir caminho para o link simbólico) a menos que você especifique --force ou uma das opções --delete . Se você não quiser substituir o diretório no outro extremo, mas ainda precisar atualizá-lo com o conteúdo apontado pelo link local, você pode usar --copy-dirlinks .
O Rsync reclama disso mesmo com --dry-run especificado para alertá-lo sobre o fato de que seria necessário remover o diretório no extremo remoto para fazer o que você está solicitando. Usando qualquer uma das opções que mencionei em conjunto com -n , você terá uma execução limpa e limpa sem realmente excluir nada.
Quanto às outras opções que você tentou:
-
A opção
-K(--keep-dirlinks) é o equivalente a--copy-dirlinks, exceto no lado do destino. Seu link simbólico está no lado da fonte, e é por isso que essa opção não teve efeito para você. -
A opção
-l(--links) garante que os links simbólicos sejam copiados como links simbólicos, mas, novamente, sem--forceou--delete, o rsync se recusará a substituir um diretório não vazio por um symlink. Além disso,-aimplica em-l, então você está usando o tempo todo de qualquer maneira.