cp vs. mv: qual operação é mais eficiente?

4

Eu me vejo movendo uma quantidade razoavelmente grande de dados (20 GB) de uma árvore de diretórios para outra. Muitas vezes eles estão no mesmo sistema de arquivos, mas às vezes estão em diferentes sistemas. Eu faço cp apenas para preservar os dados originais just-in-case. Depois que a cópia é feita, eu apago os dados originais depois de verificar se os dados foram copiados corretamente. Às vezes eu só faço mv se eu me sentir com preguiça de limpar dados originais depois. No entanto, estou me perguntando, do ponto de vista puramente técnico, qual operação é mais eficiente? Por quê?

    
por Ketan 19.04.2016 / 03:31

1 resposta

10

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.

    
por 19.04.2016 / 03:38

Tags