In che modo iOS elimina tecnicamente un file e può potenzialmente essere rimosso?


11

Abbiamo un'interessante discussione qui sulla cancellazione dei file sui dispositivi iOS. La domanda era: se elimino un file utilizzando NSFileManager, cosa succede sotto il cofano?

La mia comprensione è che l'eliminazione viene eseguita rimuovendo la voce di file corrispondente dalla tabella del file system.

L'argomento contatore è che un handle di file rimane in qualche modo e viene impostato solo un flag che contrassegna il file come eliminato. Se l'utente avesse accesso root al dispositivo iOS, potrebbe potenzialmente reimpostare quel flag e recuperare il contenuto del file.

In entrambi i casi concordiamo che il contenuto del file effettivo non verrà sovrascritto e che i byte semplici esistano ancora sulla memoria / disco flash fino a quando il blocco non viene occupato da un altro file.

L'idea è ora: se la seconda versione è vera, potremmo sovrascrivere il file con un contenuto di un byte prima dell'eliminazione (anche se quel byte viene scritto in una nuova posizione sull'unità flash senza sovrascrivere effettivamente il vecchio contenuto). Se quindi il file viene ripristinato, è disponibile solo il contenuto di un byte sovrascritto.

Si noti che non stiamo parlando di analisi forensi dell'unità flash che potrebbero forse ripristinare il contenuto del file originale.

Quindi, per ricapitolare:

  • Come funziona la cancellazione di un file su iOS internamente?
  • L'approccio di sovrascrittura previene l'annullamento?

Risposte:


3

Credo che in Unix il file system venga modificato come suggerito (la voce viene rimossa dalla tabella del file system). Su Windows la tabella del file system viene modificata e il file viene semplicemente contrassegnato come eliminato: gli strumenti di recupero dei dati possono ripristinare il file. Dopo aver esaminato le applicazioni di ripristino di Windows, penso che anche il nome del file sia stato modificato, quindi quando si deseleziona, è necessario fornire il nome di file corretto. La modifica del nome del file significherebbe se si creasse un file con lo stesso nome di quello appena eliminato, il sistema operativo non avrebbe dovuto riconciliare l'esistenza di due file con lo stesso nome.

MacOSX e Windows hanno un cestino (cestino) nel quale credo sia implementata una cartella speciale in cui vengono copiati i file eliminati. Quando si svuota il cestino, questa cartella viene eliminata modificando la tabella dei file di sistema. Se usi NSFileManager, elude il cestino (che comunque non esiste su iOS) quindi è una vera eliminazione. allo stesso modo se "rm" da una finestra del terminale.

Se si crea un nuovo file con lo stesso nome di quello vecchio, in Unix è solo una nuova voce nella tabella dei file di sistema, ma poiché la vecchia voce è stata rimossa dalla tabella, non ci sarebbe un vantaggio nel creare il Nuovo arrivato.

Questa è la mia convinzione, e sono pronto per l'assalto dei voti negativi ;-)


Hai decisamente ragione sul cestino su OS X. È solo una cartella speciale, nient'altro. E puoi effettivamente vederlo come una cartella nella tua home directory quando rendi visibili i tuoi file invisibili.
Can Sürmeli,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.