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?