Annullare un comando "rm -rf ~"?


115

Avevo una cartella che non volevo denominata '~', quindi dalla riga di comando ho digitato

rm -rf ~

e accidentalmente cancellato la mia cartella home (poiché ~ risolto in / home / nome utente). Esiste un modo per tornare indietro o devo fondamentalmente ricreare l'account da zero?


18
Quale file system?
Tarnay Kálmán,

6
Chiaramente voi gente non avete senso dell'umorismo.
Blomkvist,

21
Anche se questo non risponde direttamente alla tua domanda, rm -rf "~"tra virgolette cercherà quel nome letterale invece di espanderlo. Ma avrei paura di usarlo comunque: userei qualcosa del genere lso cdprima per verificare di avere la directory giusta, o eliminare la cartella da un file manager della GUI. Forse prima rinominare dir ( mv "~" tilde), verificare e quindi rimuovere.
Henrik N,

2
Per il futuro, non usare rm in modo interattivo dalla riga di comando. Usa un'utilità come spazzatura e tu 1) non puoi ripetere lo stesso errore e 2) non puoi abituarti a un alias di shell scadente di rm che ti causerà problemi.
Fred Nurk,

9
@HenrikN: ./~ invece di "~" fa lo stesso, ma funziona anche con altri nomi di file problematici comuni, come quelli che iniziano con trattini e sembrano opzioni.
Fred Nurk,

Risposte:


148

In generale non esiste un modo semplice per tornare indietro.

È possibile ripristinare dal backup giornaliero.


194
La tua osservazione sui backup è crudele e al 100% al punto.
Benjamin Bannier,

3
OS X imposta la barra su come dovrebbero funzionare i backup (specialmente con Time Capsule). Vedi maketecheasier.com/… per suggerimenti su come ottenere un po 'la stessa cosa con Ubuntu.
Thorbjørn Ravn Andersen,

4
@ Thorbjørn Ravn Andersen - Lo fa, tranne quando Time Machine ha un esaurimento nervoso. Ho avuto una macchina del tempo che mi ha dato di matto due volte in sei mesi.
Nome falso

Il backup fuori sede è eccezionale e può essere abbastanza conveniente. Uso Backblaze (Mac / Windows) a $ 5 / computer / mese. Molte persone sembrano apprezzare Crashplan (Mac / Windows / Linux).
Henrik N,

23
ogni giorno cosa ????
Luc M,

66

Altri (come @RiMMER , @Adam e @James T ) hanno menzionato che, per la maggior parte dei filesystem, è possibile recuperare la maggior parte o tutti i tuoi dati (forse senza nomi di file), perché i dati non sono effettivamente azzerati, rimossi solo dalla tabella dei file. Questo non è solo vero per Linux, lo stesso vale per Windows e Mac.

Tuttavia, nessuno ha menzionato la cosa più importante: SPEGNERE IL TUO COMPUTER. ADESSO. .

Molti programmi, incluso il browser Internet che stai utilizzando in questo momento, memorizzeranno i dati sul disco rigido e praticamente qualsiasi cosa tu faccia può causare il ridimensionamento / scrittura del tuo computer nel file di scambio. Entrambe queste cose scriveranno su settori liberi sul disco rigido, sovrascrivendo potenzialmente i tuoi dati preziosi.

Quindi, spegnere il computer, estrarre il disco rigido e inserirlo in un altro computer. Montare il disco rigido in sola lettura e ripristinare i file su un disco rigido separato. Quando hai recuperato tutto ciò che ti può interessare - e solo allora - riscrivi i file sul disco originale.


11
Anche il processo di spegnimento può scrivere sul disco rigido. Sono riluttanti a raccomandare immediatamente di scollegare il computer, perché questo può sicuramente rendere le cose molto peggiori, ma ... be ', a seconda di quanto sia importante il dato è, si potrebbe desiderare di prendere in considerazione.
BlueRaja - Danny Pflughoeft

1
A seconda dell'unità / sistema operativo / punto di montaggio, potrebbe essere possibile smontare immediatamente e / o rimontare immediatamente dal vivo senza spegnere il PC, quindi spegnere, ecc.
Matthew Scharley,

1
killall rminvece di spegnere.
Fred Nurk,

