Nos sistemas Windows, a renomeação de arquivos é funcionalmente semelhante à exclusão deles?

9

De acordo com meu entendimento do sistema de arquivos do Windows, um programa pode ler um arquivo de acordo com seu caminho; se esse caminho for alterado, qualquer programa usado para ler esse arquivo não poderá mais fazê-lo. Isso significa que, para qualquer programa no sistema Windows que dependa de um arquivo, as consequências de excluir e renomear um arquivo devem ser as mesmas.

O caso específico do qual essa resposta depende é de um sistema incorporado executando o Windows 2000, o manual do provedor de serviços orienta o usuário a excluir os arquivos dentro de uma pasta. Como usuário cauteloso, simplesmente copiei os arquivos para um caminho chamado "folder_backup" e deixei a pasta vazia.

Durante esta operação, o sistema regrediu e não conseguiu funcionar corretamente. Portanto, o provedor de serviços que escreveu o manual foi chamado. O diagnóstico deles foi que o banco de dados estava corrompido porque havia dois bancos de dados em paralelo, apontando para "folder_backup" como o segundo banco de dados. No meu entender, os arquivos dentro de "D: / folder_backup" teriam sido inertes, exceto o caso excepcional de um programa procurando pastas começando com "folder" ou lendo todo o conteúdo no arquivo "D: /".

De que maneiras não obscuras um arquivo renomeado ainda pode ser acessado por um sistema, caso contrário, seria impossível se o arquivo fosse excluído?

Tomas Zubiri
fonte
1
De fato, você copiou os arquivos (com duas cópias em algum momento e depois excluiu o original) ou simplesmente os moveu?
GSerg
1
O sistema estava em execução no momento da leitura desses bancos de dados? É possível no Windows (Linux também) copiar arquivos enquanto eles estão abertos (dependendo do aplicativo que abre os arquivos em certos "modos"). Provavelmente, isso resultaria em cópias corrompidas, BTW.
Davidbak
@davidbak Negativo, o aplicativo foi fechado ao renomear os arquivos.
Tomas Zubiri
@ GSerg Eu acredito que renomeei a pasta e depois permiti que a instalação do aplicativo a recriasse.
Tomas Zubiri
Compare com os sistemas de arquivos Unix, onde o ID de um arquivo é um número inteiro, e um nome de arquivo é realmente apenas um mapeamento de nomes para ID, e um arquivo não é excluído até que ele não tenha nomes e nenhum processo o abra. Renomear um arquivo no Unix adiciona um novo mapeamento de nomes e remove o nome antigo, de modo que o arquivo não é excluído em nenhum momento.
Raedwald

Respostas:

-2

Um arquivo renomeado ainda pode ser acessado por outro programa.

  • Uma maneira de um arquivo renomeado ainda poder ser acessado por outro programa é uma variável de ambiente definida para o novo caminho do arquivo pelo mesmo programa que o renomeou. O programa que deseja acessar o referido arquivo usa a variável de ambiente para o caminho do arquivo em vez de um caminho fixo definido internamente.

  • Outra maneira é o arquivo ser o único arquivo em uma pasta específica. O programa que deseja usar esse arquivo sabe que nunca deve haver mais de um arquivo nessa pasta específica, mas sabe que o nome do arquivo pode mudar, mas o diretório em que ele pertence permanecerá o mesmo. O programa simplesmente usa o primeiro arquivo que pode encontrar nessa pasta, que sempre deve ser esse arquivo. No entanto, isso não é uma boa prática e é melhor ter uma variável de ambiente.

Caso contrário, alguns programas solicitarão automaticamente que o usuário localize o arquivo antes de continuar executando o código

J03L
fonte