Eu tenho um disco USB externo com um sistema de arquivos NTFS.
Se eu remover um arquivo do Windows e executar um dos vários utilitários "undelete" (por exemplo, TestDisk), posso recuperar o arquivo facilmente (porque "ele ainda está lá, mas está marcado como excluído").
Se eu remover o arquivo do Linux, nenhum utilitário (a menos que eu use um baseado em assinatura de pesquisa profunda) poderá recuperar o arquivo. Por quê? Como a desvinculação é implementada no código do sistema de arquivos NTFS do Linux? Parece que não apenas "marca como excluído", mas também limpa alguma estrutura em disco, é esse o caso?
Respostas:
Eu olhei a fonte ntfs3g por curiosidade.
Parece haver uma função
ntfs_delete(...)
definida emdir.c
, que faz a exclusão.Ele definitivamente remove todos os metadados do arquivo / diretório excluído das estruturas do sistema de arquivos.
Como o código-fonte da versão da Microsoft não está disponível, só posso tentar adivinhar como ele executa a exclusão.
Parece que a Microsoft marca apenas a entrada MFT como não utilizada, uma vez que os utilitários não recuperados conseguem recuperar o local e o nome do arquivo excluído.
fonte
Não conheço as especificidades do Windows e do NTFS, mas uma maneira comum de fazer isso nas GUIs do gerenciador de arquivos Unix / Linux e no Mac OS X Finder é não excluir o arquivo, mas movê-lo para uma pasta oculta especial chamada Lixeira (ou semelhante). o comando undelete recupera o arquivo dessa pasta Lixeira.
rm
simplesmente remove o arquivo sem se preocupar com as pastas da Lixeira, conforme solicitado pelo usuário.fonte