Einen Befehl "rm -rf ~" rückgängig machen?

115

Ich hatte einen Ordner namens '~', den ich nicht haben wollte, also habe ich ihn über die Befehlszeile eingegeben

rm -rf ~

und versehentlich meinen Home-Ordner gelöscht (seit ~ / home / username aufgelöst). Gibt es einen Weg zurück oder muss ich das Konto grundsätzlich von Grund auf neu erstellen?

Chris
quelle
18
Welches Dateisystem?
Tarnay Kálmán
6
Offensichtlich haben Sie Menschen keinen Sinn für Humor.
Blomkvist
21
Obwohl dies Ihre Frage nicht direkt beantwortet, wird rm -rf "~"mit Anführungszeichen nach diesem wörtlichen Namen gesucht, anstatt ihn zu erweitern. Aber ich hätte sowieso Angst davor, das zu verwenden - ich würde so etwas wie lsoder cdzuerst verwenden, um zu überprüfen, ob ich das richtige Verzeichnis habe, oder den Ordner aus einem GUI-Dateimanager löschen. Vielleicht erst das dir ( mv "~" tilde) umbenennen , verifizieren und dann entfernen.
Henrik N
2
Verwenden Sie rm künftig nicht mehr interaktiv in der Befehlszeile. Verwenden Sie ein Hilfsprogramm wie Trash und Sie können 1) nicht denselben Fehler erneut machen und 2) sich nicht an einen schlechten Shell-Alias ​​von rm gewöhnen, der Ihnen Probleme bereiten wird.
Fred Nurk
9
@HenrikN: ./~ anstelle von "~" macht dasselbe, funktioniert aber auch mit anderen häufig auftretenden problematischen Dateinamen, beispielsweise solchen, die mit Bindestrichen beginnen und wie Optionen aussehen.
Fred Nurk

Antworten:

148

Im Allgemeinen gibt es keinen einfachen Weg zurück.

Sie könnten von Ihrem täglichen Backup wiederherstellen.

RedGrittyBrick
quelle
194
Ihre Bemerkung zu Backups ist grausam und zu 100% zutreffend.
Benjamin Bannier
3
OS X legt die Messlatte für wie Sicherungen sollten arbeiten (vor allem mit Time Capsule). Unter maketecheasier.com/… finden Sie Vorschläge, wie Sie mit Ubuntu dasselbe erreichen können.
Thorbjørn Ravn Andersen
4
@ Thorbjørn Ravn Andersen - Es tut es, außer wenn Time Machine einen Nervenzusammenbruch hat. Ich hatte zweimal in sechs Monaten einen Freak-out an der Zeitmaschine.
Fake Name
Offsite-Backup ist großartig und kann ziemlich erschwinglich sein. Ich benutze Backblaze (Mac / Windows) für 5 USD / Computer / Monat. Viele Leute scheinen Crashplan zu mögen (Mac / Windows / Linux).
Henrik N
23
täglich was ????
Luc M
66

Andere (wie @RiMMER , @Adam und @James T ) haben erwähnt, dass es für die meisten Dateisysteme möglich ist, die meisten oder alle Daten (möglicherweise ohne Dateinamen) wiederherzustellen, da die Daten nicht tatsächlich auf Null gesetzt, sondern nur entfernt werden aus der Datei-Tabelle. Dies gilt nicht nur für Linux, sondern auch für Windows und Mac.

Niemand hat jedoch das Wichtigste erwähnt - Schalten Sie Ihren Computer aus. JETZT. .

Viele Programme - einschließlich des Internetbrowsers, den Sie gerade verwenden - speichern Daten auf der Festplatte und so ziemlich alles, was Sie tun, kann dazu führen, dass Ihr Computer die Größe der Auslagerungsdatei ändert oder in diese schreibt. Beides schreibt in freie Sektoren auf der Festplatte und überschreibt möglicherweise Ihre wertvollen Daten.

Schalten Sie daher Ihren Computer aus, nehmen Sie die Festplatte heraus und setzen Sie sie in einen anderen Computer ein. Hängen Sie die Festplatte schreibgeschützt ein und stellen Sie die Dateien auf einer separaten Festplatte wieder her. Wenn Sie alles wiederhergestellt haben, was Sie interessieren - und nur dann -, schreiben Sie die Dateien zurück auf das ursprüngliche Laufwerk.

