A função rename
(que é a base do comando mv
, "O utilitário mv deve executar ações equivalente à função rename () ") é atômico (veja POSIX link , que se refere ao padrão C):
This rename() function is equivalent for regular files to that defined by the ISO C standard. Its inclusion here expands that definition to include actions on directories and specifies behavior when the new parameter names a file that already exists. That specification requires that the action of the function be atomic.
(Mas veja isto para advertências: link .)
Operações interrompidas, seja por Ctrl-C ou de outra forma, nunca devem resultar em arquivos parcialmente transferidos. De fato, como você mencionou, um único sistema de arquivos mv
na verdade não copia nenhum conteúdo de arquivo, apenas metadados de arquivo. O pior que deve acontecer nessa frente é ver os diretórios parcialmente movidos (se você usa mv a b c dest
, é possível interromper e ter apenas, por exemplo, a
movido para dest
, mas todos arquivos e seus conteúdos terão sido movidos corretamente), arquivos regulares não parcialmente movidos.
Sobre a sua pergunta do lado do inode, eu diria que geralmente não é uma preocupação; atualizar inodes para mover apenas alguns diretórios é uma operação de rotina com pouca sobrecarga (as gravações de conteúdo de arquivo acontecendo no mesmo sistema de arquivos devem ser uma causa de impacto ou fragmentação de desempenho muito maior, dependendo do tipo de sistema de arquivos específico).