1
A seconda della dimensione della directory principale e della dimensione del disco rigido, le possibilità di sovrascrivere i settori gratuiti che contengono i dati sono piuttosto scarse.
Mike Speed,

Puoi recuperare file di testo usando questo metodo senza troppe difficoltà (purché tu abbia una vaga idea di cosa ci sia dentro), ma i file binari sono così difficili da essere praticamente impossibili.
Satanicpuppy,

13

Credo che ogni utente di Linux in un determinato momento debba imparare da vicino questa dolorosa lezione prima di imparare davvero l'importanza dei backup, oltre a prestare attenzione ai dettagli ed essere attento.

Ad esempio, se stai eliminando file dall'aspetto strano, puoi prima eseguire comandi su quel file strano che non hanno effetti collaterali e che non apportano modifiche ai tuoi dati. Ad esempio, hai corso

cd ~

prima di provare a eliminare la cartella, avresti visto che avrebbe invece cambiato la directory nella tua cartella home, non nella ~cartella. Una volta che hai eseguito abbastanza passaggi per la risoluzione dei problemi per imparare il vero comando che dovresti inserire correttamente cdnella ~cartella, allora puoi premere il tasto freccia su per estrarre l'ultimo comando dalla cronologia e poi cambiare cdin rme poi e solo e poi provare a eliminare la cartella .

Suggerisco di fare passi come questo prima di eseguire qualsiasi azione permanente. Non è permanente o infallibile, ma hai molte più possibilità di prevenire quei momenti di oops se prendi questo grado di cura quando esegui azioni che hanno effetti collaterali.


4
Guarda prima di saltare e lsprima di te rm.
LawrenceC

7

Se stai usando il filesystem ext3, ext3grep è il tuo nuovo migliore amico. Un buon tutorial (tra molti altri) sull'uso di ext3grep può essere trovato qui .


6

Puoi provare a utilizzare testdisk per ripristinare i singoli file . Funziona solo su ext2 e NTFS (ma vale comunque la pena provare).

Se hai ext3 o ext4, puoi recuperare i file conosciuti usando photorec , che probabilmente finirà per recuperare più di quanto desideri. Photorec recupera i file senza le informazioni sul nome file, quindi può essere noioso passare attraverso i file.


4

Se si dispone di un'unità esterna sufficientemente grande, è possibile scegliere un'altra opzione più sicura. Avrai bisogno di spazio sufficiente per memorizzare l'intera partizione domestica, incluso lo spazio libero.

Avvia da un CD e non montare affatto l'unità principale. Montare l'unità esterna. dd la partizione dell'unità home in un file sull'unità esterna. monta il file come dispositivo di loopback esegui il lavoro di eliminazione su questa immagine, sicuro che non puoi danneggiare il tuo file system originale. A seconda del filesystem ci possono essere molte cose da provare, alcune delle quali potenzialmente distruttive.

Questo mi ha salvato una volta con una versione beta di Reiser4 quando non sapevo cosa avrebbe fatto anche se l'avessi montato in sola lettura. Ho letto da qualche parte che all'epoca era ancora possibile scrivere sul diario.

È anche una buona tecnica per salvare i dati da un'unità morente.


1
+1 per menzionare che sulla maggior parte delle FS registrate su giornale, anche una montatura di sola lettura può scrivere dati come parte delle attività del journal.
sleske,

2

Esistono tecniche per recuperare i file controllando gli inode che non sono stati riciclati. Più dati si scrivono nel file system dopo l'eliminazione, meno è probabile che si recuperino i dati. La migliore strategia per il ripristino da una cancellazione accidentale dei dati è il ripristino dal backup.


2
alias rm="rm -i"

Supponendo che tu stia usando la shell Bash (mettila nel tuo file .bashrc in modo che persista con le nuove shell che apri).

Ciò dovrebbe comportare che rm ti chieda di confermare ciò che vuoi eliminare, il che è bello soprattutto quando stai facendo -rf, ma espanderà anche '~' nel percorso completo della tua home directory nel prompt, che dovrebbe darti un indizio non stai cancellando un file '~' ma in realtà il tuo homedir.

$ rm -rf ~
rm: examine files in directory /nas/users/u12345/unix (yes/no)? n

Questa non è tecnicamente una risposta alla tua domanda, ma potrebbe aiutarti a evitare tale problema in futuro.

