You should never assume that a mv command is atomic. Use the link dance:
ln -f extant new_link && rm -f extant
The hard link operations are atomic.
(The three step is when you want to save the old one:
ln -f extant new_name && ln -f new_file extant && rm new_file
... so you temporarily have two hard links on the old file (to its new_name), then you have two links to the new file (to it's target name) and then, finally, you've removed the one extra link).