Zufällig habe ich verwendet rm
auf eine Datei wollte ich nicht löschen. Gibt es eine Möglichkeit, wie ich es unter Linux zurückbekomme?
Zufällig habe ich verwendet rm
auf eine Datei wollte ich nicht löschen. Gibt es eine Möglichkeit, wie ich es unter Linux zurückbekomme?
Antworten:
Im Folgenden sind allgemeine Schritte zum Wiederherstellen von Textdateien aufgeführt.
Verwenden Sie zuerst den Befehl wall, um dem Benutzer mitzuteilen, dass das System in einem Einzelbenutzermodus heruntergefahren wird:
# wall
System is going down to .... please save your work.
Drücken Sie STRG + D, um eine Nachricht zu senden.
Verwenden Sie anschließend den Befehl init 1, um das System in einen Einzelbenutzermodus zu versetzen:
# init 1
Verwenden von grep (traditionelle UNIX-Methode) zum Wiederherstellen von Dateien
Verwenden Sie die folgende grep-Syntax:
grep -b 'search-text' /dev/partition > file.txt
ODER
grep -a -B[size before] -A[size after] 'text' /dev/[your_partition] > file.txt
Woher,
-i : Ignore case distinctions in both the PATTERN and the input files i.e. match both uppercase and lowercase character.
-a : Process a binary file as if it were text
-B Print number lines/size of leading context before matching lines.
-A: Print number lines/size of trailing context after matching lines.
Um eine Textdatei wiederherzustellen, die mit dem Wort "nixCraft" auf / dev / sda1 beginnt, können Sie folgenden Befehl ausführen:
# grep -i -a -B10 -A100 'nixCraft' /dev/sda1 > file.txt
Als nächstes benutze vi, um file.txt zu sehen.
Diese Methode ist NUR nützlich, wenn es sich bei der gelöschten Datei um eine Textdatei handelt. Wenn Sie das ext2-Dateisystem verwenden, probieren Sie den Befehl recover aus.
Gefunden am http://www.cyberciti.biz/tips/linuxunix-recover-deleted-files.html
init 1
, töte manuell alle System-Daemons außer sshd
. Ich denke auch, an diesem Punkt sollten Sie alle Dateisysteme RO wieder einbinden und auf tmpfs speichern (vorausgesetzt, Ihre temporären Dateien passen in RAM), um zu vermeiden, dass die Dateien mit den temporären Daten überschrieben werden. Sie müssen es natürlich später an eine andere Stelle kopieren, entweder auf einen Remote-Server oder zurück in ein lokales Dateisystem, nachdem Sie RW erneut gemountet haben.
dd
und versuchen Sie, die Datei darin zu finden (mit grep
oder einen Editor). Bearbeiten: manchmal ddrescue
funktioniert besser als dd
.
Testdisk hat eine Undelete-Option, die mit Linux funktionieren sollte.
Es gibt eine Komplettlösung für Linux . Beachten Sie, dass es für funktioniert ext2 , ext3 , und ext4 .
Wenn es der Standard ist rm Ich hoffe du hast ein Backup. Das Verfahren zum Wiederherstellen einer gelöschten Datei ist für jedes Dateisystem unterschiedlich, sofern dies überhaupt möglich ist. Linux hat keinen eingebauten "Papierkorb"; Sobald Sie eine Datei löschen, ist sie so gut wie verschwunden.
Wie auch immer Sie es tun, Sie möchten den Computer vom Stromnetz trennen - sobald es möglich ist, da das Fortfahren des Computers (auch das Herunterfahren) Schreibvorgänge auf den Datenträger verursacht und die Wahrscheinlichkeit erhöht, dass einige Blöcke zuvor vom Computer belegt wurden Datei wird überschrieben. Sobald Sie dies getan haben, stecken Sie es entweder in einen anderen Computer, und starten Sie a neu Live-CD (Stellen Sie sicher, dass Sie das Laufwerk nur aktivieren, wenn Sie es schreibgeschützt aktivieren), oder entfernen Sie das Festplattenlaufwerk und bringen Sie es zu einem Datenrettungsspezialisten.
Die einzig richtige Antwort lautet: Stellen Sie Ihre Datei von einem Backup wieder her. Jeder muss ein Backup haben. Für wirklich wichtige Dateien sollten Sie zwei Backups haben. Sie nicht? Nun, schade, hier ist eine Lektion gelernt (Entschuldigung, das hört sich hart an, aber ich bin in der Datenspeicherung und die Leute sichern nicht, bis sie einige wichtige Daten verloren haben, das ist eine gegebene Tatsache. Also ja, du siehst dumm aus, aber so ist fast jeder andere).
OK, Sie haben keine Sicherung. du musst halt Verwenden des Dateisystems, in dem sich die Datei befindet JETZT SOFORT . Jede Schreibaktivität kann definitiv die Dateidaten zerstören kann (nur kann ) bleiben auf der Festplatte.
Wenn Sie den tragischen Fehler gemacht haben, nur eine Partition als Root-Dateisystem und / home zu verwenden, bedeutet dies, dass Sie Muss Booten Sie von einem anderen Gerät. JETZT .
Wenn Ihre Datei ein gängiges Format hat (Word-Datei, JPG usw.), verwenden Sie Photorec . Photorec kann die gängigsten Dateiformate abrufen.
Sie können die zuvor vorgeschlagene Methode "ext3 undelete" ausprobieren, aber Sie müssen mit der Befehlszeile vertraut sein, grundlegende Linux-Funktionen kennen usw.
Wenn Ihre Datei ein spezielles Format hat, haben Sie Pech. Ich habe einmal ein Perl-Programm geschrieben, um ein Laufwerk nach bestimmten Dateien zu durchsuchen, und es hat ziemlich gut funktioniert. Aber Sie müssen einige Programmierkenntnisse haben, um dies zu tun, und Sie müssen auch mit Linux vertraut sein.
Ich habe das vor ein paar Jahren gemacht. Mein Ansatz war es direkt, keine Zeit zu verlieren, Partition abzumelden und dann
dd if=/dev/hda1 of=backup_image.ext3
um eine Sicherungsdatei mit dem genauen Status der Partition zu haben. Anschließend können Sie die Partition erneut bereitstellen und wie gewohnt nach der gelöschten Datei in Ihrem erstellten Image suchen. Das Bild wird wahrscheinlich SEHR groß sein, da Sie den gesamten "leeren" Speicherplatz benötigen, sodass das Speichern möglicherweise ein praktisches Problem darstellt.
Dann war es nur eine langweilige Suche nach Textausschnitten, von denen ich erwartet hatte, dass sie irgendwo in der Suppe der Partitionsinhalte stecken. Z.B. um tex-dateien zu finden, lief ich
grep --binary-files=text -1000 "subsection" < backup_image.ext3 > latexfiles
Dabei wurde ein großer Kontext um den Ausdruck "Unterabschnitt" gedruckt und die Ausgabe in einer Datei gespeichert, die manuell durchsucht werden kann. Ich habe einen so großen Kontext gedruckt, da die Suche nach dem Bild so lange gedauert hat, dass ich es lieber nicht öfter als nötig machen würde.
Auch der Befehl strings
war hilfreich beim Entfernen von binärem Müll aus der Ausgabe, aber wenn ich mich richtig erinnere, wurden auch alle Zeilenumbrüche entfernt, was ein Problem sein könnte.
Um Binärdateien auf die gleiche Weise zu finden, ist es vielleicht erfolgreich, einen charakteristischen Header oder etwas von einer bestimmten Datei zu finden, aber ich stelle es mir als ein ziemlich großes Abenteuer vor.
Kurze technische Hinweise: Es gibt technische Probleme mit der Festplattenwiederherstellung und Ext3 / 4. Es ist eine lange Sache zu erklären, aber kurz (und unzulänglich): Ext3 / 4 entfernt die "Marker", die dem Betriebssystem mitteilen, wo sich Dateien auf der Festplatte befinden, wenn Sie sie löschen. Die Dateien werden nicht gesäubert, aber niemand weiß mehr, wo sie auf der Festplatte beginnen und enden, und manchmal sind sie sogar an mehreren Stellen fragmentiert. Einige andere Dateisysteme setzen lediglich den Status der Dateien auf "gelöscht", behalten jedoch die Standortdaten bei. Dann ist das Wiederherstellen nicht schwieriger, als Dateizeiger mit diesem Flag zu betrachten (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? Meiner Meinung nach rhetorisch. Häufiges Backup ist die Antwort auf all diese Probleme. Wichtige Daten ohne automatisiert Backup-System ist ein Unfall, der darauf wartet, passieren zu können, IMHO.
Obligatorische persönliche Anekdote: Ich wollte entfernen foo\ foo*
von ~
. Ich hab geschrieben
rm -r foo<Tab>*
, die leider seit foo
anscheinend war ein symlink und die einzige datei die dazu passte, die shell in gemacht
rm -r foo\ foo *
Ich drückte die Eingabetaste und schaute auf den Befehl, der höchstens eine Sekunde hätte dauern sollen. Nach etwas längerer Zeit rm
fragte mich, ob ich "die schreibgeschützte Datei" etwas "entfernen wolle. Ziemlich schnell spürte ich die Schüttelfrost und drückte sanft und sehr kontrolliert Ctrl+c
. ~ Die Hälfte von mir ~
wurde gelöscht, aber ich habe es geschafft, durch das oben beschriebene Greifen und einige mehr oder weniger aktuelle Backups alles wieder von Wert zu bekommen. Ich hatte einige persönlich sehr wertvolle (gelesen: zeitaufwendige) und sehr aktuelle Messdaten auf der Festplatte, die verloren gingen, aber ich hatte vierfache Backups erstellt. Einer verschwand hier, ein anderer wegen eines Systemausfalls in der Schule, ein anderer war korrupt, und der vierte konnte ich zunächst nicht finden, da ich ihn versehentlich in den falschen Ordner gelegt hatte :-D. Hatte nicht rm -r
steckte auf einer schreibgeschützten Datei, der vierte wäre gegessen worden, da dieser Ordner über sshfs in meinem eingehängt wurde ~
. Ich bin da viel vorsichtiger mit solchen Sachen.
Setze deine Erwartungen niedrig. Wenn etwas über die 'gelöschten' Daten geschrieben wurde, werden Sie es verlieren.
Ich habe eine kleine Menge an Wiederherstellungen durchgeführt und die besten Tools, die ich gefunden habe, wurden häufig für bestimmte Formate entwickelt. Zum Beispiel war 'photorec' großartig, als ich Zehntausende von JPEGs retten wollte.
Recuva hat mir auch schon mal geholfen und könnte deine beste wahl sein. (Es ist kostenlos, lassen Sie sich nicht dazu verleiten, durch ihre Anzeigen zu bezahlen.)
Wenn das, was Sie verloren haben, am Ende des Tages wichtig ist, schalten Sie das Laufwerk aus und hören Sie auf, darauf zu schreiben. Verwenden Sie jede Wiederherstellungssoftware, die Sie finden, bis Sie Ihre Daten zurückbekommen oder sie sich nicht mehr lohnen. Wenn es wirklich wichtig ist, senden Sie es zu einem hohen Preis an Profis.
Wenn Sie schon einmal Glück mit einem Werkzeug hatten, versuchen Sie es noch einmal, da Sie damit vertraut sind. Am Ende des Tages sollten sie nicht auf die Festplatte schreiben, und so können Sie Software verwenden, bis Sie eine finden, die funktioniert.
Hier ist ein tolles dokumentieren für dich. Dort finden Sie viele praktische Tipps.
Übrigens gibt es zwei Gruppen von Menschen:
Herzlichen Glückwunsch, Sie haben sich gerade in Gruppe 2 befördert. ;-)
Wenn Sie eine Anwendung geöffnet haben, die gerade die Datei liest, z. B. VLC oder LibreOffice, dann Diese großartige L & amp; U.SO-Antwort half mir aus diesem Chaos heraus. Hier ist eine alternative Methode dafür, dasselbe zu tun.
Die allgemeine Idee ist, den Link in zu finden /proc/PID/fd/DESCRIPTOR_NUMBER
und kopieren Sie es zurück an seinen ursprünglichen Speicherort. Benutzen ps aux | grep APP_NAME
um die PID zu finden und dann ls -la /proc/PID/fd/
um die richtige DESCRIPTOR_NUMBER zu finden.
Die "richtige" Antwort ist, anzunehmen, 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. Abhängig vom Dateisystem und der Aktualität des Löschvorgangs gibt es auch andere Möglichkeiten, Daten vom physischen Laufwerk zu retten HALTEN SIE DIE RÜCKEN (und testen Sie auch, ob sie gültig und wiederherstellbar sind)!
Wenn es nicht von anderen Benutzern überschrieben wird, haben Sie Glück. Ich habe versehentlich meine cpp-Quelldatei gelöscht und ein Tool namens verwendet zuallererst , was mir geholfen hat, 60G cpp-Trümmer von der Festplatte wiederherzustellen. Schließlich stellte ich meine Akte wieder her, indem ich diese Trümmer Stück für Stück zusammensetzte. Ich denke, es scannt bestimmte Muster für bestimmte Dateitypen und durchläuft alle Inodes auf der Festplatte, um Dateien wiederherzustellen! Probieren Sie es einfach aus!
Wenn Sie die Datei versehentlich von Linux gelöscht haben, können Sie diesen Befehl verwenden:
find /root -name "search text" -type f -exec mv {} "/home" \;
anstelle von search text
Sie können den Dateinamen und das Verzeichnis angeben, in dem Sie wiederherstellen möchten, anstatt /home
.
Sie können dieses Skript ausprobieren. Funktioniert gut und soll anstelle von rm verwendet werden und ich benutze es jetzt ausgiebig.
https://github.com/nateshmbhat/safe-rm
rm
Ich hatte letzte Woche das gleiche Problem und habe viele Programme ausprobiert, wie 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 shows ist ein Mini-Tutorial, das Ihnen helfen kann.
rm
ist ein "gefährlicher" UNIX / Linux Befehl (read$ man rm
). Verwenden Sie es mit äußerster Vorsicht . Trotzdem ist es eine schnelle Möglichkeit, Dateien zu löschen, bei denen Sie sich sicher sind. Moderne Linux- und Unix-Desktop-Umgebungen bieten eine Lösung von "Mülleimer" , so dass der Benutzer versehentlich gelöschte Dateien leicht wiederherstellen kann.