Como o iOS exclui um arquivo tecnicamente e pode ser potencialmente eliminado?

11

Temos uma discussão interessante aqui sobre a exclusão de arquivos em dispositivos iOS. A pergunta era: se eu excluir um arquivo usando o NSFileManager, o que está acontecendo nos bastidores?

Meu entendimento é que a exclusão é realizada removendo a entrada de arquivo correspondente da tabela do sistema de arquivos.

O argumento do contador é que um identificador de arquivo permanece de alguma forma e apenas um sinalizador é definido, que marca o arquivo como excluído. Se o usuário tivesse acesso root ao dispositivo iOS, ele poderia redefinir esse sinalizador e recuperar o conteúdo do arquivo.

Nos dois casos, concordamos que o conteúdo real do arquivo não será substituído e os bytes simples ainda existem na memória / disco flash até que o bloco seja ocupado por outro arquivo.

A idéia agora é: se a segunda versão for verdadeira, poderíamos sobrescrever o arquivo com um conteúdo de um byte antes da exclusão (mesmo que esse byte seja gravado em um novo local na unidade flash, sem sobrescrever o conteúdo antigo). Se o arquivo for recuperado, apenas o conteúdo substituído por um byte estará disponível.

Observe que não estamos falando de análises forenses da unidade flash que talvez possam recuperar o conteúdo original do arquivo.

Então, para recapitular:

  • Como a exclusão de um arquivo no iOS funciona internamente?
  • A abordagem de substituição evita a exclusão?
Krumelur
fonte

Respostas:

3

Acredito que no Unix o sistema de arquivos seja modificado como você sugere (a entrada é removida da tabela do sistema de arquivos). No Windows, a tabela do sistema de arquivos é modificada e o arquivo é marcado como excluído - as ferramentas de recuperação de dados podem recuperar o arquivo. Tendo examinado os aplicativos de exclusão do Windows, acho que o nome do arquivo também é modificado; portanto, ao cancelar a exclusão, é necessário fornecer o nome de arquivo correto. Modificar o nome do arquivo significa que, se você criar um arquivo com o mesmo nome que você acabou de excluir, o sistema operacional não precisará reconciliar a existência de dois arquivos com o mesmo nome.

O MacOSX e o Windows têm uma lata de lixo (lixeira), que eu acho que implementou uma pasta especial na qual os arquivos excluídos são copiados. Quando você esvazia a lixeira, essa pasta é removida - modificando a tabela de arquivos do sistema. Se você usa o NSFileManager, ele contorna a lixeira (que não existe no iOS de qualquer maneira), por isso é uma exclusão real. da mesma forma, se você "rm" em uma janela do terminal.

Se você criar um novo arquivo com o mesmo nome que o antigo, no Unix é apenas uma nova entrada na tabela de arquivos do sistema, mas como a entrada antiga foi removida da tabela, não haveria vantagem em criar o arquivo nova entrada.

Essa é a minha convicção e estou pronto para o ataque de votos negativos ;-)

Derek Knight
fonte
Você está definitivamente certo sobre a lixeira no OS X. É apenas uma pasta especial, nada mais. E você pode realmente vê-lo como uma pasta no seu diretório pessoal quando tornar seus arquivos invisíveis visíveis.
Can Sürmeli