BlueRaja - Danny Pflughoeft
quelle
11
Sogar das Herunterfahren kann auf die Festplatte schreiben. Ich bin zögerlich sofort zu empfehlen Ihren Computer ziehen, denn das ist auf jeden Fall Dinge machen kann viel schlimmer, aber ... na ja, je nachdem , wie wichtig die Daten, Sie könnte es zu betrachten.
BlueRaja - Danny Pflughoeft
1
Abhängig vom Laufwerk / Betriebssystem / Einhängepunkt kann es möglich sein, das Einhängen und / oder das erneute Einhängen sofort live durchzuführen, ohne den PC auszuschalten, dann herunterzufahren usw.
Matthew Scharley
1
killall rmanstatt auszuschalten.
Fred Nurk
1
Abhängig davon, wie groß Ihr Heimverzeichnis war und wie groß Ihre Festplatte ist, ist die Wahrscheinlichkeit, dass die freien Sektoren, die Ihre Daten enthalten, überschrieben werden, sehr gering.
Mike Speed
Sie können Textdateien mit dieser Methode ohne große Schwierigkeiten wiederherstellen (solange Sie eine ungefähre Vorstellung davon haben, was sich in ihnen befindet), aber Binärdateien sind so schwierig, dass sie im Grunde unmöglich sind.
Satanicpuppy
13

Ich bin der Meinung, dass jeder Linux-Benutzer zu einem bestimmten Zeitpunkt diese schmerzhafte Lektion aus erster Hand lernen muss, bevor er die Bedeutung von Backups erkennt, auf Details achtet und vorsichtig ist.

Wenn Sie beispielsweise seltsam aussehende Dateien löschen, können Sie zunächst Befehle für diese seltsam aussehende Datei ausführen, die keine Nebenwirkungen haben und keine Änderungen an Ihren Daten vornehmen. Warst du zum Beispiel weggelaufen?

cd ~

Bevor Sie versuchen, den Ordner zu löschen, hätten Sie festgestellt, dass stattdessen das Verzeichnis in Ihren Basisordner und nicht in den ~Ordner geändert wird . Sobald Sie genügend Schritte zur Fehlerbehebung durchlaufen den wahren Befehl zu lernen , müssen Sie richtig cdin die ~Ordner, dann könnten Sie Ihre Pfeiltaste nach oben drücken den letzten Befehl aus der Geschichte zu ziehen und dann ändern cdzu rmund dann und nur dann versuchen , den Ordner zu löschen .

Ich schlage vor, solche Schritte zu unternehmen, bevor Sie eine dauerhafte Aktion ausführen . Es ist nicht permanent oder narrensicher, aber Sie haben eine viel bessere Chance, diese Momente zu verhindern, wenn Sie diese Sorgfalt walten lassen, wenn Sie Aktionen ausführen, die Nebenwirkungen haben.

jmort253
quelle
4
Schau, bevor du springst und lsbevor du rm.
LawrenceC
7

Wenn Sie das ext3-Dateisystem verwenden, ist ext3grep Ihr neuer bester Freund. Ein gutes Tutorial (unter anderem) zur Verwendung von ext3grep finden Sie hier .

Adam Prax
quelle
6

Sie können versuchen, einzelne Dateien mit testdisk wiederherzustellen . Dies funktioniert anscheinend nur auf ext2 und NTFS (aber immer noch einen Versuch wert).

Wenn Sie ext3 oder ext4 haben, können Sie bekannte Dateien mit photorec wiederherstellen, was wahrscheinlich dazu führt, dass mehr wiederhergestellt werden, als Sie möchten. Photorec stellt Dateien ohne die Dateinameninformationen wieder her, so dass es mühsam sein kann, die Dateien zu durchsuchen.

James T
quelle
4

Wenn Sie ein ausreichend großes externes Laufwerk haben, haben Sie eine andere, möglicherweise sicherste Option. Sie benötigen genügend Speicherplatz, um die gesamte Home-Partition einschließlich des freien Speicherplatzes zu speichern.

