Tecnicamente, mv
não é atômico quando a origem e o destino estão em sistemas de arquivos diferentes, na verdade é cp
+ unlink()
. Então, primeiro mv
copiará o arquivo e depois chamará unlink()
para remover o arquivo da lista de entradas do diretório.
Portanto, neste caso, o AFAIU, seja cp
e rm
( unlink()
), ou use mv
diretamente é totalmente sua preferência pessoal.
Considerando que, enquanto mv
-ing dentro do mesmo sistema de arquivos, você deve usar mv
como sua atômica dentro do mesmo sistema de arquivos (chamadas rename()
) e menos sobrecarga.
Obrigado @muru e @psusi por apontar o comportamento dependente do FS.