A operação atômica mv entre dois sistemas de arquivos?

3

Está movendo um arquivo através do comando mv entre dois sistemas de arquivos e uma operação atômica?

    
por Vasanth Gowda 29.06.2018 / 13:34

2 respostas

8

Veja o erro EXDEV (no renomear man 2):

   EXDEV  oldpath and newpath are not  on  the  same  mounted  filesystem.
          (Linux  permits  a  filesystem to be mounted at multiple points,
          but rename() does not work across different mount  points,  even
          if the same filesystem is mounted on both.)

Você não pode se mover entre sistemas de arquivos com uma chamada de sistema, então o que mv faz é uma cópia e exclusão de espaço do usuário, que nunca é atômica.

    
por 29.06.2018 / 13:50
-1

Isso depende do que você entende por "atomicamente".

Diferente do rename() syscall, copiar arquivos entre dois sistemas de arquivos geralmente não é atomicamente. Como a rotina de cópia em mv não chama fsync(2) , pode haver erros atrasados no sistema de arquivos que não são detectados.

    
por 29.06.2018 / 13:43

Tags