Mam zewnętrzny dysk USB z systemem plików NTFS.
Jeśli usunę plik z systemu Windows i uruchomię jedno z kilku narzędzi „cofnij usunięcie” (powiedzmy, TestDisk), mogę łatwo odzyskać plik (ponieważ „wciąż tam jest, ale jest oznaczony jako usunięty”).
Jeśli usunę plik z systemu Linux, żadne narzędzie (chyba że użyję narzędzia do głębokiego wyszukiwania opartego na sygnaturach) nie będzie w stanie odzyskać pliku. Dlaczego? W jaki sposób implementowane jest unlink w kodzie systemu plików NTFS Linuksa? Wygląda na to, że nie tylko „oznacza to jako usunięte”, ale usuwa również strukturę na dysku, czy tak jest w tym przypadku?
Odpowiedzi:
Z ciekawości spojrzałem na źródło ntfs3g.
Wydaje się, że
ntfs_delete(...)
zdefiniowano funkcjędir.c
, która wykonuje usuwanie.Zdecydowanie usuwa wszystkie metadane usuniętego pliku / katalogu ze struktur systemu plików.
Ponieważ istnieje kod źródłowy dla własnej wersji Microsoft, nie jest dostępny, mogę jedynie próbować odgadnąć, w jaki sposób wykonuje usuwanie.
Wygląda na to, że Microsoft zaznacza pozycję MFT jako nieużywaną, ponieważ narzędzia przywracające są w stanie odzyskać lokalizację i nazwę usuniętego pliku.
źródło
Nie znam specyfiki Windows i NTFS, ale powszechnym sposobem na to w GUI menedżera plików Unix / Linux i Mac OS X Finder jest nieusuwanie pliku, ale przenoszenie go do specjalnego ukrytego folderu o nazwie Trash (lub podobny). polecenie undelete pobiera plik z tego folderu Kosz.
rm
po prostu usuwa plik, nie zawracając sobie głowy folderami Kosza, zgodnie z żądaniem użytkownika.źródło