Aqui está um truque que provavelmente funcionaria ... No meu exemplo, o rsync terá sucesso se $ target_dir estiver na máquina 'remota' (localhost), senão falhar (por não executar o rsync remoto).
i.e.
src_dir=/etc;target_dir=/test/a;rsync -azp --rsync-path="[[ -d $target_dir ]] && rsync" $src_dir localhost:$target_dir
O código do resultado da falha deve ser 12 se o diretório remoto não existir ... porque ele nunca executou o rsync remoto devido à falha de "[[ -d $target_dir ]]"
12 Error in rsync protocol data stream
A ressalva é que você precisa usar um soquete TCP para fazê-lo funcionar, o que pode ser mais lento.
Outra opção, via /etc/crontab
(que não requer um script), seria algo como ...
50 23 * * * root (src_dir="/test/src_dir"; target_dir="/test/target_dir"; [ -d $src_dir ] && [ -d $target_dir ] && rsync -a -v --delete ${src_dir}/ ${target_dir}/) &>> /var/log/test.log