Booten Sie von einer CD und hängen Sie das Home-Laufwerk überhaupt nicht an. Hängen Sie das externe Laufwerk ein. dd die Partition des Heimlaufwerks in eine Datei auf dem externen Laufwerk. Mounten Sie die Datei als Loopback-Gerät, und führen Sie die Wiederherstellungsarbeiten an diesem Image aus. Dabei können Sie sicher sein, dass Ihr ursprüngliches Dateisystem nicht beschädigt wird. Abhängig vom Dateisystem kann es viele Dinge geben, von denen einige möglicherweise destruktiv sind.

Dies hat mich einmal mit einer Beta-Version von Reiser4 gerettet, als ich nicht wusste, was es tun würde, selbst wenn ich es nur lesbar mounten würde. Ich habe irgendwo gelesen, dass Journalschreiben noch möglich war.

Es ist auch eine gute Technik zum Speichern von Daten von einem sterbenden Laufwerk.

Barrymac
quelle
1
+1 für die Erwähnung, dass bei den meisten FSs mit Journal sogar ein schreibgeschützter Mount Daten als Teil der Journalaktivität schreiben kann.
sleske
2

Es gibt Techniken zum Wiederherstellen von Dateien durch Überprüfen der nicht recycelten Inodes. Je mehr Daten Sie nach dem Löschen in das Dateisystem schreiben, desto unwahrscheinlicher ist es, dass Sie Ihre Daten wiederherstellen. Die beste Strategie zur Wiederherstellung nach versehentlichem Löschen von Daten ist die Wiederherstellung aus einer Sicherungskopie.

Xenoaktiv
quelle
2
alias rm="rm -i"

Angenommen, Sie verwenden die Bash-Shell (fügen Sie diese in Ihre .bashrc-Datei ein, damit sie für neue Shells erhalten bleibt, die Sie öffnen).

Dies sollte dazu führen, dass Sie aufgefordert werden, zu bestätigen, was Sie löschen möchten. Dies ist besonders dann hilfreich, wenn Sie -rf ausführen. Es wird jedoch auch "~" auf den vollständigen Pfad zu Ihrem Home-Verzeichnis in der Eingabeaufforderung erweitert, die Sie erhalten sollten Ein Hinweis, dass Sie nicht eine Datei '~' löschen, sondern Ihren Homedir.

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

Dies ist technisch gesehen keine Antwort auf Ihre Frage, kann Ihnen jedoch helfen, solche Probleme in Zukunft zu vermeiden.

BEARBEITEN: Einige Leute halten Sie möglicherweise davon ab, diese Technik zu verwenden, da Sie dadurch weniger vorsichtig mit dem Befehl "rm" sind. Nach meiner Erfahrung ist dies weit von der Wahrheit entfernt. In Wirklichkeit hat der Alias ​​zur Folge, dass Sie von der Verwendung von "rm -rf" abgehalten werden - da Sie wissen, dass dies zu vielen Eingabeaufforderungen führt, die Sie nicht beantworten möchten - und um eine "rm -rf" ohne Eingabeaufforderung zu erhalten msgstr "Sie müssen den Befehl rm absichtlich als / bin / rm (oder was auch immer) bezeichnen. Dies führt dazu, dass der Befehl "rm" im Allgemeinen sehr viel bewusster und bewusster verwendet wird - da Sie vor der Verwendung von rm immer eine mentale Auswahl von "rm" oder "/ bin / rm" treffen müssen -, und zwar sowohl auf Ihrem Server als auch auf allen anderen, die Sie ausführen eingeloggt sein bei. Und eine Welt, in der alle dachten, bevor sie rm verwendeten, wäre in der Tat sicherer!

