Eu não vejo como você pode obter operação atômica. A man page para symlink(2)
diz que dá EEXIST
se o destino já existir. Se o kernel não suporta operação atômica, suas limitações são irrelevantes.
Eu também não vejo como o mv -T
ajuda, mesmo que você o tenha. Experimente em uma caixa Linux comum, uma com GNU mv:
$ mkdir a b
$ ln -s a z
$ mv -T b z
mv: cannot overwrite non-directory 'z' with directory 'b'
Acho que você terá que fazer isso em duas etapas: remover o link simbólico antigo e recriá-lo.