Ho eliminato per errore un file eseguendo:
rm -rf ./Desktop/myScript.sh
Penso che sia possibile recuperare il file, perché il rm
comando rimuove temporaneamente. Come posso recuperare il file cancellato su Mac OSX?
Ho eliminato per errore un file eseguendo:
rm -rf ./Desktop/myScript.sh
Penso che sia possibile recuperare il file, perché il rm
comando rimuove temporaneamente. Come posso recuperare il file cancellato su Mac OSX?
Risposte:
MacOS è un sistema operativo Unix e rm
significa "arrivederci". L'interfaccia della GUI ti consente di spostare un file nel cestino (che puoi quindi recuperare) ma non è quello che hai fatto. Se si dispone di un backup (ad es. Time Machine in esecuzione), si viene salvati.
Una precisazione
A rigor di termini (come sottolinea @ire_and_curses) a rm
elimina semplicemente la voce della directory per il file lasciando intatti i blocchi del disco utilizzati. Se potessi sospendere il filesystem in cui si trovava il file, ci sono metodi avanzati con cui puoi provare a riscoprire il contenuto di questi blocchi. Ci sono anche alcuni strumenti di recupero che possono essere acquistati per recuperare la perdita. Il problema centrale è che nient'altro riutilizza i blocchi del disco rappresentati dal tuo file.
MacOS ha anche un comando di rimozione sicura ( srm
) che sovrascrive un file prima che venga modificato unlink
rendendolo irrecuperabile. Uso il unlink
termine poiché questa è la chiamata di sistema sottostante associata al rm
comando di una shell . Questo pone le basi per la prossima parte di questa discussione, di seguito.
Nota a margine
[Dovrei affrettarmi ad aggiungere che anche se hai sovrascritto un disco più volte, ci sono modi per leggere ciò che è stato scritto una dozzina o più volte prima. Sanificare correttamente un disco per lo smaltimento richiede davvero un bagno acido, un grosso martello e un trituratore. ]
unlink
ing un file decrementa il conteggio dei collegamenti inode del file. Se questo valore raggiunge lo zero, il file viene eliminato dalla directory del filesystem e i suoi blocchi su disco vengono liberati per il riutilizzo. Questo succede solo quando nessun processo ha il file aperto. È spesso fonte di confusione per gli amministratori scoprire che un filesystem sta utilizzando grandi quantità di spazio che non può essere giustificato dalla semplice somma dei blocchi del disco (con qualcosa di simile du
). Molto spesso il motivo è che un file aperto è stato rimosso, in modo che non sia più rappresentato nella sua directory. Il motivo è che i blocchi del disco rimangono inutilizzati fino al termine dell'ultimo processo che utilizza il file.
Aprire un file e immediatamente unlink
installarlo è in realtà una pratica comune per la creazione di file sicuri e temporanei. Strumenti come lsof
questi possono esporre questi file altrimenti invisibili se cerchi file con un conteggio dei collegamenti (NLINK) pari a zero.
In Unix e Linux (di cui MacOS è un marchio Unix), rm
segue la filosofia Unix di "fai-da-te" senza fanfara, se possibile. Cioè, se hai i permessi per rimuovere un file (cioè la tua directory permette la scrittura), rm
fa esattamente quello che chiedi. È possibile che si desideri creare un alias di shell rm='rm -i'
che richiede conferma prima di eseguire l'operazione. Utilizzando l' -f
interruttore con rm
sostituzioni che, se necessario. Un alias rm
è molto utile quando glob
rimuovi like rm *.log
. Cioè, hai la possibilità di saltare un file nell'elenco.
A seconda del contenuto, ma è possibile utilizzare diversi software di terze parti per farlo, ad esempio:
e molti altri.
Puoi trovare altre app digitando "recupero dati" nell'App Store.
Il modo più avanzato è quello di avviare il tuo OSX in modalità di ripristino (o smontare la tua partizione se puoi) e cercarlo manualmente (se ricordi qualche testo specifico dal tuo script).
Qualche esempio:
diskutil list
sudo cat /dev/disk0s2 | strings | grep -C20 "my_stuff"