É possível que um diretório seja desvinculado enquanto seus arquivos contidos permanecem?

1

Eu costumava me perguntar por que excluir diretórios via PHP ou shell não era tão fácil quanto era no Windows com apenas clicar em excluir. Eu percebo agora que a exclusão é simplesmente desvinculando arquivos da tabela de alocação de arquivos, portanto, para excluir um diretório, você deve desvincular todos os arquivos dentro dele.

É possível que a entrada do diretório seja removida, mas não os arquivos dentro dela? Os sistemas operacionais verificam periodicamente arquivos que não podem ser acessados no sistema de arquivos?

    
por mowwwalker 29.06.2012 / 17:11

2 respostas

4

Muitos UNIXes têm um comando unlink que permitirá ao usuário root desvincular um diretório, mas não recursivamente desvincula o conteúdo do diretório, portanto é muito perigoso. Se isso acontecer, use fsck para recuperar o diretório desconectado, que aparecerá na pasta lost+found do sistema de arquivos com um nome aleatório (já que o nome foi perdido quando o unlink aconteceu).

    
por 29.06.2012 / 17:36
2

Sim, é possível, bastante improvável, já que existem procedimentos no sistema operacional para evitar que isso aconteça, mas erros de disco e estranheza podem fazer com que as coisas aconteçam.

Em geral, isso é o que é chkdsk , fsck e uma série de outros utilitários são projetados para fazer. Eles leem as tabelas de alocação e as combinam com as entradas de arquivo conhecidas ... qualquer coisa errada faz com que algumas ações sejam tomadas.

No Windows, você pode sinalizar para o Windows que você gostaria que uma verificação fosse feita procurando na opção Propriedades ao clicar com o botão direito do mouse nos ícones da unidade. Em seguida, o pode fazer a verificação, embora o Windows pareça estar favorecendo as verificações de disco de inicialização, e ele dirá que ele fará isso na próxima reinicialização.

No Linux, ... você pode se machucar seriamente brincando com o utilitário fsck em um sistema ativo, e é por isso que as caixas Linux geralmente sempre fazem seus ChecKs de Sistema de Arquivos (fsck!) durante a inicialização. A simples reinicialização geralmente fará com que uma verificação aconteça. (embora eu saiba que arrancar a energia do meu servidor doméstico quando o no-break falha também dispara um!) (o sistema de arquivos está marcado como sujo)

OS X? Nenhum palpite. Meio que imaginei que você bebia um Latte perto da máquina e consertava o que estava errado com o GeniusBar. (Você provavelmente precisa estar em ou perto de um Starbucks ™ também, eu acho)

    
por 29.06.2012 / 17:29