Come recuperare un file rimosso sotto Linux?
Per caso, ho usato rm
su un file che non volevo cancellare. C'è un modo per recuperarlo sotto Linux?
Per caso, ho usato rm
su un file che non volevo cancellare. C'è un modo per recuperarlo sotto Linux?
I seguenti sono passi generici per recuperare i file di testo.
Per prima cosa usare il comando a muro per dire all'utente che il sistema sta andando giù in modalità utente singolo:
Usare il comando init 1 per portare il sistema in una modalità a singolo utente:
Usare il comando init 1 per portare il sistema in una modalità a singolo utente. 3. Usare grep (modo tradizionale UNIX) per recuperare i file:
Usare grep (modo tradizionale UNIX) per recuperare i file:
Usare grep (modo tradizionale UNIX) per recuperare i file:
Poi usare vi per vedere file.txt.
Trovato a http://www.cyberciti.biz/tips/linuxunix-recover-deleted-files.html
dd
e cercate di trovare il file al suo interno (usando grep
, o un editor). Modifica: a volte ddrescue
funziona meglio di dd
.
L'ho fatto un paio di anni fa. Il mio approccio è stato quello di smontare direttamente, senza perdere tempo, smontare la partizione e poi
dd if=/dev/hda1 of=backup_image.ext3
per avere un file di backup dell'esatto stato della partizione. Poi si può montare di nuovo la partizione e continuare con le solite operazioni, mentre si cerca il file cancellato nell'immagine creata. L'immagine sarà probabilmente MOLTO grande dato che avete bisogno di tutto lo spazio “vuoto”, quindi potrebbe essere un problema pratico per memorizzarla.
Allora era solo per eseguire delle noiose ricerche dopo i frammenti di testo che mi aspettavo di trovare da qualche parte nel brodo del contenuto della partizione. Per esempio, per trovare i file .tex, ho eseguito
grep --binary-files=text -1000 "subsection" < backup_image.ext3 > latexfiles
che ha stampato un grande contesto intorno alla frase “sottosezione” e ha salvato l'output in un file da cercare manualmente. Ho stampato un contesto così grande perché ci è voluto così tanto tempo per cercare l'immagine che preferirei non farlo più volte del dovuto.
Anche il comando strings
è stato utile per rimuovere l'immondizia binaria dall'output, ma se ricordo bene ha anche spogliato tutte le nuove righe, il che potrebbe essere un problema.
Per trovare i file binari allo stesso modo, si potrebbe riuscire a trovare un'intestazione caratteristica o qualcosa di un certo file, ma immagino che sia un'avventura piuttosto grande.
Brevi note tecniche: ci sono difficoltà tecniche con il recupero del disco e con Ext3/4. È una cosa lunga da spiegare, ma breve (e inadeguata): Ext3/4 rimuove i “marcatori” che indicano al sistema operativo dove si trovano i file sul disco quando li si elimina. I file non vengono cancellati, ma nessuno sa più dove iniziano e dove finiscono sul disco, e a volte sono anche frammentati in più punti. Alcuni altri file system si limitano ad impostare lo stato dei file su “cancellati”, ma mantengono i dati di localizzazione. Quindi undelete non è più difficile che guardare i puntatori dei file con questo flag (dovrebbero essere ancora disponibili se non si è verificata troppa attività), e poi sperare che il loro contenuto non sia stato sovrascritto.
Cosa è meglio? Retorico, secondo me. Il backup frequente è la risposta a tutti questi problemi. I dati importanti senza un sistema di backup automatizzato sono un incidente in attesa di accadere, IMHO.
Aneddoto personale obbligatorio: Stavo per rimuovere foo\ foo*
da ~
. Ho scritto
rm -r foo<Tab>*
``` ```
rm -r foo\ foo *
, che purtroppo, dato che foo
apparentemente era un collegamento simbolico e l'unico file che corrispondeva a questo, il guscio trasformato in
&001
ho premuto Invio e mi sono seduto lì a guardare il comando, che avrebbe dovuto richiedere al massimo un secondo. Dopo un po’ più di tempo rm
mi ha chiesto se volevo “rimuovere il file protetto da scrittura ‘qualcosa’”.abbastanza velocemente ho sentito i brividi e ho premuto Ctrl+c
in modo dolce e molto controllato. ~Metà del mio ~
è stato cancellato, ma sono riuscito a recuperare tutto ciò che aveva un valore attraverso il grepping sopra descritto e alcuni backup più o meno attuali. Personalmente avevo alcuni dati di misura molto preziosi (leggi: tempo di lavoro) e molto recenti su disco che sono andati persi, ma avevo fatto quadrupli backup. Uno è scomparso qui, un altro a causa di un'interruzione del sistema a scuola, un altro era corrotto, e all'inizio non riuscivo a trovare il quarto, perché per errore l'avevo messo nella cartella sbagliata :-D . Se rm -r
non fosse rimasto bloccato su un file protetto da scrittura, il quarto sarebbe stato mangiato da quando quella cartella è stata montata tramite sshfs nel mio ~
. Da allora sono molto più attento a questo tipo di cose.
L'unica risposta corretta è: ripristinare il file dal backup. Tutti devono avere un backup. Per i file veramente importanti, si dovrebbero avere due backup. Non ce l'hai? Beh, peccato, ecco una lezione imparata ( Scusa se sembro duro, ma sono in un archivio dati, e le persone non fanno il backup fino a quando non perdono alcuni dati importanti, questo è un dato di fatto. Quindi sì, sembri stupido, ma lo sono quasi tutti gli altri).
OK, non hai un backup. devi stop usando il filesystem che conteneva il file DESTRA ORA. Qualsiasi attività di scrittura può sicuramente innaffiare i dati del file che può (solo può) rimanere sul disco.
se avete fatto il tragico errore di usare una sola partizione sia come filesystem di root che come /home, questo significa che dovete avviare da qualche altro dispositivo. NOW.
se il vostro file è di qualche formato comune (file Word, JPG, ecc.), usate Photorec . Photorec può recuperare i formati di file più comuni.
Si può provare il metodo “ext3 undelete” proposto in precedenza, ma bisogna essere a proprio agio con la riga di comando, capire il funzionamento interno di base di linux, ecc.
Se il vostro file è di qualche formato speciale, che sfortuna. Una volta ho scritto un programma Perl per scansionare un disco alla ricerca di alcuni file speciali, e ha funzionato abbastanza bene; ma è necessario conoscere un po’ di programmazione per farlo, ed essere a proprio agio anche con linux.
Se è lo standard rm , spero che tu abbia un backup. La procedura per recuperare un file cancellato sarebbe diversa per ogni file system, se possibile. Linux non ha un “cestino” integrato; una volta che si cancella un file, è tutto fuorché andato.
In qualsiasi modo lo si faccia, si vorrà scollegare il computer – il più presto possibile, poiché continuare a far funzionare il computer (anche per spegnerlo) provoca scritture sul disco e aumenta la possibilità che alcuni blocchi precedentemente occupati dal file vengano sovrascritti. Una volta fatto questo, o lo si mette in un altro computer, si riavvia da un live CD (facendo attenzione a non montare il disco a meno che non lo si monti in sola lettura), oppure si rimuove il disco rigido e lo si porta ad uno specialista di recupero dati.
Ridimensionate le vostre aspettative. Se qualcosa è stato scritto sopra i dati “cancellati”, lo perderete.
Ho fatto una piccola quantità di recupero e i migliori strumenti che ho trovato sono stati spesso progettati verso alcuni formati. Per esempio ‘photorec’ era ottimo quando volevo recuperare decine di migliaia di jpeg. Recuva mi ha anche aiutato in passato e potrebbe essere la vostra scelta migliore. (E’ gratis, non fatevi ingannare dai loro annunci)
Alla fine della giornata, se quello che avete perso è importante, prendete il disco offline e smettete di scriverci. Utilizzare ogni pezzo di software di recupero che si può trovare fino a quando non si ottiene i dati indietro o smette di essere valsa la pena. Se è davvero importante, inviatelo a professionisti ad un prezzo elevato.
Se avete avuto fortuna con uno strumento prima, provatelo di nuovo visto che lo conoscete bene. Alla fine della giornata, non dovrebbero scrivere su disco e quindi puoi usare un software fino a quando non ne trovi uno che funziona.
Se avete un'applicazione aperta che sta leggendo il file, come VLC o LibreOffice, allora questa fantastica risposta di L&U.SO mi ha aiutato ad uscire da questo pasticcio. Ecco un metodo alternativo per fare lo stesso.
L'idea generale è quella di trovare il link in /proc/PID/fd/DESCRIPTOR_NUMBER
e copiarlo nella sua posizione originale. Usare ps aux | grep APP_NAME
per trovare il PID e poi ls -la /proc/PID/fd/
per trovare il DESCRIPTOR_NUMERO appropriato.
Se non viene sovrascritto da altri utenti, allora siete fortunati. Ho accidentalmente cancellato il mio file sorgente cpp e ho usato uno strumento chiamato foremost , che mi ha aiutato a ripristinare i detriti cpp 60G dal disco. Infine, ho recuperato il mio file assemblando quei detriti pezzo per pezzo. Penso che scansiona un certo modello per un tipo di file specifico e attraversa tutti gli inode sul disco per recuperare i file! Provate a fare una prova!
La risposta “corretta” è supporre che non ci sia un metodo per recuperare in modo affidabile, e invece ripristinare da backup o da un sistema clonato o reinstallare.
TestDisk è un grande strumento, e ci sono altri modi per essere in grado di salvare alcuni dati dal disco fisico a seconda del file system e della frequenza di cancellazione, ma il tempo e il dolore coinvolti possono essere semplicemente troppo grandi, quindi KEEP BACKUPS (e anche testare che siano validi e ripristinabili)!
Ecco un grande documento per voi. Troverete un sacco di consigli pratici.
BTW, ci sono due gruppi di persone:
Congratulazioni, ti sei appena promosso al gruppo 2. ;-)
Se accidentalmente avete cancellato il file da Linux allora potete usare questo comando:
find /root -name "search text" -type f -exec mv {} "/home" \;
al posto di search text
potete mettere il nome del file e potete specificare la directory dove volete ripristinare al posto di /home
.
Potete provare questo script. Funziona bene ed è pensato per essere usato al posto di rm e im usarlo ampiamente ora. https://github. com/nateshmbhat/safe-rm
rm
Ho avuto lo stesso problema la scorsa settimana e ho provato molti programmi, come debugfs, photorec, ext3grep ed extundelete. ext3grep era il miglior programma per recuperare i file. La sintassi è molto facile:
ext3grep image.img --restore-all
``` ```
ext3grep /dev/sda3 --restore-all --after date -d '2015-01-01 00:00:00' '+%s' --before `date -d ‘2015-01-02 00:00:00’ ‘+%s’
o:
&001 Questo video mostra è un mini tutorial che può aiutarti.