aaa90210
quelle
2
Kommt auf das System an. -fÜberschreibt die -iOption mindestens unter RHEL5 und OS X 10.6 .
Daniel Beck
Das wusste ich nicht. Ich hänge meinen Rat an YMMV an und "versuche das nicht zu Hause oder, was noch wichtiger ist, bei der Arbeit"!
aaa90210
9
Wenn Sie dies tun, werden Sie eines Tages diesen Alias ​​nicht mehr haben - vielleicht sitzen Sie an einem anderen Computer oder Sie haben irgendwo einen SSH-Anschluss - und Sie werden rm verwenden, um an das Sicherheitsnetz gewöhnt zu sein. Sie werden etwas tun, was Sie bereuen.
Fred Nurk
1
@FredNurk Genau. Die beste Wette ist, einfach das -i selbst hinzuzufügen oder die -f-Option nicht zu verwenden.
Arda Xi
Wenn ich viele Dateien löschen muss, beginne ich mit rm -i my_list_of_files. Dann benutze ich STRG-C und rufe meinen Befehl auf, um ihn zu ändernrm -rvf my_list_of_files
Luc M
2

Es tut mir leid wegen Ihrer Daten. Alle anderen haben sich mit der Behandlung Ihres Datenproblems befasst. Hier finden Sie jedoch einige Informationen dazu, wie Sie beim nächsten Aufrufen eines Ordners vorgehen können ~.

  1. Finden Sie denjenigen, der es erstellt hat, und stellen Sie sicher, dass er es nie wieder tut.
  2. Verwenden Sie keine -rfoder verrückte Argumente, um den Löschvorgang auszuführen. Nehmen Sie es stattdessen schön langsam und stellen Sie sicher, dass Sie sehen können, was passiert. Sie können die Tilde eingeben, ohne dass sie in Ihr Ausgangsverzeichnis expandiert, indem Sie sie in der Shell maskieren. Theoretisch könnte rm -rI \~ man jedoch noch einen Schritt weiter gehen.
    1. Erstens, cd \~in diesen Ordner zu bekommen, vielleicht sogar nutzen , pwdum sicherzustellen , dass Sie dort ankamen. Zehn entfernen Sie den Inhalt, während Sie dort sind. Wieder vorsichtig sein, aber säubern Sie den Ordner mit rf -rI *und wenn Sie auch bekommen müssen .*.
    2. Gehen Sie nun mit zurück cd ..und entfernen Sie das Verzeichnis mit rmdir \~.
Caleb
quelle
1

Ich cd gerade .snapshot und stelle die Akten wieder her. Aber ich mache das bei der Arbeit und habe keine Ahnung, woher das .snapshot-Verzeichnis kommt. Ich dachte, vielleicht war es eine Linux-Funktion.

meBigGuy
quelle
1

Wiederherstellungstools - Befehlszeile:

Wiederherstellungstools - GUI:

Infos:

Nach meiner persönlichen Erfahrung bekomme ich meine Daten mit "UFS Explorer" und Photorec zurück

(1) = Nicht Open Source, nicht frei

(2) = Nicht Open Source, kostenlos

(3) = Open Source und kostenlos

(4) = Habe ntfs Unterstützung

(5) = Verfügt über eine Verzeichnisstrukturfunktion

intika
quelle
-3

rm ist für immer.

Obwohl dies Ihnen jetzt nicht hilft, könnten Sie in Zukunft rm nicht verwenden oder sich wirklich zwingen. Fügen Sie ein Skript mit dem Namen rm hinzu, das zuvor in Ihrem Pfad gefunden wurde und die Dateien in einen Papierkorbordner verschiebt, den Sie ein anderes Mal bereinigen (zulassen) Sie Fehler machen und nicht SOL sein).

Corey
quelle
7
Das einzige Problem dabei ist, dass Sie mit dem Befehl rm möglicherweise ein wenig schnell und locker werden und vergessen, dass Sie auf dem Linux-Server Ihres Unternehmens nicht über die praktische Wiederherstellungsfunktion verfügen ... oops ...
jmort253
2
-1 Das hat das gleiche Problem wie bei überstimmten Antworten (also werde ich den Kommentar eines anderen stehlen): Eines Tages ist dieses Skript nicht installiert - vielleicht sitzt du an einem anderen Computer oder hast irgendwo eine SSH-Verbindung - und Sie werden rm verwenden, um an das Sicherheitsnetz gewöhnt zu sein, und Sie werden etwas tun, das Sie bereuen.
DMA57361,
@ Corey Obwohl ich damit einverstanden bin, dass dies eine schlechte Gewohnheit verursachen könnte, +1, weil diese Antwort zu stark herabgestuft wurde
John Militer