adicionando --delete ao rsync, apagará os arquivos que estão no lado de recebimento. Portanto, não haverá nada para sincronizar na etapa 2. Todos os novos arquivos nos clientes já terão desaparecido. Rsync --delete segmentará apenas o diretório sendo rsynced.
Você pode usar vários diretórios. Ou seja, use um diretório dedicado para novos arquivos nos clientes.
Você também deve considerar um sistema de controle de versão como o git, para esse tipo de sincronização de código. Dessa forma, você obtém mescla mais limpa se um arquivo no cliente for alterado. Você pode reverter, usar vários ramos diferentes, ver quem mudou o quê e muito mais.
No git, você usa um gancho de pós-recebimento para isso e faz o checkout da ramificação atual para o seu diretório de trabalho.