fix broken move

File::Copy's move failed here because it does not work across volumes. I
also failed to check the return value of move so it silently failed.

It now avoids the volume issue by putting the "tmp" directory beside the
final location. It also now checks the return value of move and cleans
up and exits if it fails.