O sinalizador --delete para rsync fará com que os arquivos no diretório de destino que não aparecem no diretório de origem sejam excluídos. O comportamento padrão é excluir antes de transferir arquivos. (--delete-before)
Quando no modo de recursão incremental (o modo padrão desde o rsync versão 3.0), o rsync processa os diretórios incrementalmente e o "excluir antes" só acontece em uma base por diretório. Ele excluirá os arquivos e, em seguida, copiará novos arquivos em cada subdiretório que encontrar ao encontrá-los.
Se você quiser excluir todos os arquivos a serem excluídos através da árvore de diretórios antes de fazer qualquer cópia, também será necessário desativar o modo de recursão incremental com o sinalizador:
--no-i-r
Observe que isso fará com que ele reverta para o comportamento anterior de coletar as listas de arquivos da árvore de diretórios inteira em ambos os lados da transferência, fazendo todas as exclusões aplicáveis e, em seguida, fazendo todas as cópias. Isso pode levar mais tempo se você tiver uma estrutura de diretório muito grande, mas o comportamento estará correto.