Você pode manipular arquivos movidos e renomeados com rsync
se os sistemas de arquivos no diretório de origem e de destino tiverem suporte para links físicos. A ideia é deixar o rsync reconstruir links antes da transferência real. Você pode encontrar uma explicação brilhante aqui .
Acabamos com uma solução simples que cria uma árvore oculta de hard links dentro do diretório source / target, o script básico poderia ser assim:
# Name of hidden directory
Shadow=".rsync_shadow"
# do real sync
rsync -ahHv --stats --no-inc-recursive --delete --delete-after "$Source"/ "$Target"
# update/create hidden dir of hard links in source
rsync -a --delete --link-dest="$Source" --exclude="/$Shadow" "$Source"/ "$Source/$Shadow"
# update/create hidden dir of hard links in target
rsync -a --delete --link-dest="$Target" --exclude="/$Shadow" "$Target"/ "$Target/$Shadow"
Eu tenho um script de exemplo no GitHub . Mas eu aconselho você a fazer uma grande quantidade de testes antes de usar este método na produção.