EDIT: Alcune persone potrebbero scoraggiarti dall'utilizzare questa tecnica in quanto ti rende meno attento con il comando "rm". Nella mia esperienza questo è lontano dalla verità. In realtà, l'effetto dell'alias è di scoraggiarti dall'usare "rm -rf" - come sai, si tradurranno in molti prompt a cui non vuoi rispondere - e per ottenere un "rm -rf" "devi fare deliberatamente riferimento al comando rm come / bin / rm (o qualsiasi altra cosa). Questo porta ad un uso molto più consapevole e deliberato del comando "rm" in generale - poiché è sempre necessario precedere l'uso di rm con una scelta mentale di "rm o / bin / rm" - sia sul server che su qualsiasi altro evento. per accedere. E un mondo in cui tutti pensavano prima di usare rm sarebbe davvero più sicuro!


2
Dipende dal sistema in cui ti trovi. Almeno su RHEL5 e OS X 10.6, -fsostituisce l' -iopzione.
Daniel Beck

Non lo sapevo. Allego il mio consiglio con YMMV e "non provatelo a casa, o probabilmente ancora più importante al lavoro"!
aaa90210,

9
Se lo fai, un giorno non avrai questo alias in atto - forse sei seduto su un altro computer o ti sei messo da qualche parte - e userai rm che viene utilizzato per la rete di sicurezza. Farai qualcosa di cui ti pentirai.
Fred Nurk,

1
@FredNurk Esattamente. La scommessa migliore è semplicemente aggiungere -i tu stesso, o semplicemente non usare l'opzione -f.
Arda Xi,

Quando ho molti file da eliminare, inizio con rm -i my_list_of_files. Quindi uso CTRL-C e ricordo il mio comando per modificarlo inrm -rvf my_list_of_files
Luc M

2

Mi dispiace per i tuoi dati. Tutti gli altri hanno risposto a come gestire il problema dei dati, ma ecco alcune informazioni su come gestire la prossima volta che vedrai una cartella annullata ~.

  1. Trova chi l'ha creato e assicurati di non farlo mai più.
  2. Non usare -rfargomenti folli e potenti per rm per fare l'eliminazione. Invece prendilo bello e lento e assicurati di poter vedere cosa sta succedendo. È possibile inserire la tilde senza che si espanda nella home directory sfuggendola nella shell. In teoria si potrebbe rm -rI \~ , ma è possibile fare un passo avanti.
    1. In primo luogo, cd \~per entrare in quella cartella, forse anche usare pwdper verificare che ci sei arrivato. Dieci rimuovono i contenuti mentre sei lì. Ancora una volta rf -rI *stai attento ma pulisci la cartella con e se hai bisogno di prenderla .*.
    2. Ora torna indietro con cd ..e rimuovi la directory con rmdir \~.

1

Ho appena cd .snapshot e ripristino i file. Ma lo faccio al lavoro e non ho idea di condividere la directory .snapshot. Pensavo che forse fosse una funzionalità Linux.


1

Strumenti di recupero - Riga di comando:

Strumenti di recupero - Gui:

Informazioni:

Nella mia esperienza personale ho recuperato i miei dati usando "UFS Explorer" e photorec

(1) = Non open source, non gratuito

(2) = Non open source, gratuito

(3) = Open source e gratuito

(4) = Supporto per NTFS

(5) = Funzione di struttura delle directory


-3

rm è per sempre.

Anche se questo non ti aiuta ora, in futuro potresti non usare rm o forzarti davvero, aggiungere uno script trovato in precedenza nel tuo percorso chiamato rm che sposta i file in una cartella del cestino che ripulisci qualche altra volta (consentendo a fare errori e non essere SOL).


7
L'unico problema con questo è che potresti diventare un po 'veloce e sciolto con il comando rm e dimenticare che non hai la comoda funzionalità di ripristino sul server Linux della tua azienda ... oops ...
jmort253

2
-1 Questo ha lo stesso problema delle risposte sotto-votate (quindi ruberò il commento di qualcun altro): un giorno non avrai questo script in atto - forse sei seduto su un altro computer o hai sparato da qualche parte - e userete rm usato nella rete di sicurezza e farete qualcosa di cui vi pentirete.
DMA57361

@Corey Anche se concordo sul fatto che ciò potrebbe causare un brutto habbit, +1 perché questa risposta è stata sottoposta a un
voto
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.