Eu não acho que rsync
possa fazer isso, mas você pode fazer uma lista de arquivos, modificá-la e copiá-la como um script para o destino.
Supondo que seus nomes de arquivos não contenham novas linhas ou aspas simples ( '
), execute-o na máquina de origem:
cd basedir
find . -type f | sed 's/^/rm -f '\''/' | sed 's/$/'\''/' > /var/tmp/to_remove
copie, em seguida, o arquivo to_remove
para a máquina de destino, cd
para o diretório base e a origem. Qualquer arquivo que não exista, mas que esteja na lista, não terá nenhum efeito, e outros somente disponíveis no destino não serão tocados.
Se você também quiser excluir diretórios, poderá usar um adicional, mas isso exclui diretórios que existem na origem e estão vazios no destino, independentemente de haver arquivos removidos do diretório ou não.
find . -depth -type d | sed 's/^/rmdir -f '\''/' | sed 's/$/'\''/' > /var/tmp/to_remove