A remoção de arquivos em caso de alterações é fácil usando links físicos: basta excluir o arquivo que mudou por caminho e colocar o alterado no lugar. Os links físicos apontam para dados, mas são caminhos independentes e, portanto, podem ser excluídos sem afetar outros links físicos ou os dados em si. A única parte arriscada é escrever diretamente no arquivo por trás de um link físico, porque isso obviamente alteraria os dados de todos os links físicos que apontam para esses dados, simplesmente porque há apenas um dado para todos os links físicos "os mesmos" disponíveis. Então você precisa saber se as coisas mudaram e se é necessário criar um novo arquivo.
Como você está solicitando um propósito de backup, seu problema não deve surgir de qualquer maneira: cada alteração de um arquivo deve resultar em um novo arquivo no backup, sem nenhuma alteração você pode criar links físicos para os dados já disponíveis. Portanto, seu processo precisaria verificar as alterações primeiro, de qualquer forma, não vejo onde você precisa decidir se e como deseja alterar as coisas no backup. Backup é deixar tudo já presente como está e apenas decidir como adicionar coisas novas.
Em geral, eu não recomendaria implementar essas coisas por conta própria, é simplesmente muito complexo e fácil demais para fazer as coisas erradas. Já existem soluções disponíveis para implementar o que você tem em mente, por exemplo, uma ferramenta chamada HardlinkBackup .