É 100% seguro renomear um arquivo enquanto ele está sendo escrito?

2

No Ubuntu, ao contrário do Windows, posso renomear um arquivo enquanto ele está sendo gravado no disco rígido (por exemplo, porque é a saída de um programa ou a cópia de outro arquivo) e também posso renomear um diretório contendo arquivos que estão sendo escritas: o sistema não envia mensagens como "O arquivo está sendo usado, a operação não é permitida". Esta operação de renomeação é 100% segura ou existe o risco de criar arquivos corrompidos? E, no primeiro caso, qual é a razão técnica que torna isso possível, diferentemente de outros sistemas operacionais? (talvez algo relacionado com a estrutura do sistema de arquivos Linux e o uso de Inodes, eu acho ...?)

Muito obrigado.

    
por Andrew 19.09.2013 / 08:17

1 resposta

5

O Linux funciona em identificadores de arquivo e renomear ou mover um arquivo no Linux não altera o identificador de arquivo. Mesmo a exclusão de um arquivo não será um problema: o processo que possui o identificador de arquivo ainda pode ler e gravar.

A página da Wikipedia sobre inodes será a melhor leitura sobre isso.

  

Na computação, um inode (nó de índice) é uma estrutura de dados encontrada em muitos sistemas de arquivos Unix. Cada inode armazena todas as informações sobre um objeto do sistema de arquivos (arquivo, nó do dispositivo, soquete, canal, etc.). Ele não armazena o conteúdo de dados e o nome do arquivo, exceto em determinados casos em sistemas de arquivos modernos.

     

Implicações

     

O número de inode de um arquivo permanece o mesmo quando é movido para outro diretório no mesmo dispositivo ou quando o disco é desfragmentado, o que pode alterar sua localização física. Isso também implica que é impossível implementar um comportamento inode completamente conforme com muitos sistemas de arquivos não-Unix, como FAT e seus descendentes, que não possuem uma maneira de armazenar essa invariância quando a entrada de diretório de um arquivo e seus dados são movidos .

Então: sim.

    
por Rinzwind 19.09.2013 / 08:26