O que você está descrevendo soa exatamente como uma renomeação básica para substituir um arquivo.
Quando você renomeia / move um arquivo em cima do outro, o arquivo antigo é desvinculado. O que significa que o arquivo ainda existe, mas não está mais na árvore do sistema de arquivos. Assim, os aplicativos antigos continuarão a poder acessar o arquivo, desde que o mantenham aberto. Depois que todos os aplicativos fecharem o arquivo antigo, ele não será realmente alocado no disco.
A chamada do sistema rename
é uma operação atômica. Portanto, para fazer isso, crie um novo arquivo com um nome diferente e, em seguida, chame rename
para renomear o arquivo temporário como o que você deseja substituir. Como a operação é atômica, não há absolutamente nenhum período em que o arquivo esteja ausente. Vai instantaneamente do arquivo antigo para o novo arquivo.
Observe, entretanto, que o arquivo temporário e o arquivo que está sendo substituído devem residir no mesmo ponto de montagem.