Wie kann man eine entfernte Datei unter Linux wiederherstellen?
Versehentlich habe ich rm
für eine Datei verwendet, die ich nicht löschen wollte. Gibt es eine Möglichkeit, wie ich sie unter Linux wiederherstellen kann?
Versehentlich habe ich rm
für eine Datei verwendet, die ich nicht löschen wollte. Gibt es eine Möglichkeit, wie ich sie unter Linux wiederherstellen kann?
Im folgenden werden allgemeine Schritte zur Wiederherstellung von Textdateien beschrieben:
Verwenden Sie zunächst den Befehl wall, um dem Benutzer mitzuteilen, daß das System in einem Einzelbenutzermodus heruntergefahren wird:
Verwenden Sie als nächstes den Befehl init 1, um das System in einen Einzelbenutzermodus zu versetzen:
Verwenden Sie grep (traditionelle UNIX-Methode), um Dateien wiederherzustellen:
Als nächstes verwenden Sie vi, um die Datei file.txt zu sehen:
Gefunden bei http://www.cyberciti.biz/tips/linuxunix-recover-deleted-files.html
dd
in eine Datei und versuchen Sie, die Datei darin zu finden (mit grep
oder einem Editor). Bearbeiten: manchmal ddrescue
funktioniert besser als dd
.
Ich habe das vor ein paar Jahren gemacht. Mein Ansatz war, direkt, ohne Zeit zu verlieren, die Partition zu unmounten und dann
dd if=/dev/hda1 of=backup_image.ext3
, um eine Sicherungsdatei mit dem genauen Zustand der Partition zu haben. Dann können Sie die Partition wieder mounten und wie gewohnt mit der Suche nach der gelöschten Datei in Ihrem erstellten Image fortfahren. Das Image wird wahrscheinlich SEHR groß sein, da Sie den ganzen “leeren” Platz benötigen, so daß es ein praktisches Problem sein könnte, es zu speichern.
Dann war es nur, um langweilige Suchen nach Textausschnitten durchzuführen, von denen ich erwartet hatte, daß sie irgendwo in der Suppe des Partitionsinhalts liegen. Um z.B. .tex-Dateien zu finden, ließ ich
grep --binary-files=text -1000 "subsection" < backup_image.ext3 > latexfiles
rm -r foo<Tab>*
laufen, was einen großen Kontext um die Phrase “Unterabschnitt” druckte und die Ausgabe in eine Datei speicherte, die manuell durchsucht werden konnte. Ich habe einen so großen Kontext gedruckt, da es so lange dauerte, das Bild zu durchsuchen, dass ich es lieber nicht öfter als nötig machen möchte.
Auch der Befehl strings
war hilfreich, um binären Müll aus der Ausgabe zu entfernen, aber wenn ich mich richtig erinnere, hat er auch alle Zeilenumbrüche entfernt, was ein Problem sein könnte.
Um Binärdateien auf die gleiche Weise zu finden, könnte man vielleicht Erfolg haben, einen charakteristischen Header oder so etwas von einer bestimmten Datei zu finden, aber ich stelle mir das als ein ziemlich großes Abenteuer vor.
Kurze technische Anmerkungen: Es gibt technische Schwierigkeiten mit der Plattenwiederherstellung und Ext3/4. Es ist eine lange Sache, das zu erklären, aber kurz (und unzulänglich): Ext3/4 entfernt die “Markierungen”, die dem Betriebssystem mitteilen, wo sich Dateien auf der Platte befinden, wenn Sie sie löschen. Die Dateien werden nicht gescrubbt, aber niemand weiß mehr, wo auf der Platte sie beginnen und enden, und manchmal sind sie sogar an mehreren Stellen fragmentiert. Einige andere Dateisysteme setzen den Status der Dateien einfach auf “gelöscht”, behalten aber die Standortdaten. Dann ist Undelete nicht schwieriger, als sich Dateizeiger mit diesem Flag anzusehen (sie sollten immer noch verfügbar sein, wenn nicht zu viel Aktivität stattgefunden hat), und dann zu hoffen, dass ihr Inhalt nicht überschrieben wurde.
Was ist das Beste? Rhetorisch, meiner Meinung nach. Eine häufige Sicherung ist die Antwort auf all diese Probleme. Wichtige Daten ohne ein automatisiertes Backup-System sind ein Unfall, der darauf wartet zu passieren, IMHO.
Obligatorische persönliche Anekdote: Ich wollte foo\ foo*
aus ~
entfernen. Ich schrieb
rm -r foo\ foo *
, was leider, da foo
offenbar ein Symlink war und die einzige Datei, die dazu passte, die Shell zu
&001
machte, ich drückte die Eingabetaste und saß da und sah mir den Befehl an, was höchstens eine Sekunde hätte dauern dürfen. Nach etwas längerer Zeit fragte mich rm
, ob ich “die schreibgeschützte Datei ‘irgendwas’ entfernen wolle”. Ziemlich schnell fühlte ich ein Frösteln und drückte leise und sehr kontrolliert Ctrl+c
. ~Die Hälfte meiner ~
wurde gelöscht, aber ich schaffte es, durch das oben beschriebene Greifen und einige mehr oder weniger aktuelle Backups alles Wertvolle wieder zu bekommen. Ich hatte einige persönlich sehr wertvolle (sprich: zeitraubende) und sehr aktuelle Messdaten auf Platte, die verloren gingen, aber ich hatte vierfache Backups gemacht. Eine verschwand hier, eine andere aufgrund eines Systemausfalls in der Schule, eine weitere war beschädigt, und die vierte konnte ich zunächst nicht finden, da ich sie versehentlich in den falschen Ordner :-D gelegt hatte. Hätte sich rm -r
nicht in einer schreibgeschützten Datei verklemmt, wäre die vierte gefressen worden, da dieser Ordner über sshfs in meinem ~
gemountet wurde. Seitdem bin ich viel vorsichtiger mit solchen Sachen.
Die einzige richtige Antwort lautet: Stellen Sie Ihre Datei aus der Sicherung wieder her. Jeder muss ein Backup haben. Für wirklich wichtige Dateien sollten Sie zwei Backups haben. Haben Sie keine? Tja, schade, hier ist eine Lektion, die wir gelernt haben ( Entschuldigen Sie, dass ich hart klinge, aber ich bin in der Datenspeicherung, und die Leute machen keine Backups, bevor sie nicht einige wichtige Daten verloren haben, das ist eine gegebene Tatsache. Also ja, Sie sehen dumm aus, aber das sind fast alle anderen auch).
OK, Sie haben kein Backup. Sie müssen jetzt aufhören, das Dateisystem zu benutzen, das die Datei JETZT RECHTS enthielt. Jede Schreibaktivität kann definitiv die Dateidaten, die möglicherweise (nur möglicherweise) auf der Platte verbleiben, mit einem Schlauch versehen.
wenn Sie den tragischen Fehler gemacht haben, nur eine Partition sowohl als Root-Dateisystem als auch als /home zu benutzen, bedeutet das, daß Sie von einem anderen Gerät booten müssen. **
Wenn Ihre Datei ein gängiges Format hat (Word-Datei, JPG usw.), verwenden Sie Photorec . Photorec kann die meisten gebräuchlichen Dateiformate abrufen.
Sie können die zuvor vorgeschlagene “ext3 undelete”-Methode ausprobieren, aber Sie müssen sich mit der Befehlszeile auskennen, das grundlegende Innenleben von Linux verstehen usw.
Wenn Ihre Datei ein spezielles Format hat, haben Sie Pech gehabt. Ich habe einmal ein Perl-Programm geschrieben, um ein Laufwerk nach einigen speziellen Dateien zu durchsuchen, und es funktionierte ziemlich gut; aber Sie müssen etwas von Programmierung verstehen, um das zu tun, und sich auch mit Linux recht gut auskennen.
Wenn es der Standard rm ist, hoffe ich, Sie haben eine Sicherheitskopie. Das Verfahren zur Wiederherstellung einer gelöschten Datei wäre für jedes Dateisystem anders, wenn es überhaupt möglich ist. Linux hat keinen eingebauten “Papierkorb”; sobald Sie eine Datei gelöscht haben, ist sie so gut wie verschwunden.
Wie auch immer Sie es machen, Sie werden den Computer so schnell wie möglich vom Netz trennen wollen – so bald wie möglich, da das Weiterlaufen des Computers (sogar das Herunterfahren) Schreibzugriffe auf die Platte verursacht und die Wahrscheinlichkeit erhöht, dass einige Blöcke, die früher von der Datei belegt waren, überschrieben werden. Wenn Sie das getan haben, legen Sie ihn entweder in einen anderen Computer ein, starten Sie eine Live-CD neu (achten Sie darauf, das Laufwerk nicht zu mounten, es sei denn, Sie mounten es schreibgeschützt), oder entfernen Sie die Festplatte und bringen Sie sie zu einem Datenwiederherstellungs-Spezialisten.
Setzen Sie Ihre Erwartungen niedrig an. Wenn etwas über die “gelöschten” Daten geschrieben wurde, werden Sie es verlieren.
Ich habe eine kleine Menge an Wiederherstellung durchgeführt, und die besten Tools, die ich gefunden habe, waren oft auf bestimmte Formate ausgerichtet. Zum Beispiel war ‘photorec’ großartig, wenn ich Zehntausende von Jpegs wiederherstellen wollte. Recuva hat mir auch schon früher geholfen und könnte Ihre beste Wahl sein. (Es ist kostenlos, lassen Sie sich nicht dazu verleiten, durch ihre Anzeigen zu bezahlen)
Am Ende des Tages, wenn das, was Sie verloren haben, wichtig ist, nehmen Sie das Laufwerk offline und hören Sie auf, darauf zu schreiben. Benutzen Sie jedes Stück Wiederherstellungssoftware, das Sie finden können, bis Sie Ihre Daten zurückbekommen oder es sich nicht mehr lohnt. Wenn es wirklich wichtig ist, schicken Sie es zu einem hohen Preis an Fachleute.
Wenn Sie schon einmal Glück mit einem Tool hatten, versuchen Sie es noch einmal, so gesehen, wie Sie es kennen. Letztendlich sollten sie nicht auf die Festplatte schreiben, und so können Sie Software benutzen, bis Sie eine finden, die funktioniert.
Wenn Sie eine Anwendung geöffnet haben, die die Datei gerade liest, wie VLC oder LibreOffice, dann diese großartige Antwort von L&U.SO hat mir aus diesem Schlamassel geholfen. Hier ist eine alternative Methode , um das Gleiche zu tun.
Die allgemeine Idee ist, den Link in /proc/PID/fd/DESCRIPTOR_NUMBER
zu finden und ihn zurück an seinen ursprünglichen Ort zu kopieren. Verwenden Sie ps aux | grep APP_NAME
, um die PID zu finden, und dann ls -la /proc/PID/fd/
, um die richtige DESCRIPTOR_NUMMER zu finden.
Wenn es nicht von anderen Benutzern überschrieben wird, dann haben Sie Glück gehabt. Ich löschte versehentlich meine cpp-Quelldatei und benutzte ein Tool namens foremost , das mir half, 60G-cpp-Trümmer von der Platte wiederherzustellen. Schließlich habe ich meine Datei wiederhergestellt, indem ich diese Trümmer Stück für Stück zusammensetzte. Ich glaube, es durchsucht bestimmte Muster nach einem bestimmten Dateityp und durchläuft alle Inodes auf der Platte, um Dateien wiederherzustellen! Probieren Sie es einfach aus!
Die “richtige” Antwort ist die Annahme, dass es keine Methode gibt, um zuverlässig wiederherzustellen, und stattdessen von Backups oder einem geklonten System wiederherzustellen oder neu zu installieren.
TestDisk ist ein großartiges Tool, und es gibt andere Möglichkeiten, einige Daten vom physischen Laufwerk je nach Dateisystem und Aktualität der Löschung zu retten, aber der Zeit- und Arbeitsaufwand kann einfach zu groß sein, also KEEP BACKUPS (und auch testen, ob sie gültig und wiederherstellbar sind)!
Hier ist ein großartiges Dokument für Sie. Dort finden Sie eine Menge praktischer Tipps.
Übrigens gibt es zwei Gruppen von Personen:
Herzlichen Glückwunsch, Sie sind gerade in Gruppe 2 aufgestiegen ;-)
Wenn Sie die Datei versehentlich aus Linux gelöscht haben, können Sie diesen Befehl verwenden:
find /root -name "search text" -type f -exec mv {} "/home" \;
anstelle von search text
können Sie einen Dateinamen und ein Verzeichnis angeben, in dem Sie anstelle von /home
wiederherstellen möchten.
Sie können dieses Skript ausprobieren. Funktioniert gut und ist dafür gedacht, anstelle von rm und im verwendet zu werden, die es jetzt ausgiebig benutzen. https://github. com/nateshmbhat/safe-rm
rm
auftretenIch hatte letzte Woche das gleiche Problem und habe eine Menge Programme ausprobiert, wie z.B. debugfs, photorec, ext3grep und extundelete. ext3grep war das beste Programm, um Dateien wiederherzustellen. Die sintax ist sehr einfach:
ext3grep image.img --restore-all
oder:
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’
Dieses Video zeigt ist ein Mini-Tutorial, das Ihnen helfen kann.