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--force
ou--delete
, o rsync se recusará a substituir um diretório não vazio por um symlink. Além disso,-a
implica em-l
, então você está usando o tempo todo de qualquer maneira.